What's New in Flutter 3.27
Impeller goes default on Android, Cupertino gets a glow-up, Row/Column spacing lands, and a lot more.
Flutter 3.27 is out and it’s a meaty one. Over 1,400 commits from 187 contributors (49 of them first-timers) landed in this release. Here’s a breakdown of everything worth knowing.
Impeller is Now Default on Android
The biggest headline. Impeller — Flutter’s custom rendering engine — is now the default renderer on modern Android devices with Vulkan support. It’s been in preview since Flutter 3.16 (November 2023), and the team has spent the time since then hammering on performance and fidelity based on real-world feedback.
Older Android devices without Vulkan support will continue to use Skia as before. If you need to opt out for any reason, add this to your AndroidManifest.xml:
<meta-data
android:name="io.flutter.embedding.android.EnableImpeller"
android:value="false" />
Or pass --no-enable-impeller on the command line. But in most cases, just let it run — the results are noticeably smoother.
iOS Gets 120Hz More Consistently
Contributor @knopp added a new Metal rendering surface implementation that lets raster workloads begin right after the UI workload finishes, instead of waiting on compositor backpressure. The practical result: Flutter now consistently hits 120Hz on high frame-rate iOS devices like the Pro models. Benchmarks show a significant reduction in average frame rasterization time across the board.
Cupertino Widgets Catch Up to Material
A lot of polish landed for iOS-style widgets:
- CupertinoCheckbox and CupertinoRadio — updated sizes, colors, stroke widths, and press behaviors. Now at feature parity with their Material counterparts.
- CupertinoSwitch — new
thumbImageandfillColorproperties. - CupertinoButton — new
sizeStyleproperty using theCupertinoButtonSizeenum for iOS 15+ button styles. NewCupertinoButton.tintedconstructor for translucent backgrounds. Also getsonLongPresssupport. - CupertinoNavigationBar — background is now transparent until content scrolls under it, matching native iOS behavior.
- CupertinoDatePicker and CupertinoPicker — now scroll to tapped items.
- CupertinoAlertDialog — supports the tap-slide gesture.
- CupertinoActionSheet — haptic feedback when sliding over buttons.
Row and Column Spacing
Finally. You can now pass a spacing parameter to Row and Column to automatically space children:
Row(
spacing: 12,
children: [
Icon(Icons.star),
Text('Flutter 3.27'),
],
)
No more wrapping every child in SizedBox or Padding just to add gaps.
CarouselView Gets Weighted Layouts
CarouselView.weighted is new, letting you define flexible multi-item layouts using flexWeights:
CarouselView.weighted(
flexWeights: [3, 2, 1], // multi-browse layout
children: [...],
)
Use [7, 1] for a hero layout, [1, 7, 1] for centered-hero. Very useful for onboarding screens and featured content carousels.
Wide Gamut Colors
Flutter now supports the DisplayP3 color space, letting you define UI colors that take full advantage of the wider gamut on modern iOS displays. Note: some Color methods have been deprecated as part of this change — check the breaking changes page if you’re doing low-level color work.
Android Edge-to-Edge by Default
On Android 15+, apps now run in full edge-to-edge mode by default. Flutter’s SafeArea and MediaQuery have been updated to handle hardware cutouts correctly, including in freeform windowing mode.
Swift Package Manager on Stable
Flutter’s migration to Swift Package Manager is now available on the stable and beta channels (previously main only). It’s still opt-in while the team smooths out the edges, but plugin authors are encouraged to add SPM support now. Major packages like Firebase have already migrated.
DevTools Updates
- Deep link validation now works for both Android and iOS in the Deep Links tool.
- Network data export as
.harfiles. - New Flutter Inspector (experimental) — condensed widget tree, implementation widget toggle, and an inline layout viewer. Enable it in DevTools settings.
- Memory tool data is now preserved even after an app disconnects or crashes — a huge quality-of-life improvement when debugging OOM issues.
Other Highlights
SegmentedButtongets adirectionproperty for vertical layouts.SelectionAreasupportsShift + Clickon desktop to extend selections.ModalRoutetransitions are now more flexible when mixing different route transitions.- Kotlin build script (
build.gradle.kts) is now supported. Note: the legacy Groovy apply script method is deprecated in 3.27 and will be removed in the next release. - Pub Workspaces launched with Dart 3.6 for monorepo support.
- Download counts (30-day) replace popularity scores on pub.dev.
Upgrading
flutter upgrade
That’s all it takes. Check the official Flutter 3.27 release notes for the full changelog and migration guides for any breaking changes.
Content summarised from the official Flutter 3.27 release post.