HOME

Flutter 2024 연간 계획

Core framwork & Engine

iOS에서 Skia를 제거하고 완전히 Impeller로 migration하는 것
Android에서 Vulkan과 OpenGLES를 지원할 예정이며, 가까운 시일내에 Skia를 대신 사용할 수 있는 opt-out도 제공할 예정입니다.
프로덕션 환경에서 회귀현상을 줄이기 위해 Impeller 테스트 인프라를 개선하려고 함.
(Impeller 테스팅 인프라란 Impeller 프로젝트의 소프트웨어 개발 과정에서 품질 보증 및 안정성 검증을 위해 사용되는 테스트 시스템과 프로세스를 말합니다)
회귀현상 (Regression) 회귀현상(Regression)이란 소프트웨어 개발에서 새로운 코드를 추가하거나 기존 코드를 수정했을 때, 이전에 잘 작동하던 기능이 제대로 작동하지 않게 되는 현상을 말합니다. 즉, 소프트웨어의 질이 개선되어야 할 부분에서 오히려 떨어지는 경우를 지칭합니다. 이러한 회귀현상은 소프트웨어의 안정성과 사용자 경험을 저해할 수 있기 때문에, 개발 과정에서 주의 깊게 관리해야 합니다. 회귀 테스팅(Regression Testing)은 이러한 회귀현상을 발견하고 수정하기 위해 특별히 설계된 테스트 절차로, 코드 변경 후에도 소프트웨어가 예상대로 작동하는지 확인하는 데 중요한 역할을 합니다.
Material3를 완벽하게 지원하기 위한 노력을 완료할 예정입니다. 앱바와 탭바 등과 같은, 애플 디바이스의 디자인 기대치를 충족하는 데 필요한 적용을 더 잘 지원하기 위해 핵심 프레임워크를 일반화 할 수 있는 옵션도 검토하고 있습니다.
blankcanvas에 대한 작업도 계속 될 것으로 예상 됩니다.

Mobile platforms

2023년에 multiple Flutter view를 지원하기 초기적인 작업을 시작했으며, 2024년에는 이 지원을 Android와 iOS로 확대할 계획입니다. 또한 플랫폼 뷰의 성능과 test coverage/testablity을 개선하기 위해 노력하고 있습니다.
Privacy Manifest 와 Swift Package Manager(SPM)과 같은 최신 Apple 표준을 활성화/지원하여 iOS 서비스를 지속적으로 현대화 할 예정입니다.
와.. 드디어 CocoaPod이 없어지나요!!
Privacy Manifest에 대해 들어보지 못했는데 공부해야겠습니다.
List of APIs that require declared reasons now available - Latest News - Apple Developer
Apple is committed to protecting user privacy on our platforms. We know that there are a small set of APIs that can be misused to collect data about users’ devices through fingerprinting, which is prohibited by our Developer Program License Agreement. To prevent the misuse of these APIs, we announced at WWDC23 that developers will need to declare the reasons for using these APIs in their app’s privacy manifest. This will help ensure that apps only use these APIs for their intended purpose. As part of this process, you’ll need to select one or more approved reasons that accurately reflect how your app uses the API, and your app can only use the API for the reasons you’ve selected.Starting in fall 2023, when you upload a new app or app update to App Store Connect that uses an API (including from third-party SDKs) that requires a reason, you’ll receive a notice if you haven’t provided an approved reason in your app’s privacy manifest. And starting in spring 2024, in order to upload your new app or app update to App Store Connect, you’ll be required to include an approved reason in the app’s privacy manifest which accurately reflects how your app uses the API.If you have a use case for an API with required reasons that isn’t already covered by an approved reason and the use case directly benefits the people using your app, let us know.View list of APIs and approved reasons Submit a request for a new approved reason
애플은 사용자 개인정보 보호를 위해, 2023년 가을부터 개발자들이 앱의 개인정보 보호 매니페스트에 특정 API 사용 이유를 선언해야 한다고 발표했습니다. 이는 지문 채취를 통한 데이터 수집 남용을 방지하기 위한 조치입니다. 개발자는 앱이 API를 사용하는 방법을 정확히 반영하는 승인된 이유를 선택해야 하며, 2024년 봄부터는 새 앱이나 업데이트를 앱 스토어 커넥트에 업로드하기 위해 이러한 승인된 이유가 매니페스트에 포함되어야 합니다. 승인되지 않은 이유로 API를 사용해야 하는 경우, 애플에 알려야 합니다.
Android에서는 Android 빌드 파일에서 Kotlin을 지원하는 방법을 살펴볼 것입니다.
Interop은 Dart의 네이티브 코드와 인터페이스하는 데 중요합니다. Dart에서 직접 Objective C 코드를 호출할 수 있도록 지원하는 작업을 완료할 예정이며, Swift 코드를 직접 호출할 수 있도록 지원하는 방안도 검토할 예정입니다. Android에서도 마찬가지로 Java와 Android로 호출할 수 있는 지원 작업을 계속할 예정입니다. 또한 기본 OS/플랫폼 스레드에서만 호출될 수 있는 API 호출에 대한 더 나은 지원도 검토할 예정입니다.
Interop Interop(상호 운용성, Interoperability의 줄임말)은 서로 다른 컴퓨터 시스템, 소프트웨어 애플리케이션, 네트워크 등이 효과적으로 정보를 교환하고 사용할 수 있도록 하는 능력을 말합니다. 프로그래밍에서는 특히, 서로 다른 프로그래밍 언어로 작성된 소프트웨어 컴포넌트나 시스템이 상호 작용할 수 있게 하는 기술이나 메소드를 의미합니다.
대규모 Flutter 앱이 하이브리드 앱(Flutter 코드와 일부 Android/iOS 플랫폼 코드/UI를 모두 포함하는 앱)으로 시작하는 경우가 점점 더 많아지고 있는 추세입니다. 성능/오버헤드 및 개발자 인체공학적 측면에서 이를 더 잘 지원할 수 있는 방법을 살펴보겠습니다.

Web platform

전체 애플리케이션 크기 줄이기, 멀티 스레딩 활용 개선, 플랫폼 보기 지원, 앱 로드 시간 개선, CanvasKit을 기본 렌더러로 설정, 텍스트 입력 개선, Flutter 웹용 SEO 지원 옵션 조사 등 성능과 품질에 계속 집중할 예정입니다.
2023년엔 Non-goals에 포함되어 있던, SEO가 조사에 착수 되었다.
2023년 Non-goals
Dart를 WasmGC로 컴파일하는 작업을 완료하고, 이를 통해 Flutter 웹 앱의 Wasm 컴파일을 지원할 예정입니다. 여기에는 JS와 Wasm 컴파일을 모두 지원하는 Dart용 새로운 JS 상호 운용 메커니즘도 포함됩니다.
또한 웹에서 핫 리로드를 지원하는 작업도 재개할 계획입니다.

Desktop platforms

위에서 설명한 대로 대부분의 시간을 모바일과 웹 플랫폼에서 보낼 것으로 예상하지만, 데스크톱 플랫폼에서도 몇 가지 발전된 기능을 계획하고 있습니다:
macOS와 Windows에서 플랫폼 뷰를 지원하는 데 진전이 있기를 바라며, 이를 통해 웹뷰와 같은 기능도 지원할 수 있기를 기대합니다.
Linux에서는 GTK4 지원과 접근성에 중점을 둘 예정입니다.
모든 플랫폼에서 하나의 위젯 트리에서 여러 창 렌더링을 지원하는 것을 궁극적인 목표로 삼아 하나의 Dart 분리에서 여러 보기를 지원하는 작업을 계속할 것입니다.

Ecosystem

저희는 AI 프레임워크와 협력하여 새로운 AI 기반 Flutter 앱 시대를 지원할 계획입니다.
당사는 유지 관리하는 flutter.dev 플러그인 세트를 확장하기보다는 기존 플러그인의 품질을 높이고 핵심 기능 격차를 해소하는 데 집중할 계획입니다(예: 아이솔레이트 사용을 더 잘 지원하고 앱에 추가하는 사용 사례를 위해 업데이트된 shared_preferences API를 조사하는 것). 또한 Flutter 즐겨찾기와 같은 커뮤니티 이니셔티브도 지원할 예정입니다.
또한 Flame 커뮤니티와의 공동 노력으로 Flutter로 캐주얼 게임을 개발할 수 있도록 지원을 계속 추가할 예정입니다.
isolate의 사용방법이 어렵고, 어떨때 사용해야 할지 애매했는데, 이 부분도 기대가 되네요.

Tooling and AI

저희는 AI 솔루션과 통합하여 핵심 프로그래밍 작업에 대한 AI 지원을 제공하고자 합니다.
또한 Google의 IDX 팀과 지속적으로 협력하고 디자인 도구와의 통합을 모색할 것입니다.

Programming language

Dart 팀은 Dart에서 매크로 지원의 실행 가능성에 대한 평가를 완료하고 2024년에 매크로 지원의 첫 번째 단계를 출시하거나, 완화할 수 없는 아키텍처 문제를 발견하면 작업을 포기할 것으로 예상하고 있습니다. 매크로의 주요 사용 사례에는 직렬화/역직렬화, 데이터 클래스 및 일반적인 확장성이 포함됩니다.
장황함을 줄이기 위한 구문 변경(예: 기본 생성자 및 가져오기 구문 속기), 정적으로 확인된 분산에 대한 더 나은 지원 등 여러 가지 점진적인 언어 기능에 대해 조사할 것입니다.
마지막으로, 더 많은 곳에서 Dart 비즈니스 로직을 재사용할 수 있는 방법과 Dart의 플러그 가능성/확장성(예: 개발자 도구 및 분석기)에 대해 살펴볼 것입니다.
build_runner와 다른건가?
build_runner는 Dart 언어에서 사용되는 빌드 시스템의 일부로, 소스 코드를 자동으로 생성하고, 변환하며, 관리하는 데 사용되는 도구입니다. 예를 들어, JSON 직렬화/역직렬화 코드 생성, 웹 애플리케이션을 위한 자산 컴파일, 테스트 실행 등을 자동화하기 위해 사용됩니다. build_runner는 플러그인 형태의 빌더들을 통해 작업을 수행하며, 개발자가 직접 빌더를 작성하거나, 커뮤니티에서 제공하는 빌더를 사용할 수 있습니다.
반면, 매크로 지원은 Dart 언어 자체에 내장될 기능으로 계획되고 있으며, 컴파일 시간에 코드를 자동으로 생성하거나 변형하는 데 사용될 수 있는, 보다 근본적인 언어 수준의 기능을 의미합니다. 매크로를 통해 개발자는 코드 중복을 줄이고, 코드 작성 과정을 자동화하며, 보다 표현력 있는 프로그래밍을 할 수 있게 됩니다.

Non-goal

아직은 코드 푸시 또는 핫 업데이트에 대한 기본 지원에는 투자할 계획이 없습니다. 코드 푸시의 경우, shorebird.dev의 친구들이 관심을 가질 만한 제품을 제공할 수 있습니다. UI 푸시(서버 기반 UI라고도 함)의 경우 rfw 패키지를 권장합니다.
응 코드 푸시 안할거야~