Reflecting on Flutter after Fluttercon 2024
Not sure how about you, but lately I’ve been getting impression that Flutter ecosystem has been affected by some pessimistic or defeatist claims, sometimes even overshadowing other good news or experiments. Thankfully, coming again to a big event makes you realize that online chatter is not the whole picture.
If you’re not in the twitters and reddits of the web, here’s a quick recap of the most impactful voices either commenting or responding to claims that Flutter can be killed by Google:
- Joint blog note from Directors of Android and Flutter on selecting the toolkit for mobile apps, note that Jetpack Compose Multiplatform is not mentioned
- How big is the Flutter team by Hixie, who’s no longer at Google, but still actively contributing
- Layoffs at Google affecting Flutter - viral post that put focus on Flutter
- Response from Michael Thomsen, Flutter PM, where he tries to cut the discussion
Same as many of you I sometimes get a bit of FUD, but in the long run, I see how the general trajectory of the framework and ecosystem maintains stable. To support this, let’s recap some of the exiting news and showcases from this year’s Fluttercon.
Platform Views and the big thread merging
The Flutter TL John McCutchan had a quite insightful talk about Platform Views on Android. It was refreshing to see the team admitting to mistakes in the current implementation, as well as proposing a long-term plan of fixing that. The only issue is that these fixes will only be enabled by the upcoming Android SDKs (34 and 35) which means that we’ll have to deal with current limitations for another year or two. Aside from that they confirmed that there’s a plan on merging platform and Flutter UI thread, which sparked a lot of discussion e.g. around native interop (things like method channels, ffi, JNI).
Folks from the Dart team have shown the jnigen
tool that enables calling Java and Kotlin code directly from Dart, avoiding message passing through method channels. In short you could potentially invoke Kotlin plugin functions through simple Dart interface like in this example:
void showNotification(String title, String text) {
i = i + 1;
var jTitle = JString.fromString(title);
var jText = JString.fromString(text);
Notifications.showNotification(activity, i, jTitle, jText);
jTitle.release();
jText.release();
}
Some experiments are in progress to bring similar syntax to Swift through ObjC.
Personally, I find this to be a really solid response to Kotlin Multiplatform expect
and actual
declarations.
Visuals, animations, shaders
As it often happens, the most impressive talks are the ones that play with visuals. I got impressed by Raouf Rahiche’s take on fragment shaders, reminding me of last year’s shader talk by Renan Araujo (missed you!).
Btw check out the new project bringing some amazing shaders straight to Flutter: fluttershaders.com
Compose
I went to couple of Compose and Compose Multiplatform talks just to see what makes the Android devs excited. Seems like Compose is doing well, although I can’t get rid of the uncanny feeling that it’s taking best from Flutter while keeping entire Android toolchain weight to deal with. Worth keeping an eye on Jetbrains efforts on Multiplatform as they are facing quite similar challenges as Flutter, while being able to avoid some of the dead ends that Flutter had to face (e.g. with multi window support, native interop).
Social battery charged
During my talk I asked folks what are the types of the apps that they work on and the response from over 200 people who scanned the QR code makes me feel joyful.
To all the people I met and ones I missed - you’re doing amazing job, and I couldn’t be more happy to be part of this community. Thanks to all the organizers, speakers, and attendees for making this event so special. I’m looking forward to the next one!