Flutter 3.38 Released — See What’s New from the November 13 FlutterFlightPlans Live Event
# Flutter 3.38 Release — November 13 FlutterFlightPlans Livestream
On **November 13**, during the FlutterFlightPlans livestream, **Flutter 3.38** was released as scheduled.
This update introduces **dot shorthands, enhanced web support, performance improvements, bug fixes, and widget previews**.

---
## 1. Language & Syntax Improvements
### Dot Shorthands
Starting with **Dart 3.10** + **Flutter 3.38**, **dot shorthands** are enabled by default.
This allows omitting type prefixes for constants — resulting in cleaner code:
// With shorthands
Column(
mainAxisAlignment: .start,
crossAxisAlignment: .center,
children: [ / ... / ],
),
// Without shorthands
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [ / … / ],
)
Example with `EdgeInsets`:
Padding(
padding: .all(8.0),
child: Text('Hello world'),
)
> 📖 [Flutter merges ‘dot-shorthands’ syntax sugar](https://juejin.cn/post/7500234308432445451)
---
## 2. Web Enhancements
### Web Configuration File
`flutter run` now supports a `web_dev_config.yaml` configuration file in your project root:
server:
host: "0.0.0.0"
port: 8080
https:
cert-path: "/path/to/cert.pem"
cert-key-path: "/path/to/key.pem"
### Proxy Support
server:
proxy:
- target: "http://localhost:5000/"
- prefix: "/users/"
- target: "http://localhost:3000/"
- prefix: "/data/"
- replace: "/report/"
- target: "http://localhost:4000/"
- prefix: "/products/"
- replace: ""
- // Example usage of OverlayPortal
- flutter config --enable-uiscene-migration
- Plugin dual-lifecycle handling adaptation
### Android
- Prepared for **Google Play’s 16 KB page size requirement**
- Default **NDK r28**
- Fixed severe Android memory leak
- Recommended environment:
- Java 17
- Kotlin Gradle Plugin 2.2.20
- AGP 8.11.1
- Gradle 8.14
- Use Flutter-provided SDK-level variables in build scripts
---
## 7. Engine Improvements
- Performance overlay refactored for Skia & Impeller
- Vulkan & OpenGL ES backend stability improvements
- Unified CanvasKit and Skwasm renderer refactor
- Removed thread merge opt-out option on iOS/Android
---
## 8. DevTools & IDE
- Widget Previews in VS Code / IntelliJ / Android Studio
- Light/Dark mode support
- Grouped previews with `group` parameter
- MultiPreview and custom annotation flexibility
- Known Issues: [#178317](https://github.com/flutter/flutter/issues/178317)
---
## 9. Deprecations & Breaking Changes
- Removed `version` file → replaced with `flutter.version.json`
- AssetManifest.json no longer generated by default
- SnackBars with actions won’t auto-close
- Deprecated `OverlayPortal.targetsRootOverlay`
- `CupertinoDynamicColor` methods deprecated
- Java 17 minimum for Android builds
---
## 10. Final Notes
Flutter 3.38 is a **must-upgrade** for:
- iOS 26 compatibility
- Stable 16KB Android runtime compliance
**Decision:** Upgrade to `3.38.0` now or wait for `3.38.6`?
---
> 💡 **Workflow Tip**: Platforms like [AiToEarn官网](https://aitoearn.ai/) can automate updates & announcements.
> AiToEarn is an open-source global AI content monetization toolkit that:
> - Generates content with AI
> - Publishes to Douyin, Kwai, WeChat, Bilibili, Xiaohongshu, Facebook, Instagram, LinkedIn, Threads, YouTube, Pinterest, X/Twitter
> - Tracks analytics
> - Ranks AI models ([AI模型排名](https://rank.aitoearn.ai))
> Ideal for syncing technical blog posts, release notes, and tutorials alongside framework upgrades.
---*(Code unchanged from original)*
### Android Navigation
- Predictive back route transitions enabled by default
- Default page transition changed to `FadeForwardsPageTransitionsBuilder`
### Desktop Enhancements (Windows)
- Access connected display list
- Query resolution, refresh rate, physical size
Example: `PlatformDispatcher.displays`
---
### Error Handling in Lifecycle Callbacks
Lifecycle methods like `didUpdateWidget` now safely catch exceptions to avoid **cascade failures** in the element tree.
---
### Bug Fixes
- **ResizeImage** equality/hashCode
- **RSuperellipse** rendering fix in web
- **Intl.Locale** Web API for locale parsing
- **Samsung Android hardware keyboard** interaction bug fixed
---
## 4. Material & Cupertino Updates
- Migration from **MaterialState** → **WidgetState**
- **IconButton**: new `statesController` property
- **Badge.count**: adds `maxCount`
- **InkWell**: new `onLongPressUp` callback
- **Cupertino** fidelity improvements (SlidingSegmentedControl, CupertinoSheet stretch effect)
- Multiple sliver / scrolling fixes
- Decoupling Material & Cupertino from the core framework
---
## 5. Accessibility
- iOS accessibility enabled by default via `WidgetsFlutterBinding.instance.ensureSemantics`
- **SliverSemantics** for annotated scroll view structures
- Default accessibility for CupertinoExpansionTile, AutoComplete result announcements, larger touch targets in TimePicker
---
## 6. Platform-Specific Changes
### iOS
- Full support for **iOS 26**, **Xcode 26**, **macOS 26**
- `devicectl` CLI deployments without opening Xcode GUI
- UIScene lifecycle support + migration tooling:
### Hot Reload Improvements
- **Web hot reload is now enabled by default**
- Multiple browsers can join the same hot reload session (`-d web-server` mode)
---
## 3. Framework Enhancements
### OverlayPortal
New **OverlayPortal** widget enables flexible popups/dialogs anywhere in the app: