[Applause] Good morning. Good morning everyone. Are we ready for this? All right, let's talk about Flutter. All right. Thank you. Thank you. Thank you everyone for joining us today. We are so pleased to be able to share the latest news about Dart and Flutter. Whether you're joining us here in the tent today at Google IO in Mountain View or on YouTube, thank you.
All right, before we get into all the news, let's spend just a moment reflecting on why we care so much about Flutter. We all interact with a multitude of devices throughout our day. We have mobile phones in our pockets, laptops at work or in school. Web
browsers power anything from ordering dinner to scientific research and embedded devices are all around us. This presents a fundamental challenge to app developers. How can we support all these devices with highquality experiences? How can we avoid fragmenting our development teams, our marketing teams, and our support teams into a handful of silos? Our goal with Flutter is to fundamentally change that core question from worrying over which platforms to support to a pure focus on what you want to build. We do that by supporting all device classes from a single shared source code base. With Flutter, you can create rich and beautiful experiences that target them all. And you can do so in less time with higher productivity and higher quality. We can't do all this work
alone. A core component of the formula is a rich and vibrant ecosystem. We ended last year with our Flutter in production live stream guest hosted by rock legend and Flutter developer Rivers Cuomo also known as the lead singer songwriter for the band Weezer. And we
highlighted uh Flutter's momentum as a production grade framework trusted by some of the world's largest brands. That momentum was perhaps best summarized by our announcements around further adoption. First, according to the Jet Brain State of the Developer ecosystem survey, Flora has been the most used multiplatform app framework since [Applause] 2021. Second, according to app intelligence provider Apptopia, Furo accounts for whopping 28% of all new free apps in the Apple App Store. All right, but why don't we take a moment to look at some of these graphs, all these great apps being put out there and the awesome developers that are creating them. I'd like to welcome on
stage Craig from Defel. [Applause] All right, so a lot of Flutter apps are making it into the Apple App Store and Google Play Store. So, as Michael said, let's look at a few of them. Now,
reflection.app uses a complete Google stack, Flutter, Firebase, and Gemini to provide a personalized journaling experience for users. Now, Firebase app check guards their backend against fraudulent requests. Firebase remote config allows them to remain nimble in the face of evershifting user demands. And Gemini responds with those journaling prompts in less than 300 milliseconds. Of course, Flutter brings it all together by allowing them to deliver this experience to their users on whatever devices they use. And
Reflection's adoption of Gemini is recent because all this stuff is so new. But I particularly like this post from one of their recent uh engineering blog posts or this graph. And in case it's unclear what's going on here, the good folks at Reflection had the courtesy to include an arrow to tell us where to look. And as it says, this is the moment they added Gemini and Vert.ex AI for
those personalized responses and that immediately kicked off a 60% increase in user engagement and a corresponding increase in user satisfaction. Another cool story is Team Lab based out of Tokyo and they create solutions for digital content production, urban planning and architectural space design. Now, their museum apps allow users to interact more with the exhibits, including reading and interacting more with art pieces right in front of them on their phones. And they've delivered this to an astounding 35 million users. And they find that
with Flutter, they're able to dramatically increase their development velocity. That allows them to spend more time polishing their app and adding the features their users are requesting. Another new Flutter user is the Google Cloud mobile app. Google Cloud, anyone ever heard of them? So, they took a look at their existing apps and switch to Flutter uh to build a range of new features with the goal of writing once and delivering everywhere. Another
familiar promise. And they found tremendous value with the UI and logic consistency that they were able to get from a single shared codebase. And they found that Flutter delivered native like feel and performance without compromises. And the screenshot here we see is one of their latest features, Cloud Assist, which offers AI powered analysis and troubleshooting of your cloud projects. Another fun one is Notebook LM, a research, an AI powered research and writing assistant straight out of Google Labs. And previously this was
only available as a website. But the team was immediately inundated with requests for a mobile client. And as fast as everything moves in the AI space, obviously development velocity and time to market was going to be critical. So that made Flutter a natural choice. And we're very excited about Notebook LM's big public release this week. Now, a lot of credit for all the
achievements of Flutter goes to our awesome community. I personally, yes, yes, that's you all. I personally think Flutter remains one of the most helpful communities in tech with countless live streams, Q&A shows, and forums, and local groups all over the world. And one organizing force behind all of this is the Flutter Meetup network, which has 150 groups spanning 66 countries, including an astounding 83,124 members who in the 2024 calendar year enjoyed 541 events. So pretty incredible.
[Applause] We've also seen a strong growth in the number of contributors to the actual core Flutter repositories. In the last year, we welcomed 202 new firsttime contributors, which brought our unique contributor count for the last year up to 843. And in total, these developers landed over 4,000 changes to Flutter. But despite our success, we know that there is a lot more work to be done. And a few months ago, we released
our 2025 road map. We already have a lot of exciting progress to share. So, let's start by talking about what we've done to improve Dart, which empowers Flutter with a modern programming language and fast and flexible developer tools. All right, it's a developer conference. So, yeah, let's talk about Dart. Dart is a key ingredient to
Flutter's success. Our ability to co-evolve Dart and Flutter together is a core enabler of our success and we continue to evolve the Dart language. Here's a visualization of all the improvements we've made uh since our major null safety feature back in 2021. Quite a few changes, right? Um, this includes a mix of capabilities, uh, smaller additive changes ranging up to larger features that impact all Dart and Flutter codes. And we're not done
yet. In December, we launched digit separators. This is an optional syntax that adds visual separators to large numbers in your code. For example, the constant declarations on the slide. Uh, this feature makes it much easier to reach these kinds of constants without requiring a magnifying glass. Uh in February we launched wildcard variables. This is a specialized feature
for those cases where you don't care about some values. Uh for example, some of the values returned from a function call. Before you had to make up actual variable names uh for these by convention this increasing amount of underscores and now a single underscore has a special semantic meaning. This non-binding and you can repeat it as many times as you need to for all the values that you don't care about.
And then available today in D 3.8 null aware elements. Uh this allows you to include an element in a collection only if it's not null. This works in all collections such as list, maps, and sets. Woo. Thank you. Yeah. Uh before this you would have you would have had to use our existing syntax for conditional elements uh as uh seen on the top uh to check whether a value uh was null and then including accordingly. Uh and now you can just add a simple question mark uh before the variable name and everything is handled for you.
Uh I think that's pretty neat. Uh but we're not done. Uh we are currently looking at addressing duplication in FL codes with a new shorter syntax for selecting a member on a type that is known based on the context. Uh uh take for example a constructor call to a FL column. As you know it has a crossaxis alignment argument argument of the type crossaxis alignment. Uh and so there's really no reason to repeat this. Uh with dotshorthands, we just type dotstretch. Uh and this is based on
context type. So like the actual type system, you still get code completions when you type the dots. Everything is checked by the analyzer. So it's fully sound. Um we expect this feature to land in stable in the second half of the year. All right. Uh that's it for the
Dart language, but we're not done with develop experience. So let's talk about some tools. Uh, one of the trickiest parts of learning any framework I find is learning what all the available APIs are. Uh, it can be quite overwhelming at
first when you're new. Uh, and I think great developer tooling can really help here. Uh, today we're announcing a new property editor feature. [Applause] With this when you select a widget in your IDE uh we will show you all the primary layout features uh properties. Uh you don't have to go read the docs or go to declaration. You can then easily just in the editor uh change it to a new value that will propagate into the source codes and hot reload will show it in the running app. I think that's a
really great feature. Uh a related developer tool often used for dianiting diagnosing layout issues is the dev tools inspector. Uh we recently made quite a number of improvements to this. We added a new condensed widget tree that omits uh all the uninteresting widgets. We added a simpler uh properties view and options to automatically uh propagate in responses to things like hot reload and navigation events. Uh we're also making quite a few
changes to pup.dev dev our package manager. Uh we recently added darkmark support for better contrast and a new download counts feature that can be really helpful to understand how your packages are being used and especially how that uses is distributed across the versions of the package. A brand new feature we're announcing this week is trending packages. This will show you packages that have a big recent uptick in usage right on the front page of pup.dev. And we think this can be a really useful tool for discovering some new packages that might be of your interest. Finally, we completed a full
migration of pup.dev of its original proprietary infrastructure and onto readymade Google cloud infrastructure. We hope this can ensure we can retain our reliability and fall tolerance despite the very strong growth of usage on pup.dev. All right, let's talk about the formatter. Uh this is a tool you
probably all use. Uh earlier this year, thank [Applause] you. Earlier this year, we added new functionality to help it automate the adding and removal of trailing commas. Um we also optimized the actual formatting of the format in quite a few cases. And our goal was to enable you to focus on what your code does and less so on how it looks. Uh we got a lot of
feedback, a lot of feedback on this. Uh so thank you for that and we try and react to feedback. So we've made a bunch of adjustments to the actual formatting.
A couple of examples are shown on the slide but there are many more adjustments we made. And then one of the most controversial changes was this removal of trailing commas on your behalf. Uh and we understand some of you are very passionate about that change. Uh so we'd like to announce a new configuration option for you to turn that off. [Applause] All right. Uh, next up, we changed the
Dart compiler. Uh, if you're using it, uh, for example, for embedded, uh, we now support the ability to cross compile. So, you can compile, uh, Linux binaries from Windows and Mac OS machines. This can be really useful if you're running on something like a Raspberry Pi. Uh before if you didn't have a Linux machine, you'd have to run the compilation on the actual Raspberry Pi uh which is extremely slow. It's like
waiting for ice cream on a sunny day, right? Uh but now we support cross compilation. So you can just do that compilation right on your Mac OS uh or Windows machine, which is probably uh quite a bit faster. Uh speaking of slow, I think we all hate waiting for our CLI tools. Uh we recently took a really hard look at the CLI tool uh and realized we were still running it uh in JIT mode despite AOT compilation now being so much faster. Uh so we've compiled the whole tool into an AOT binary. Um and of
course the results will vary depending on what it run when you run it on. In the examples here on the slide we're running it on a single package and as you can see format turns to be a near instant. uh and something like analyze now completes roughly 50% faster. Um I think this will make your everyday use of the tools uh much more responsive and in something like CI workflows they should complete much faster. Uh this work is currently happening in main uh so if you want to try it give it a look in main uh and should make its way to stable uh in later in the year. That's all for darts.
Uh Craig, why don't we talk about Flutter a bit? Well, people who know me know that I do love to talk about Flutter. All right, so Flutter launched in 2017 on Android and iOS, and we are so proud of the mobile experience that we've built in the years since. Our material and Certino widgets track Google and Apple's design languages. And of course, Flutter shines brightest when you bring your brand's own custom design. But underneath all those shiny UIs, Flutter apps can also access each and every native API on the host platform, often through a mature plug-in that you just install with a single command. But what about new APIs? Maybe something announced at a big fancy tech conference that's only available in an Android or iOS beta. Well, those beta APIs are also
all available to Flutter developers. But often the developer experience to reach them has not risen to the level of our standards. First of all, all the function calls to native methods were asynchronous in Dart even if the target function was synchronous. Secondly, the parameters going into those functions and the return values coming back out were not type safe. And third, the boilerplate to make all this happen really felt like homework. So, we're imagining a totally new world here, which we call direct native interop. And our vision is to allow you
to eventually access all native code as easily as you access your own Dart code. And we're working on three complimentary projects here to realize this vision. And I want to share updates with all of those with you now. So they are merging
the UI thread back into the platform thread build hooks and the related features FFI gen and JNI gen. So the first project merging that Flutter UI thread back into the platform thread was a very serious undertaking. And to understand it better, let's take a look at Flutter's historical architecture. So originally the Flutter engine was managing two new threads separate from the main platform thread. However, this design which seemed reasonable 8 years ago came with hidden fees. The vast majority of native platform native APIs have to be invoked from the platform thread. And so instead
of calling those directly from Dart, we all had to kind of marshall the calls through these things called platform channels. And this created two problems. First, it added friction and that async behavior to what could have otherwise been a simple synchronous function call. And second, uh second, because it was operating on those serialized payloads, that's why all type safety was lost. So we knew we wanted to make this better. And to realize this direct native interop vision, we had to merge two of those threads, doing away with the UI thread that the Flutter engine was starting and moving all of that Dart code execution back onto the platform thread. And this can help us avoid the forced use of futures in Dart code calling synchronous native functions and it can allow for type safety. Now, as a side note, platform
channels do still exist. So this is not a breaking change for existing plugins. So merging the UI thread back into the platform thread will simplify situations where the native API that you need to call is offered by the host platform. But sometimes you need to
interact with a library maybe written in a different language. For example, a machine learning library written in C or R. And those libraries often come with their own dedicated binaries and they have to be available at compile time and then they need to be put somewhere where your Dart code knows to look. And this is the exact headache that the build hooks feature looks to solve by either downloading a pre-prepared artifact from any public URL or by compiling one from source and then baking it directly into your Flutter app. And as of today, Build
Hooks is available in preview on the main channel. So now you've got that machine learning library in your Flutter app in a place where your Dart code knows how to find it. The only thing that remains is to actually call its functions. And so for this, you engage with Dart's lowlevel FFI APIs to manage memory, call functions, and do whatever else you need. Only problem is different languages are well different from each other. and the translation layer to get from one to the other can often be a bit unwieldy. So enter the third item on our
list, the complimentary features FFI gen to talk to C like languages and JNI gen to talk to Java and Cotlin. And these tools read the header files of the functions that you hope to call and generate that translation code for you. Now, the whole direct native interop effort is a very large undertaking and currently remains experimental, but we're excited to keep making progress this year. And for a deeper dive on
native interop in Flutter in general, you're going to want to check out James Williams's talk, how Flutter makes the most of your platforms. So, native interop powered by all these features is essential when building an app that really feels right in the user's hands. And that certainly includes on iOS. We want iOS developers to feel at home building with Flutter. So this year we've taken a look at everything to make sure it's all up to our standards. But to start, we knew we
didn't just want to refresh our Certino widgets. We also wanted to establish a cleaner foundation on top of which we could build widgets of any design language. And so toward that end, we've migrated tens of thousands of functional lines of code back into the base widgets library. And this is not a breaking change, but it sets us up for cleaner Certino widget implementations. And it sets all of us up for whatever design languages we want to use in our Flutter apps. And this foundational work supported big investments in the Certino library to improve its fidelity and expand its coverage. Our mindset
regarding Apple and iOS is that we want to sweat the details so that your apps just work the way you expect. So, we've revisited screen uh spring and scrolling physics. We've updated our bottom sheets, our collapsables, and navigation bars, especially those including search fields. And this app that we've all been looking at here, written by community member Mahar Safati, uses Flutter's off-the-shelf Certino widgets to showcase our efforts to faithfully replicate Apple's aesthetic. Another detail that we're sweating so you don't have to is supporting one of Apple's more unique shapes, the squirle, which blends the arcs of several different shapes. And the precise algorithm to the iOS squirle remains a mystery to many, certainly including yours truly. But that has not
stopped the Flutter gene from trying our best to create our take on it to the highest possible fidelity. So the difference between a squirle and what you might first approximate it to a rounded square is very subtle. But while this graphic might make you think that like this doesn't matter and why are we even talking about it, it's actually very important. It turns out that squirrels are a big part of what makes iOS feel like iOS. So we examined all kinds of shapes including the next closest shape which is called a super ellipse. Ultimately we found that squirals seem to be a mixture of arcs from plain old circles and these fancy super ellipses. Now we think
Flutter's squirrel implementation is pretty close and the community noticed and agreed. Mike Rystrom, typically a discerning eye on the fidelity of Flutter's material implementation, posted a 12 post thread on X showcasing his findings that of all the world's third party squirrels, Flutters is the best. Yeah, a lot of work went into that on the team just exploring mathematical models and what might be going on there. Really cool. And you can find it today in the stable channel as the R super ellipse class. and we're already
including it in our Certino widgets where appropriate. Now, beyond building out just the Certino library, we're also hard at work migrating off of Coco Pods and on to Swift package manager. That'll simplify all of our dev setups. So, Coco Pods is installed but broken. Fairly well. All
right. Now, we are still in a transitory state here, but already 150 plugins have added Swift Package Manager support, and we're happy to announce that that includes all Firebase plugins, and we aim to complete this transition to Swift Package Manager soon. Similarly, on the other side of the mobile coin, Flutter will always aim for a no compromises experience on Android. First, as a Flutter 3.29, 29, Android has joined iOS in using Impeller as its primary renderer. With one small exception of very old, like 10-year-old Android devices that run a very dated graphics stack and to continue to support those devices, Flutter will continue to use Skia on Android API level 28 and below. As of Flutter 3.27, we also made Android's edgetoedge UI system Flutter's default. An edgeto edge opens up the
whole vertical height of a display to a Flutter app running on an Android device that does not have any top or bottom system UI. And this had delicate implications for how Flutter thinks about things like safe areas and system UI. This year we've also added Android's scribe feature which converts raw handwriting into actual text. And this is a pretty cool feature because it just works even if your handwriting is like mine and it looks like a child fingerpainting with spaghetti saws. Now, beyond all that, we've also delivered numerous material updates including supporting new page transitions, updating progress indicators and sliders and other areas of polish. All right, next up, the web. Now, Dart code, yeah, Dart code has
always been able to compile itself to JavaScript as a first class feature. So, Dart web apps actually go back more than a decade, but AOT natively compiled code, it turns out, runs a little bit faster than interpreted code. And so, the web world has been hard at work evening this playing field with, we already know, web assembly. And in
Flutter, we are of course fully supporting Web Assembly as we announced last year with our uh commitment or we announced last year with Dart's ability to compile itself to WMGC. And with web assembly, Flutter web apps start a lot faster because there's no JavaScript to interpret. And in complicated scenarios, they can render frames up to twice as fast. And for the last year, we've been focusing hard with the community on leveraging WMGc. And
that involves having individual packages upgrade to our new JS interop model. And we've made great progress with the community on this. So thank you all as evidenced by 92% of the top 250 web packages supporting Wom. Next, we've also done a lot of work with our accessibility system, including a huge refactor to improve performance and help the Flutter web engine spend less time syncing its semantics tree with the browser's accessibility APIs.
We've also added an entirely new semantics roles system, which Flutter converts to standard ARA labels on the web. And this offers developers more precise control over how a UI element that you're creating will be interpreted by the browser's assisted technologies. We've also landed dozens of other bug fixes, improvements to our accessibility system.
Now, all these improvements to Flutter web are good and fun and all, but this is a just between us. This is a a private conversation, right? There's no one listening. If you've made a Flutter web app before, you've probably noticed the absence of Flutter's flagship feature, Stateful Hot Reload. But today, I'm excited to announce that Stful Hot Reload is available for Flutter Web in preview on all channels. Yes. And you can try it yourself today by adding this flag to Flutter Run or by visiting dartpad.dev where it's globally enabled.
We hope to enable this by default by the end of the year. But first, why don't we take a look because it's going to be so fun to see. Can we switch to the demo? All right, I've got Darkpad here. So, the first thing I will do is load up the counter app and run it. And we see a new button there. Reload. All right. So, I'm going to run
the old faithful counter app and then I will count. 1 2 3 4 5. All right. Now, I don't want to make the change myself. So, I'll have Gemini do the hard work. Here we go. Uh, hello dearest Gemini,
old buddy, old pal. Would you please uh if it pleased the court, rotate the text widget showing the count 45°. There we go. Uh, thank you. Okay, so now I'll press generate. Gemini cooks
for a bit. Brings in math. Yeah, that's what we expect. Wraps this widget. Okay, whatever. That's fine. I accept. But there it is, rotated and statefully hot reloaded.
That was so much faster than it ever would have been before. All right, next I'm going to pass things back to Michael to take a look at our ecosystem. Thank you. Google is proud to support Flutter, but so much of the value for developers comes from elsewhere in the community. One big contributor to Flutter is Canonicle, the folks behind Ubuntu, the world's most popular distribution of Linux. The team at Canonicle use Flutter themselves for Ubuntu's first party app marketplace.
uh but they have been excited to contribute towards follow's overall quality on desktop including contributing feature work from multi-wind support as seen in the screenshot. They are also contributing the desktop implementation of their threat merging uh that Cre discussed earlier and many many fixes related to accessibility text input focus and keyboard and mouse events. Uh canonical is really helping us unlock the promise of open-source development. Another company with a business critical interest in Flutter is LG, uh the creator of webOS and manufacturer of hundreds of millions of new devices with screens per year. Um, woo. [Applause] Last year, LG announced uh plans to rewrite many of their core webOS system apps in Flutter after an initiative confirmed that FL delivered significant improvements in launch time, runtime responsiveness, and memory consumption. This year, FL is sorry. This year, LG is
excited to announce a significant expansion of Flutter. Their web team is aiming to complete the development of a new webOS Flutter SDK. This is targeting an official launch um in the first half of next year and will allow developers to release Flutter apps to the LG content store. Thank you. To increase awareness of webOS as a platform, LG recently held a worldwide web hackathon uh challenging developers uh to build apps that utilize the capabilities of their TVs with their dedicated remotes. Uh I was very happy to see FL community team member Lucas Clingso, one of the core maintainers of Flame, uh took second prize in this competition with a very cool game that uses LG's remote as a magic wand. You can uh complete runes, cast spells, and defeat enemies. I think that's pretty cool work
by a single developer on this all new experimental platform in just a few weekends. [Applause] Congratulations. All right. Across our ecosystem, we've seen interesting applications of embedded devices powered by Flutter in interesting locations such as theme parks, research facilities, and all around the home. One recent example is from Universal Destinations and Experiences. As we announced already last year, they use Flutter for their iOS and Android apps at their parks in Orlando, Hollywood, and Osaka. And they reported back then they were able to get a 45% decrease in codebase size. But they're
not done yet. At their newest theme park, Universal Epic Universe in Orlando, they are now using Flutter to power their guest facing selfervice dining kiosks. Um, thank you. They were able to take their existing mobile apps and reimagine them as a kiosk interface and be and they've been able to create rich animations and smooth transitions and I think it's a really great showcase of how powerful flur is and how you can apply it. Another example is uh 1080 motion out of Sweden. They offer state-of-the-art training and rehabilitation uh software for professional athletes around the world.
And their customers receive realtime performance feedback on hardware that delivers individualized workouts for that athlete on that day. 1080 Motion as you're seeing in the video. They run Flutter on all their customerf facing screens and they achieve 60 frames per second on lowcost embedded hardware and 120 frames per second on high-end tablets. And what's more, they enjoy 100% code sharing between their tablet app and embedded apps and everything comes from one shared codebase. That's pretty cool. Flutter is also revolutionizing UIs on small screens found on appliances. Uh, and I was just thinking,
uh, when we started F many moons ago, I don't think I ever imagined seeing Flutter run on a toaster, but that's what's happening [Music] now. GE appliances utilize Flutter as the UI toolkit for all their products, for their main products equipped with an LCD screen, and Flutter has enabled them to implement these rich user interfaces on their AOSPbased platform. Their team mostly comprising of embedded and JavaScript developers were able to learn Dart really quickly and accelerate their adoption and become productive uh in in a quick time. In the future, they plan to expand uh on their embedded starting point by building userfacing mobile apps with Dart and Flutter 2. All right,
that's it for the latest stories. I think we might have one more topic. So, let's get back to Craig. Thank you. Yes. So, by my watch, we've
currently gone about 30 minutes at a Google IO event without talking about AI. And that has got to be a world record. But the world record ends at 30 minutes because there are two areas of AI stuff that I do want to talk about. So first of all, how AI can enhance the features that you put into your Flutter apps and secondly, how AI can help you develop those Flutter apps faster. So first, let's start by talking about what AI can do for your apps and your users.
So as you heard during the keynote, Vert.Ex AI in Firebase is now known as Firebase AI logic. And among many new things, that allows you to use either the Vert.Ex X AI or developer Gemini
APIs all from a single Dart SDK. So very a lot simpler for all of us. And Firebase AI logic also has a new AI monitoring dashboard in the Firebase console. And as detailed here uh it it
provides detailed actionable insights into your Flutter app's usage of the Gemini API. And with this tool, you can discover consumption patterns, explore performance metrics, and spot either potential issues or unexpected behavior. This gives you the data to make smart decisions about efficient use of the Gemini API. Now, of all these new things coming out, one of my favorite features and and tools is Gemini's live API, which offers this low latency birectional audio streaming for users to kind of just sort of chitchat with Gemini. and it's
currently in preview and only available on the Vert.Ex AI Gemini API, but it's already really fun to build stuff with. So, let's take a quick look at a Flutter app that uses this, a great Google IO. So, I'm here visiting my partner's family right now, and her mom has the best collection of plans. And so, I built myself a little app to help me identify the various plants that are around the house. Let me show you exactly how it works. All
right, we're going to call Gemini. Hey, Gemini. Hello. I'm Gemini, a plant identifier. Would you like to turn on your camera and show me a plant so I can help identify it? All right, I can do that. Can you see me? Yes, I can see you. So, I have these two
plants here. Can you tell me what they are? Okay, I see two plants. The one with the broad striped leaves looks like a calia.
The other one with the heart-shaped leaves appears to be a pose. Fun fact, paos is also known as devil's ivy because it's almost impossible to kill and it stays green even when kept in the dark. Okay, cool. Thank you, Gemini. So, it can run on web, but of course, it's a Flutter app, so I ran that same app on my phone as well. Let's go ahead and dial up Gemini one more time. Hey, Gemini.
Hello. I am a plant identifier. Would you like to turn on your camera and show me a plant so I can help identify it for you? Sure thing. Can you tell me what this plant is? Okay. It looks like a Boston fern. A fun fact about the Boston
fern is that it's one of the oldest known house plants. So that's Flutter and Firebase AI logic. Live API support is in preview right now, so you can start building today. But that's it for
me. Happy Google IO. [Applause] Pretty cool. Now, if you want a step-by-step guide for how to build aic apps with Firebase and Flutter, you should check out Andrew and Khan's talk, which is aptly named Agentic Apps with Firebase and Flutter and Vert.ex AI. So, that's the latest stuff for once
your app is running. But what about all that support during development? We're all living through a crazy evolution in this area. Just a few years ago, LLM would burp up some vaguely correct pseudo code that we still had to untangle. And then maybe about a year ago that was starting to get pretty reliable. And nowadays everything has
come together so fast that all anyone wants to talk about is vibe coding where you just tell the AI assistant what you want it to build and you get out of the way and you let it develop the whole thing all the way to a runnable prototype and maybe even beyond. And with such trends, you might ask yourself, do we still really need these multiplatform frameworks if AIs could just write the code for us across all of those multiple platforms? Well, we absolutely think so. While AI, right, while AI is going to increasingly write more of the code in the future, the non-deterministic nature of LLMs can make it hard to predict exactly how it's going to implement something. And this
is ever more challenging on those multiple platforms if you're not familiar with them all. And so with Flutter's single codebase support, you can vibe code your feature or app just once and then ship the same great user experience to everyone. And with Flutter and Gemini, it's truly never been easier to experiment with an idea at warp speed. As we saw, Gemini is even integrated into DartPad and that can get you up and running with no setup or installation necessary. And that feature was built with the Gemini API and its full source code is available on the Dartpad GitHub repository. It can serve as as an
example for all of us on how to build these great kind of tools. Another place that now has Gemini support is Android Studio. The Flutter and Android Studio teams collaborated on this and as of their most recent release Mircat feature drop, uh Gemini support for Dart and Flutter is now first class. Yeah, there you go. So, all you need to connect Gemini to Android Studio is a simple Google account login and then Gemini is available at no extra cost. For large businesses that desire enterprisegrade privacy uh or security backed by Google Cloud, you can also optionally upgrade to a Gemini Code Assist standard or enterprise license. And if you're a VS
Code user, rest easy. the Gemini Code Assist extension and a Google account is all it takes to bring Gemini Code Assistance right to your workflows in VS Code. Now, MCP needs very little introduction these days. It's an exciting new open protocol. It's gaining a lot of momentum for helping AI agents interact with various data sources in a standardized way. And we are
experimenting to see if we can use it to power more accurate and relevant code generation and connect it to Dart's tooling for better performance on complex tasks like uh fixing layout issues, resolving runtime errors, and even managing dependencies. So, it's probably not news to many of you that AI is coming in hot and changing everything right before our very eyes. But Dart and Flutter remain committed to being a great way to deliver your AI powered apps to every platform from a single codebase. [Applause] Michael, that's all we have for today. Hopefully, you've gotten a great look at all the recent advancements across Dart and Flutter, whether new exciting customer stories, Dart language additions, developer tools, enhancements, and our work for better interop. And let's not forget the many
upgrades across Flutter for Android, iOS, desktop, the web, and embedded. And of course, the exciting and fastm moving field of AI, both for AI powered applications and AI powered developments. A huge thank you to all of you. All of you who made Flutter what it is. We're proud to continue the journey
with you all to build the world's best app framework. Have a great Google IO. Thank you. [Applause]
2025-05-27 08:21