February is a Flutter release month, and there's a lot to cover! In this edition, we'll explore:
- The latest Flutter 3.29 and Dart 3.7 releases
- Flutter rendering changes (moving to the platform's main thread)
- The new Dart formatting style and how it affects your projects
- Why Dart macros are no longer coming—and what else is in focus
- Official Flutter packages being discontinued
- Key updates from Shorebird & Jaspr
- Common TextFormField mistakes in Flutter apps
- The latest from Code with Andrea
Let's dive in!
What’s new in Flutter 3.29
Every Flutter release brings many improvements, and 3.29 is no exception. Expect refinements to Cupertino and Material widgets, along with DevTools enhancements and Impeller engine optimizations.
Read the official announcement for the full details:
Here are some important highlights. 👇
⚠️ Flutter rendering moves to the platform's main thread
Previously, Flutter ran Dart code on a separate UI thread, which made it harder to call into platform code. Flutter now runs Dart code on the platform's main thread on Android and iOS. This enables more efficient platform interop through direct synchronous calls.
To learn more about this change, check out this detailed issue about merging the platform and UI thread, along with the most recent comments by Eric Seidel and Matej Knopp.
But does this change affect existing apps? An issue about slowdowns and jank during scrolling was already reported and fixed on the master channel. To avoid surprises, consider waiting for a hotfix before upgrading to Flutter 3.29 in production.
⚠️ Breaking changes and deprecations
In an effort to focus on the core framework, the Flutter team is discontinuing support for several official packages on April 30th, and the community is encouraged to fork and maintain these.
Details are in this umbrella issue:
Announcing Dart 3.7
Here's what's new in Dart:
- New Formatting Style: If you opt in to Dart 3.7 in your
pubspec.yaml
file, a new formatting style will be applied to your code. Since this affects all developers, I've written a detailed article to help you navigate the changes.
- Wildcard variables: The
_
symbol is now a proper wildcard, meaning you can use it multiple times when declaring unused parameters, rather than writing_
,__
,___
to avoid name collisions.
- Deprecated JS legacy libraries:
- These libraries are now deprecated:
dart:html
,dart:indexed_db
,dart:js
,dart:js_util
,dart:web_audio
,dart:web_gl
. - Instead, use
dart:js_interop
andpackage:web
going forward.
- These libraries are now deprecated:
- New pub.dev features: Pub.dev has been updated with dark mode, a new weekly downloads chart (located under the "Scores" tab), and a new topics page.
For all the details, check out the official announcement:
Update on Macros
Back in January, the Dart team announced that work on the experimental macros feature has stopped due to several major technical hurdles.
While this is not the news many hoped for, it means the team can focus on shipping build_runner improvements and augmentations, bringing tangible benefits to all Flutter developers.
For more details, check out this announcement:
I also recommend reading Eric Seidel's take on the topic:
Wondering if Flutter is dead already? Here's the answer. 😉
Flutter Videos and Articles
📹 The runtime that makes Dart tick - Slava Egorov
Slava Egorov labels himself as the "dreamer" in the Dart team, and in this talk he dives into low-level performance issues and how to apply optimisations at the compiler level.
He also goes through some little-known features of the Dart runtime, including interoperability with other languages through the dart:ffi
interface.
While this talk may not be immediately relevant for app developers, it offers fascinating insights into the Dart runtime:
📝 Common mistakes with TextFormFields in Flutter
This article highlights common mistakes in Flutter form design that can hurt user experience and conversion rates. It covers best practices like setting textInputAction
for smooth field navigation, using onFieldSubmitted
for efficient form submission, choosing the right keyboardType
, applying TextCapitalization
, using TextInputFormatter
for input validation, and enabling autofill with AutofillHints
and AutofillGroup
.
If your forms are not up to par, this article will help you fix them:
Flutter Ecosystem Updates
As Flutter grows, it's great to see tools in the wider ecosystem are getting better and more capable. This month, Shorebird and Jaspr have caught my attention.
🐦 Shorebird
If you want to bypass the app store review process and deploy app updates instantly, Shorebird is the right tool for you.
Most recently, the team has shipped two big features:
With the new integration, you can deploy your Shorebird-enabled Flutter app to Codemagic in 10 minutes:
While I only started using Shorebird recently, I'm already a big fan and I'll be adding a new Shorebird module to my [Flutter in Production] (courses/flutter-in-production/) course this week! 🚀
🐶 Jaspr
Have you heard of Jaspr yet? It's a Dart web framework that renders actual HTML and CSS, making it ideal for websites that need to be SEO-friendly and load fast!
As of today, Jaspr supports both static sites and server-side rendering. It can also integrate with your favorite state management solution and custom backend, and it even supports Tailwind CSS!
To learn more, visit the official website:
Personally, I prefer Astro for my web development needs, and I don't mind working directly with HTML and JS/TS (there, I said it! 😅). But if your heart is set on the Dart ecosystem, Jaspr might be the right choice for you.
Latest from Code with Andrea
Since the last edition, I've been busy:
- Added a new module about GitHub Actions to my Flutter in Production course. 📕
- Published a new article about the new formatting style in Dart 3.7. 📝
- Made some cool improvements to my Flutter Tips app. 🙌
- Shared two new Flutter UI challenges. 🚀
📝 New Formatting Style in Dart 3.7
This is worth repeating: there's a new formatting style in Dart 3.7. If you opt-in, the formatter will automatically decide whether to add or remove trailing commas (no more arguing about formatting during code reviews. 🎯)
This change will affect a lot of existing code. If you want to migrate while keeping your sanity, I've got you covered:
Updated Flutter Tips App
This app is my little side project and I like to polish it from time to time. With the latest changes, I've added proper responsive support and the app now looks great on all devices:
The update is already available on the app stores, and the web version even supports left/right arrow navigation. 🎯
New UI Challenges
Building UIs in Flutter is fun, but it can be challenging, too!
So I created this collection of UI challenges to help you practice:
Each challenge contains a web demo, a starter project, some goals, and the complete solution.
I've shared 8 challenges to date, including new ones about PageView/ListView synchronization, and building a simple quiz app. Try them for free here:
Until Next Time
After 10 months of work, I'm getting closer to finishing my Flutter in Production course, and I hope to wrap up the remaining modules over the next month or two.
Some new stuff is on the pipeline, too, and I can't wait to share more details soon!
So stay tuned—and as always, happy coding! 🎉