Flutter 3.27: Enhanced Performance, Improved Development Experience & More!

What’s new in Flutter 3.27?

Flutter 3.27, the latest release from Google, brings many exciting features and performance improvements to the Flutter framework. Whether you’re a seasoned Flutter app developer or just starting, this release offers a range of tools and enhancements to streamline your development workflow and elevate your app’s user experience.

What’s New in Flutter 3.27?

Framework

Cupertino Updates

•  CupertinoCheckbox and CupertinoRadio: Enhanced with updates to sizes, colors, stroke widths, and behaviors when pressed.

•  CupertinoSlidingSegmentedControl: Improved thumb radius, separator height, padding, shadows, and thumb scale alignment. Now, it supports disabling individual segments and proportional layout based on segment content.

•  CupertinoNavigationBar and CupertinoSliverNavigationBar: Backgrounds are now transparent until content is scrolled under them.

•  CupertinoButton: New CupertinoButtonSize enum for iOS 15+ button styles, CupertinoButton.tinted constructor for translucent backgrounds, new onLongPress handler, and support for keyboard shortcuts.

CupertinoButton

•  CupertinoPicker and CupertinoDatePicker: Now scroll to tapped items.

•  CupertinoAlertDialog: Supports the tap-slide gesture.

Normalizing Material Theming

•  CardTheme, DialogTheme, and TabBarTheme: Refactored to conform to Flutter’s conventions for component themes with new CardThemeData, DialogThemeData, and TabBarThemeData.

More Features for CarouselView

•  CarouselView.weighted: Enables dynamic layouts within carousels using the flexWeights parameter for various item layouts.

Small Feature Enhancements and Bug Fixes

•  SegmentedButton: New direction property for vertical alignment.

•  ButtonStyleButton Classes: More icon-related properties added to the styleFrom method for customization.

•  AppBar: Scroll-under behavior now persists when the navigation drawer opens.

•  MenuAnchor: Improved focus and resolved several DropdownMenu issues.

Mixing Route Transitions

•  ModalRoutes: More flexible with different page transitions, allowing exit transition builders for synchronized enter and exit transitions.

Text Selection Improvements

•  SelectionArea: 

Supports Shift + Click gesture on Linux, macOS, and Windows.

•  RenderParagraph:

 Improved text selection behavior after resizing the window and when clicking or tapping outside the text.

Row and Column Spacing

•  Rows and Columns: New spacing parameter to offset children, reducing code complexity.

Row and Column Spacing

Engine

Impeller on Android

•  Impeller: Now the default rendering engine on modern Android devices. Users can opt-out and return to Skia renderer if needed.

Improvements on iOS Devices

Improvements on iOS Devices

•  Metal Rendering Surface: 

New implementation for more consistent raster workloads and stable frame times.

Framework Wide Gamut Colors

•  DisplayP3 Color Space: Support for defining UIs with colors in the DisplayP3 color space on iOS devices.

Web Improvements

•  WebAssembly Compatibility: All Flutter team plugins and packages are now compatible with WebAssembly.

•  Accessibility Fixes: Improvements for headings, dialogs, passwords, iOS keyboard, links, and scrollables.

•  Drag Scrolling: Improved in multi-view mode.

•  Platform Views: Optimized to reduce canvas overlays.

•  Image Decoding: Now uses <img> element in Safari and Firefox for static images.

iOS

Swift Package Manager

•  Swift Packages: Flutter plugins can now leverage Swift packages, reducing the need for Ruby and CocoaPods.

Android

Edge to Edge

•  Edge-to-Edge Mode: Enabled by default on Android 15+ devices, running apps in full screen.

Support for Freeform

•  Android Freeform: Allows users to resize app windows, available as a developer option.

Kotlin Build Script Support

•  Kotlin Build Files: Support for build.gradle.kts files and declarative plugin migration for better type safety and maintainability.

Ecosystem

Flutter and Dart Package Ecosystem Summit USA 2024

•  Sessions: Topics included Swift Package Manager support, native interop, and sustainable package maintenance models.

Package Download Counts on pub.dev

Package Download Counts on pub.dev

•  Download Metrics: New 30-day download count and interactive sparkline chart for package usage trends.

Pub Workspaces

•  Monorepo Support: Launching with Dart 3.6 to support multiple related packages in one repository.

Automated Publishing from GitHub

•  GitHub Actions: Extended to allow automated publishing of Flutter packages to pub.dev.

Interactive Media Ads Plugin

•  IMA Plugin: Integrates multimedia ads into iOS and Android apps with features like linear instream video ad requests and skippable ads.

In-App Purchase Plugin Updates

•  StoreKit 2 Support: Added to the in_app_purchase_storekit package for better subscription management.

DevTools and IDEs

Flutter DevTools Updates

Flutter DevTools updates

•  iOS Deep Link Validation: Added support for validating deep links for Android and iOS.

•  Offline Data Workflow: Support for exporting network data as .har files and loading memory snapshots for offline viewing.

•  New Flutter Inspector: Improved usability with a condensed widget tree, inline layout viewer, and flex layout explorer.

Previews and Experimental Features

•  WebAssembly DevTools: Enable for better performance than the default JS-compiled version.

Previews and experimental features

Breaking Changes and Deprecations

•  Material Design 3 Tokens: 

Updated to v6.1 for more visually appealing color roles in Light mode.

•  Objective-C iOS Projects: 

Deprecated, with future removal of the –ios-language objc flag.

•  Deep Link Default Flag: 

Changed to true, making deep linking opt-in by default.

Deprecated TextField.canRequestFocus:

TextField.canRequestFocus is deprecated. The same functionality can be achieved by setting the canRequestFocus parameter of the TextField’s FocusNode.

•  Older SDK Support: 

Deprecating support for Dart SDK versions older than 3.0 (released in May 2023), with removal in Dart 3.7.

Closing

For all breaking changes in this release, see the full list of migration guidance on the breaking changes page. Check out the detailed release notes here.

Need help upgrading your Flutter app? Connect with our dedicated Flutter developers team, or simply contact us.

About Author

Ankit Rupapara

Ankit Rupapara is an agile project manager and self-taught iOS Developer. As Team Lead at iCoderz, he has led a team of 18 and delivered multiple projects. Ankit also serves as Product Lead for Deonde, managing tech strategy and UI/UX for on-demand solutions. He excels in decision-making, time management, and stakeholder relationships.

Related Posts