Flutter 3.47, UI 패키지는 분리하고 데스크톱 렌더러는 Impeller로 바꿨어요

Flutter 3.47은 새 위젯을 많이 더한 릴리스보다 구조와 기본값을 손본 릴리스에 가까워요. Material·Cupertino 디자인 시스템을 독립 패키지로 꺼냈고, 데스크톱에서는 Impeller를 기본 렌더러로 바꿨어요. 기존 앱을 운영하는 팀이라면 화면보다 마이그레이션 일정과 플랫폼 지원 조건을 먼저 확인해야 해요. 1
핵심 요약
| 구분 | 바뀐 내용 | 개발팀이 확인할 부분 |
| UI 패키지 | `material_ui`와 `cupertino_ui` 1.0을 선택해 쓸 수 있어요 | 기존 SDK 내 디자인 라이브러리는 11월 Stable 릴리스에서 Deprecated될 예정이에요 |
| 데스크톱 렌더링 | macOS·Windows·Linux에서 Impeller가 기본 렌더러가 됐어요 | Skia 복귀 옵션은 임시 우회로이며 나중에 제거될 예정이에요 |
| Apple 플랫폼 | 최소 지원 버전이 iOS 15와 macOS 12로 올라가요 | Xcode 27, `UIScene`, Intel Mac 지원 범위를 함께 점검해야 해요 |
| 개발 도구 | Widget Previews가 Stable 단계에 들어갔어요 | 전체 앱을 실행하지 않고 개별 위젯을 확인할 수 있어요 |
1. Flutter SDK에서 디자인 시스템을 떼어냈어요
Flutter는 지금까지 Material과 Cupertino 위젯을 코어 SDK에 함께 넣어 배포했어요. 이 구조에서는 디자인 시스템의 수정 주기가 분기별 SDK 릴리스에 묶였어요. Flutter 3.47부터는 `material_ui`와 `cupertino_ui` 1.0을 선택해서 쓸 수 있어요. 두 패키지는 Flutter SDK를 통째로 올리지 않아도 주 단위로 수정판과 새 컴포넌트를 배포할 수 있어요. 2
기존 `package:flutter/material.dart`와 `package:flutter/cupertino.dart`는 당장 사라지지 않아요. Flutter 팀은 코어 SDK에 들어 있는 기존 라이브러리를 11월 Stable 릴리스에서 정식으로 Deprecated할 계획이에요. 패키지 생태계가 한 번에 이동하기 어렵다는 점도 고려했어요. 의존 패키지가 예전 import를 계속 쓰더라도 `MaterialUiCompatibilityBridge`를 이용하면 애플리케이션부터 먼저 옮길 수 있어요.
이전 명령도 제공돼요.
```bash dart fix --apply --code=migrate_design_widgets ```
자동 이전 과정에서 `pubspec.yaml` 수정이 제대로 되지 않는 초기 문제가 생기면 `flutter pub add material_ui`를 먼저 실행한 뒤 `dart fix --apply`를 다시 실행할 수 있어요. 자체 디자인 시스템을 운영하는 팀에는 코어 프레임워크와 Material·Cupertino의 결합이 느슨해진 점이 특히 실용적이에요. Flutter SDK 버전과 디자인 컴포넌트 업데이트 시기를 따로 관리할 여지가 생겨요.
데스크톱 렌더링 기본값도 바뀌었어요
Impeller는 macOS에서 Metal을, Windows와 Linux에서 Vulkan을 사용해요. 셰이더를 실행 중에 처음 컴파일하지 않고 빌드 단계에서 미리 준비해 첫 애니메이션의 끊김을 줄이는 방식이에요. Flutter 3.47에서는 이 엔진이 세 데스크톱 플랫폼의 기본값이 됐어요. 문제가 있으면 아직 Skia로 돌아갈 수 있지만, Flutter 팀은 이 복귀 방법도 나중에 없앨 계획이에요. 2
렌더러 변경은 업그레이드 뒤 화면이 뜨는지만 확인하고 끝낼 일이 아니에요. 커스텀 셰이더, 텍스트, 벡터 그래픽, 넓은 색 영역을 쓰는 앱은 실제 대상 기기에서 다시 확인하는 편이 안전해요. macOS에서는 Wide Gamut Color도 기본으로 켜져 색 표현이 달라질 수 있어요.
Apple 플랫폼의 지원 기준이 올라가요
최소 지원 버전은 iOS 15와 macOS 12로 올라가요. Xcode 27과 iOS 27 SDK에서는 UIKit 앱에 `UIScene` 수명 주기가 필요해요. Flutter CLI가 일반적인 프로젝트를 자동으로 옮겨 주지만, 커스텀 앱 진입 코드나 예전 수명 주기에 기대는 플러그인은 손으로 고쳐야 할 수 있어요. Intel Mac 자동 테스트도 중단됐고, Intel 호스트와 이중 아키텍처 빌드에 대한 경고는 앞으로 오류로 바뀔 예정이에요. 1
Apple 의존성 관리도 Swift Package Manager 쪽으로 이동하고 있어요. Flutter 공식 글에 따르면 상위 100개 iOS 플러그인 가운데 92개가 Swift Package Manager 전환을 마쳤어요. CocoaPods를 계속 쓰는 프로젝트라면 핵심 플러그인의 SwiftPM 지원 여부를 미리 확인하는 편이 좋아요. 2
Widget Previews와 데스크톱 기능도 다듬었어요
Widget Previews는 Stable 단계에 들어갔어요. 앱 전체를 빌드하거나 실행하지 않고 개별 UI 컴포넌트를 렌더링해 여러 테마 조합을 확인할 수 있어요. Windows와 Linux에는 실험적 다중 창 API, 콘텐츠 크기에 맞춘 창 조절, flavor 지원도 추가됐어요. Flutter Web의 Wasm 기본화는 아직 준비 단계라 선택해서 적용해야 해요.
왜 중요한가요
이번 릴리스에서 가장 큰 변화는 Flutter SDK 하나에 묶여 있던 업데이트 주기가 나뉘기 시작했다는 점이에요. UI 패키지를 독립적으로 올릴 수 있으면 디자인 컴포넌트 수정 때문에 전체 SDK와 도구 체인을 동시에 바꾸는 부담을 줄일 수 있어요. 반대로 앱과 플러그인이 서로 다른 import 체계를 쓰는 전환기에는 호환성 점검이 더 필요해요. 2
기존 프로젝트는 세 가지부터 확인하면 돼요. 먼저 Material·Cupertino 독립 패키지 이전 시점을 정해요. 다음으로 Impeller에서 그래픽과 텍스트가 같은 모습으로 나오는지 실제 데스크톱 기기에서 확인해요. 마지막으로 iOS 15·macOS 12 최소 버전, `UIScene`, Swift Package Manager 지원 범위가 배포 대상과 맞는지 살펴봐요. 11월 Deprecated 일정이 예고돼 있어 미루기보다 플러그인 호환성을 포함한 이전 작업량부터 계산하는 편이 좋아요. 1
참고 자료
- Flutter 3.47 - Material/Cupertino UI 분리와 데스크톱 Impeller 기본화 — GeekNews
- What’s new in Flutter 3.47 — Flutter Blog
'IT & AI' 카테고리의 다른 글
| AI 텍스트 워터마크는 단어 선택 확률에 숨어요 (0) | 2026.08.15 |
|---|---|
| uBlock Origin 전체 기능을 지키는 Firefox, 브라우저 선택이 달라져요 (0) | 2026.08.15 |
| AI 코딩 모델 11개를 같은 조건으로 돌려보니 비용과 결과가 달랐어요 (0) | 2026.08.15 |
| 이어폰을 빼자 돌아온 생각, 침묵을 잃은 디지털 일상 (0) | 2026.08.15 |
| AI 시대의 개발 흐름, 기능은 넓게 만들고 PR은 좁게 나눠요 (0) | 2026.08.15 |