Skip to content
Blog

What's New in Flutter 3.47: Standalone UI Packages and Impeller on Desktop

Flutter 3.47 decouples Material and Cupertino into standalone packages, brings Impeller to desktop by default, and graduates Widget Previews to stable.

Published on September 16, 2026

AI Assistant

Flutter 3.47 is here, and it marks a major architectural shift for the framework. The headline feature: Material and Cupertino design libraries are now available as standalone packages on pub.dev, decoupled from the core SDK. Alongside this, Impeller becomes the default renderer on desktop, and Widget Previews graduate to stable.

Standalone Material and Cupertino Packages

The most significant change in Flutter 3.47 is the decoupling of design systems from the core SDK. The material_ui and cupertino_ui packages have reached version 1.0 on pub.dev.

This decoupling means:

  • Independent release cycles: Material and Cupertino can ship bug fixes and new components on weekly schedules, independent of quarterly Flutter SDK releases.
  • Faster contributions: Community PRs land faster without waiting for a full SDK release.
  • Style-neutral core: Lays groundwork for custom design systems built on a neutral Flutter core.

Migration

Run the automated migration tool:

dart fix --apply --code=migrate_design_widgets

This updates imports from package:flutter/material.dart to the new standalone packages. For ecosystems still depending on legacy imports, a MaterialUiCompatibilityBridge wrapper smooths the transition.

Decoupled Localizations

Localization delegates now live inside the standalone packages. Instead of importing flutter_localizations, use:

import 'package:material_ui/material_ui.dart';

// Simplified setup
localizationsDelegates: GlobalMaterialLocalizations.delegates,

The original design libraries inside the core SDK are scheduled for formal deprecation in the Fall 2026 stable release.

Impeller on Desktop by Default

Flutter 3.47 makes Impeller the default renderer for macOS, Windows, and Linux. Impeller compiles shaders at build time rather than dynamically at runtime, eliminating shader compilation jank and delivering smooth animations from the very first frame.

Key benefits:

  • Metal on macOS, Vulkan on Windows/Linux: Targets modern hardware APIs for optimal performance.
  • No more stutter: Consistent frame rates without the brief hitch on first animation.
  • Wide Gamut Color on macOS: Rich, vibrant color rendering is now active by default.

If you need to temporarily opt out, platform-specific flags are available in Info.plist (macOS), main.cpp (Windows), or my_application.cc (Linux). However, fallback options will be removed in a future release.

Widget Previews Now Stable

Flutter Widget Preview graduates to stable, letting you instantly render and iterate on individual UI components without building your full application.

Stable improvements include:

  • Faster startup: Local project caching in .widget_preview/ eliminates repeated setup overhead.
  • Theme layering: Abstract PreviewThemeData API for sequential theme testing.
  • Web asset sync: Automatic synchronization of web assets when previewing web widgets.

Apple Platform Updates

Flutter 3.47 prepares for Xcode 27, iOS 27, and macOS 27:

  • UIScene lifecycle mandate: iOS 27 requires UIScene for all UIKit apps. The Flutter CLI handles this automatically for most projects.
  • Minimum version bumps: iOS minimum raised to 15, macOS minimum to 12.
  • Intel Mac phase-out: Winding down support for Intel-based Macs; ARM64-only builds available via flutter config --enable-macos-arm64-only.
  • Swift Package Manager: 92 of the top 100 iOS plugins now migrated.

Desktop Multi-Window Progress

In partnership with Canonical, experimental windowing APIs expand:

  • Popup windows: Now supported on Linux and Windows for native context menus.
  • Window handle access: Direct pointer to native windows (HWND, NSWindow, GtkWindow).
  • Desktop flavors: Windows and Linux now support Flutter flavors for different build configurations.
  • SDF text rendering: Signed Distance Function rendering delivers sharper text on desktop screens.

WebAssembly Path

Flutter is actively working toward Wasm by default. You can opt in today:

flutter build web --release --wasm

Experimental deferred loading for Wasm is also available under a flag, enabling lazy-loaded modules for faster initial load times.

Upgrading

flutter upgrade

Check the Breaking Changes Page for migration details on the standalone UI package changes.

Sources: