<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Flutter - Medium]]></title>
        <description><![CDATA[Flutter is Google&#39;s UI framework for crafting high-quality native interfaces on iOS, Android, web, and desktop. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source. Learn more at https://flutter.dev - Medium]]></description>
        <link>https://blog.flutter.dev?source=rss----4da7dfd21a33---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Flutter - Medium</title>
            <link>https://blog.flutter.dev?source=rss----4da7dfd21a33---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 12 May 2026 11:40:32 GMT</lastBuildDate>
        <atom:link href="https://blog.flutter.dev/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Introducing Skills for Dart and Flutter]]></title>
            <link>https://blog.flutter.dev/introducing-skills-for-dart-and-flutter-23837c6ec0ae?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/23837c6ec0ae</guid>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Mariam Hasnany]]></dc:creator>
            <pubDate>Wed, 06 May 2026 18:19:09 GMT</pubDate>
            <atom:updated>2026-05-06T18:29:38.719Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-cp6K90CIG7efKBLyiZ_jw.gif" /><figcaption>Introducing prepackaged Dart and Flutter Skills!</figcaption></figure><h4>Improving AI with domain expertise</h4><p>AI agents are generalists, but when it comes to professional Flutter development, “general” isn’t enough. To build production-grade apps, you need an assistant that understands the nuance of localization, the latest Dart language features, and how to add integration tests.</p><p>Today, we’re introducing <strong>Agent Skills</strong> for Flutter and Dart — a new way to give your AI tools domain-specific expertise.</p><h3>Beyond the knowledge gap</h3><p>One of the primary challenges in AI development is the “knowledge gap.” Flutter and Dart can launch new features more quickly than LLMs can update their fixed training data. As a part of <a href="https://medium.com/flutter/how-dart-and-flutter-are-thinking-about-ai-in-2026-e2fd64e1fdd0">how we are thinking about AI</a>, we are looking for ways to not only address the knowledge gap but also ensure the agent applies that knowledge to achieve the task accurately and efficiently following the most optimal workflows.</p><p>A little over a year ago, Model Context Protocols (MCP) were the way to provide more AI domain-specific expertise. While MCP gives an agent access to specialized tools, an Agent Skill teaches the agent <em>how</em> to use those tools for a specific task. Think of it this way: MCP provides the hammer and nails (the tools), while a Skill provides the blueprint and the professional know-how to build the house.</p><p>Skills improve context efficiency through “progressive disclosure”. This is similar to how deferred loading works in Flutter, where apps can load libraries when needed, coding agents load Skills when they are relevant to what you’re trying to do .</p><p>For Flutter and Dart, these Skills provide tailored instructions for common workflows, and enhance the tools provided in the Dart MCP server to reduce the knowledge gap, which improves accuracy and lowers token usage.</p><h3>A task-oriented approach</h3><p>Our early experimentation revealed that Skills that only provide documentation don’t add as much value as we initially assumed. Since Flutter’s comprehensive and well written documentation is open-sourced, modern models are already highly capable of finding relevant information for most questions and tasks.</p><p>So, we pivoted to creating Skills that are “task-oriented”. Every skill in our GitHub <a href="https://github.com/flutter/skills">Flutter Skills</a> or <a href="https://github.com/dart-lang/skills">Dart Skills</a> repositories focuses on developer tasks like building adaptive layouts- by providing instructions for agents to reliably complete the task. We have conducted extensive manual evaluations to define our initial set of launched skills, and are working on an automated evaluation pipeline that we will share soon.</p><h3>Using the Skills</h3><p>To start using these Skills in your workflow, first install the Skill set in your project directory:</p><pre>npx skills add flutter/skills - skill &#39;*&#39; - agent universal<br>npx skills add dart-lang/skills - skill &#39;*&#39; - agent universal</pre><p>You will be asked to select the Skills you want to install. Pick all or select the specific ones you might find most useful.</p><p>Then choose the agent that you prefer to develop with.</p><p>Now, prompt your AI agent as usual. Here are 5 ways you can use these Skills today:</p><p><strong>Skill #1</strong>: flutter-add-integration-test</p><p>Configures Flutter Driver for app interaction and converts MCP actions into permanent integration tests.</p><pre>Add an integration test for the checkout flow in my app</pre><p><strong>Skill #2</strong>: flutter-setup-localiztion</p><p>Adds localization support to your Flutter project</p><pre>Set up localization in my app</pre><p><strong>Skill #3</strong>: flutter-build-responsive-layout</p><p>Uses LayoutBuilder, MediaQuery, or Expanded/Flexible to create a layout that adapts to different screen sizes.</p><pre>Ensure that the checkout screen uses repsonsive layout</pre><p><strong>Skill #4</strong>: dart-use-pattern-matching</p><p>Refactors code to use Dart’s pattern matching language capabilities where appropriate</p><pre>Refactor my code so that it uses pattern matching where possible</pre><p><strong>Skill #5</strong>: dart-collect-coverage</p><p>Uses the coverage package to collect unit test coverage and generate an LCOV report.</p><pre>Collect test coverage for my project</pre><p>For more prompt examples, check out the readme <a href="https://github.com/flutter/skills">Flutter Skills</a> or <a href="https://github.com/dart-lang/skills">Dart Skills</a> repositories on GitHub.</p><h3>Tell us what you think</h3><p>These initial core Skills, designed to handle the most common Flutter development hurdles, are just the beginning. We want to build the future of AI-assisted development with you, our community. As you use these Skills and create new ones for your projects, file issues (<a href="https://github.com/dart-lang/skills/issues">Dart Skills repo</a>, <a href="https://github.com/flutter/skills/issues">Flutter Skills repo</a>), and let us know what additional work you’d like to see. We look forward to helping improve your productivity as you use these Skills!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=23837c6ec0ae" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/introducing-skills-for-dart-and-flutter-23837c6ec0ae">Introducing Skills for Dart and Flutter</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Saying goodbye to CocoaPods: Swift Package Manager is soon the default in Flutter!]]></title>
            <link>https://blog.flutter.dev/saying-goodbye-to-cocoapods-swift-package-manager-is-soon-the-default-in-flutter-645a92714a57?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/645a92714a57</guid>
            <category><![CDATA[cocoapods]]></category>
            <category><![CDATA[swift-package-manager]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <dc:creator><![CDATA[Jenn Magder]]></dc:creator>
            <pubDate>Thu, 30 Apr 2026 15:57:00 GMT</pubDate>
            <atom:updated>2026-04-30T21:31:50.982Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2A_CUygcOEFYUv5ms5KAJw.gif" /><figcaption>Dash migration!</figcaption></figure><p>Starting with the next stable Flutter release, 3.44, Swift Package Manager (SwiftPM) replaces CocoaPods as the default dependency manager for iOS and macOS apps. <em>This means no more messing around with Ruby or CocoaPods installations just to get your app running!</em></p><p>CocoaPods is officially in maintenance mode, and its registry will permanently <a href="https://blog.cocoapods.org/CocoaPods-Specs-Repo/">become read-only on December 2, 2026</a>. While existing builds will still work, no new versions or pods will be added to the trunk after this date. To ensure that your apps continue receiving dependency updates and to provide access to the Swift package ecosystem, Flutter is transitioning to Apple’s supported dependency management solution: Swift Package Manager.</p><p><strong>If you’ve already migrated your plugin(s) to use SwiftPM, read the “Plugin developers” section below for new migration requirements.</strong></p><p>Here is how to manage the transition.</p><h3>App developers</h3><p>For app developers, the Flutter CLI handles the migration. When you run or build your iOS or macOS app, the CLI automatically updates your Xcode project to use Swift Package Manager. Check out the <a href="https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-app-developers">Flutter migration docs for app developers</a> for more details.</p><p>If your app relies on plugins that haven’t adopted Swift Package Manager yet, Flutter will print a warning listing exactly which of your dependencies are unsupported. Flutter will temporarily fall back to CocoaPods for plugins that have not adopted Swift packages yet. Because CocoaPods support will eventually be removed entirely, if a plugin hasn’t updated and breaks your build, file an issue with the dependency’s maintainer to request Swift package support or find an alternative package.</p><p>We know that migrations can sometimes hit a snag. If SwiftPM causes a breaking issue, you can temporarily disable it for your project. Open your pubspec.yaml file, navigate to the flutter section, and set enable-swift-package-manager to false under the config block:</p><pre>flutter:<br>  config:<br>    enable-swift-package-manager: false</pre><p>If you opt out, please file a bug report using the <a href="https://github.com/flutter/flutter/issues/new/choose">Flutter GitHub issue template</a> and let us know! Include the error details, a list of your plugins and versions, and copies of your Xcode project files to help us resolve the issue before CocoaPods is completely removed.</p><h3>Plugin developers</h3><p>For plugin authors who maintain an iOS or macOS plugin, <em>you must add Swift Package Manager support if you haven’t already</em>. So far, 61% of the top 100 iOS plugins have migrated. We need the remaining plugins on board so app developers aren’t stuck relying on a deprecated tool. To encourage adoption, packages without Swift Package Manager support now receive lower pub.dev scores until they migrate.</p><p>To add this support, add a Package.swift file and move your source files to match the standard Swift package structure. If you already migrated your plugin during the 2025 pilot, you need to complete one new step: you must add FlutterFramework as a dependency in your Package.swift file. Read the <a href="https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-plugin-authors">Flutter migration docs for plugin authors</a> for full instructions.</p><p>Thank you for helping with this migration to Swift Package Manager. We hope this simplifies and improves your development experience on iOS and macOS!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=645a92714a57" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/saying-goodbye-to-cocoapods-swift-package-manager-is-soon-the-default-in-flutter-645a92714a57">Saying goodbye to CocoaPods: Swift Package Manager is soon the default in Flutter!</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[That’s a wrap: Everything Flutter at Google Cloud Next]]></title>
            <link>https://blog.flutter.dev/thats-a-wrap-everything-flutter-at-google-cloud-next-1f4d3c6c6a6e?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/1f4d3c6c6a6e</guid>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[mobile]]></category>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[android]]></category>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Emma Twersky]]></dc:creator>
            <pubDate>Mon, 27 Apr 2026 19:19:56 GMT</pubDate>
            <atom:updated>2026-04-28T14:29:19.210Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MdrcuqmMZPxXdrkJbDAdIA.png" /><figcaption>Google Cloud Next Recap 2026</figcaption></figure><p>Our team has been hard at work this Spring, preparing to meet over 30,000 of you in Las Vegas for Google Cloud Next. For those who couldn’t make it in-person, here is a breakdown of the major highlights, announcements, and experiences from the Flutter and Dart team.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cIHVKHTVvRkPEiualLOXeQ.jpeg" /><figcaption>Dash team at Google Cloud Next 2026</figcaption></figure><h3>Big announcements</h3><ul><li><strong>Full-stack Dart:</strong> The team announced a preview of Dart support for <a href="https://firebase.google.com/docs/functions/start-dart">Firebase Functions</a>. Yep, that’s right: experience using Dart for both your frontend and backend. We also introduced deeper integrations with <strong>Firebase using the Dart Admin SDK</strong> to reduce context switching and improve development velocity.<br>Check out the announcement blog, and documentation, and stay tuned for a full breakout session all about this feature at Google I/O.</li></ul><h3>Onsite experiences</h3><ul><li><strong>GenLatte:</strong> We built an AI-powered specialty coffee shop in the center of Next, created with <a href="https://docs.flutter.dev/ai/genui"><strong>Flutter GenUI</strong></a>. Attendees ordered drinks using a GenUI Flutter app, then watched baristas make a latte and print a custom nanobanana-generated image on the foam.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HIkUhLDGGJknOoFb8AC2GQ.jpeg" /><figcaption>The GenLatte booth</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TIrEkPNew4nRhnOX_JZeKw.png" /><figcaption>Use a Flutter app to order a latte with custom foam art!</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*75RjqqMruwwRcwQVWjkmcQ.jpeg" /><figcaption>Attendees enjoying their custom lattes</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*s757IVhn5sGl8hKwxtVl7A.jpeg" /><figcaption>Kate Lovett helps Dash fulfill her latte needs</figcaption></figure><ul><li><strong>Agentic mobile &amp; web demos galore: </strong>The expo floor was packed with energy, including three Dart and Flutter demos, showcasing Fullstack Dart, GenUI, and a special appearance by our friends over at <a href="https://verygood.ventures/">VGV</a>.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8tCVXW_vMObZzebVQdU96g.jpeg" /><figcaption>Answering questions about GenUI</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*g7pI_LsKz7SMDpaDrsw1GA.jpeg" /><figcaption>Demoing Firebase Functions for Dart</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*ftJN2u294p-nycRBfkwigQ.gif" /><figcaption>The Partiful app— the UI you see is generated on the fly</figcaption></figure><ul><li><strong>The Builder hub:</strong> This served as the “home base” for the developer community on the Expo floor. It featured dedicated booths for <strong>Flutter </strong>and our friends at Firebase and Go, providing a space for developers to connect with experts and explore new tools.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*g7OlGkj6nfHBCjiX3MNFDA.png" /><figcaption>The Builder Hub where developers can greet, meet, and repeat</figcaption></figure><h3>Key sessions &amp; customer stories</h3><ul><li><strong>Developer keynote:</strong> Emma Twersky hosted the Developer keynote, showcasing how Flutter is part of Google Cloud’s big bet on the future of agents.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FOxGHPVfUKaibqcK0FSO2g.jpeg" /><figcaption>Richard Seroter and Emma Twersky giving the Developer Keynote</figcaption></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FA01DQ8_xy7Q%3Fstart%3D1%26feature%3Doembed%26start%3D1&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DA01DQ8_xy7Q&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FA01DQ8_xy7Q%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/85aefcccc27b533ca85c3e6e9f9fe819/href">https://medium.com/media/85aefcccc27b533ca85c3e6e9f9fe819/href</a></iframe><ul><li><strong>Toyota &amp; Talabat:</strong> Real-world enterprise success was a major theme. Abdallah Shaban took the stage alongside industry leaders to showcase how Flutter is transforming their core products. <a href="https://www.youtube.com/watch?v=A3ApoV_QRio">Toyota shared how they are revolutionizing automotive UX using Flutter</a> for their next-generation infotainment systems, while <a href="https://www.youtube.com/watch?v=A3ApoV_QRio">Talabat demonstrated how they innovate faster and scale across the Middle East</a> using the framework.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Z5ZnnwJZgPjU71ahEdXKMg.png" /><figcaption>Toyota session</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JTvcXKm4OadZ9FjHAyjAzg.jpeg" /><figcaption>Talabat session</figcaption></figure><ul><li><strong>Generative UI Deep Dive:</strong> Yegor Jbanov and Andrew Brogdon led a session on how to move beyond text-based chatbots by giving your agents the power to create their own UI.<br>Stay tuned for Google I/O where this session will be available world wide on the Flutter YouTube channel.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mH5YXCtec8kz7iNQhNnnQQ.jpeg" /><figcaption>GenUI session</figcaption></figure><ul><li><strong>Building full-stack Dart: </strong>Rody Davis and Kevin Moore shared why you should be excited about today’s biggest announcement for Dart.<br>Stay tuned for Google I/O where this session will be available world wide on the Flutter YouTube channel.</li></ul><h3>Our community is thriving</h3><ul><li><strong>GDE Summit:</strong> Held just before the main event, this summit brought together over <strong>350 global Google Developer Experts (GDEs)</strong> to share feedback on Flutter with the core team, including a main stage session on Flutter GenUI.</li><li><strong>Developer meetups:</strong> Throughout the week, the <strong>Expo Meetup Hub</strong> hosted informal gatherings. Flutter helped host the Mobile Developers meetup, and we had a blast meeting community members from around the world and sharing why we think Flutter is the best way to build.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qbiAd4dCqHePwPdD8nUf4g.jpeg" /><figcaption>Developer meetups at Cloud Next</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*B4G1_W-d0YsF_MWmqE6AvQ.jpeg" /><figcaption>Firebase meetup at Google Cloud Next</figcaption></figure><p>And that’s a wrap! But not for long… <a href="https://io.google/2026/">Register today for Google I/O 2026</a> where our team has even more planned. We can’t wait to surprise you. 😉</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9XMAAu_JYPQswvTcMRhNiQ.jpeg" /><figcaption>See you at Google I/O!</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1f4d3c6c6a6e" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/thats-a-wrap-everything-flutter-at-google-cloud-next-1f4d3c6c6a6e">That’s a wrap: Everything Flutter at Google Cloud Next</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[We rebuilt Flutter’s websites with Dart and Jaspr]]></title>
            <link>https://blog.flutter.dev/we-rebuilt-flutters-websites-with-dart-and-jaspr-317c00e8b400?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/317c00e8b400</guid>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[static-site-generator]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[jaspr]]></category>
            <dc:creator><![CDATA[Parker Lougheed]]></dc:creator>
            <pubDate>Wed, 15 Apr 2026 18:31:01 GMT</pubDate>
            <atom:updated>2026-04-15T19:05:46.638Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Dash and Jasper sitting behind a laptop, checking out the new Dart and Flutter websites built with Dart and Jaspr, with a mockup of a website layout behind them." src="https://cdn-images-1.medium.com/max/1024/1*y6lc2WLpxXBKsuoKJywapQ.png" /><figcaption>Rebuilding three websites using Jaspr, a Dart-based, open-source web framework.</figcaption></figure><p>Despite Dart starting out as a web language and being used every day to build apps across platforms, including the web, our own websites (<a href="https://dart.dev">dart.dev</a>, <a href="https://flutter.dev">flutter.dev</a>, <a href="https://docs.flutter.dev">docs.flutter.dev</a>) relied on a fragmented mix of non-Dart tools. That’s finally changed. We’ve migrated all three websites to use <a href="https://jaspr.site/">Jaspr</a>, an open-source framework for building websites with Dart.</p><p>The result is a unified stack with a consistent developer experience where contributing only requires Dart. If you’re curious about building web experiences with Dart beyond standard Flutter web apps, this post explores what motivated our migration and how Dart and Jaspr made it all possible.</p><h3>A fragmented and unfamiliar technical stack</h3><p>While the previous setup of our sites worked, their implementations were fragmented, and required increasingly more effort to update the sites to meet our evolving needs. The documentation sites were built with <a href="https://www.11ty.dev/">Eleventy</a>, a Node.js static-site generator. Meanwhile, flutter.dev had a completely separate setup, powered by <a href="https://wagtail.org/">Wagtail</a>, a CMS built on Python and Django.</p><p>This fragmentation meant that anyone wanting to contribute to or maintain our sites needed additional experience and tooling outside the Dart ecosystem: Node.js tooling for one set of sites, Python for another. While some surrounding infrastructure and interactive components were already built with Dart, the separate ecosystems limited code sharing, significantly increased set-up and contribution friction, and grew increasingly complicated.</p><p>We wanted to change that. We wanted a single, unified stack built on the language and tools our team and community already know. We also had growing ambitions and needs for interactivity on our sites, from richer code samples to quizzes for tutorials. Our existing setups made each new interactive element an uphill battle, often requiring one-off imperative DOM logic.</p><h3>Finding a unified solution in Jaspr</h3><p>Jaspr is a versatile Dart web framework that supports client-side rendering, server-side rendering, and static site generation. Beyond being a traditional DOM-based (with HTML and CSS) web framework and being written in the language we already know, Jaspr stood out for a few reasons:</p><p><strong>Flutter skills transfer directly.</strong> The Jaspr framework and its component model were designed to feel natural and familiar to any Flutter developer while being compatible with the DOM model of the web. If you’ve written a Flutter widget before, you can read this:</p><pre>class FeatureCard extends StatelessComponent {<br>  const FeatureCard({<br>    required this.title,<br>    required this.description,<br>    super.key,<br>  });<br><br>  final String title;<br>  final String description;<br><br>  @override<br>  Component build(BuildContext context) {<br>    return div(classes: &#39;feature-card&#39;, [<br>      h3([.text(title)]),<br>      p([.text(description)]),<br>    ]);<br>  }<br>}</pre><p>With Jaspr, contributors can directly apply the Dart and Flutter experience they already have to a new platform, significantly lowering the barrier to entry for team and community members who want to improve our documentation and websites.</p><p><strong>Seamless support for partial hydration.</strong> One major underlying reason for this exploration and migration was to make it easier to build and integrate interactive experiences on our sites. Jaspr’s built-in support for partial hydration allows each page to be prerendered as static HTML, then the client-side logic is attached only for the components that need it. This is perfect for websites like ours, where the majority of the content is static and only small pockets of interactivity are needed, ensuring quick page loading and good SEO.</p><p><strong>Jaspr Content for Markdown-driven sites.</strong> Jaspr also provides <a href="https://docs.jaspr.site/content">Jaspr Content</a>, a package that supports quickly building content-driven sites. It provides enough out-of-the-box functionality to create a running Markdown-based website in just a few minutes while also being easy to expand and customize extensively. This built-in functionality saved a significant amount of time while the customizability enabled us to keep our original functionality and content practices intact.</p><h3>What we gained</h3><p>The migration brought all the benefits we imagined and more, both for the sites themselves and the contribution experience.</p><p><strong>A singular, unified toolchain.</strong> With everything written in Dart, not only do you need just one SDK to contribute, we also gained access to Dart’s powerful, unified tooling. We can manage all dependencies with dart pub, format code with dart format, analyze it with dart analyze, and then test it with dart test. Managing the site now requires only one set of tools to know, one set of conventions to follow, and one ecosystem to stay current with, and it’s the one we’re already most familiar with.</p><p><strong>A stack our contributors already know.</strong> Our websites have a lot of contributors, from engineers, to technical writers, to passionate community members. We want everyone to be able to contribute, but the fragmented setup was complex and unfamiliar to most. Now the sites are implemented as standard Dart projects, and if you know Dart, you have everything you need. We hope this lowers the barrier for team and community members who want to help improve Flutter and Dart’s documentation.</p><p><strong>Less had to change than you’d expect.</strong> With Jaspr Content supporting most of what we needed out of the box, such as templating support, Markdown, and data loading, our content and writing workflows barely needed to change. Nor did our styles, as we already used <a href="https://sass-lang.com/">Sass</a>, a CSS extension language, which is actually implemented in Dart, and therefore requires an even simpler setup than we had before.</p><h3>The collaborative migration</h3><p>Overall, the site migration to Jaspr and Jaspr Content went well, but there were, of course, some challenges along the way. We occasionally ran into issues as well as opportunities for improvement with both Dart’s web tooling and Jaspr itself.</p><p>What made the migration possible was <a href="https://github.com/schultek">Kilian</a>, Jaspr’s creator and maintainer. Beyond creating Jaspr, he supported us throughout the migration. He migrated components as early proofs of concept, responded to issues, shipped fixes, improved the developer experience, and even built out Jaspr Content with our websites as a driving use case. To support this ongoing effort and formalize the collaboration, we partnered with Kilian and his consultancy, <a href="https://www.netlight.com/">Netlight</a>, to help us migrate the rest of our web presence and continue investing directly in Jaspr. It was a genuinely collaborative process. Our sites and Jaspr both grew as a result.</p><p>In the Dart and Flutter ecosystem, <strong>the community is everything</strong> and what Kilian has provided to the community with Jaspr is a great example of that. Jaspr has shown itself to be a powerful and modern web framework that is well maintained, responsive to feedback, and ready for you to try out. Thank you, Kilian!</p><p>To hear Kilian’s perspective on building and maintaining the framework, check out his article: Jaspr: <a href="https://opensource.googleblog.com/2026/04/jaspr-why-web-development-in-dart-might-just-be-a-good-idea.html">Why web development in Dart might just be a good idea</a>.</p><h3>Dart and Jaspr growing together</h3><p>One of the most rewarding aspects of building on an all-Dart stack is that improvements to the Dart language and surrounding tooling benefit everything. Not just your Flutter apps, but your websites too. Here are a few recent Dart features that have directly impacted and improved the experience of building with Jaspr.</p><p><strong>Dot shorthands make component trees cleaner.</strong> Dart 3.10 introduced support for a <a href="https://dart.dev/language/dot-shorthands">dot shorthand syntax</a> enabling you to omit the type name from static member accesses when they can be inferred from the context. Kilian took advantage of this by consolidating several component constructors onto the Component class and designing them to work naturally with the new syntax:</p><pre>Component build(BuildContext context) =&gt; const div([<br>  // After the API changes:<br>  h1([Component.text(&#39;Dash says hi!&#39;)]),<br>  Component.fragment([<br>    Component.text(&#39;First element&#39;),<br>    Component.text(&#39;Second element&#39;),<br>  ]),<br>  Component.empty(),<br><br>  // With dot shorthands:<br>  h1([.text(&#39;Dash says hi!&#39;)]),<br>  .fragment([<br>    .text(&#39;First element&#39;),<br>    .text(&#39;Second element&#39;),<br>  ]),<br>  .empty(),<br>]);</pre><p>The result was a more consistent API with better discoverability and a concise syntax that still works in constant contexts. Best of all, Jaspr’s CLI comes with a jaspr migrate command that automatically handled the migration to the new API as well as other changes.</p><p><strong>Null-aware collection elements simplify conditional rendering.</strong> Dart 3.8 added support for <a href="https://dart.dev/language/collections#null-aware-element">null-aware collection elements</a>, providing a clean syntax to conditionally include non-null values in collections. In Jaspr code, where you’re regularly composing lists of child components, they offer an elegant way to handle conditional UI elements:</p><pre>Component build(BuildContext context) =&gt; div(classes: &#39;header&#39;, [<br>  h1([.text(&#39;Welcome to Flutter!&#39;)]),<br><br>  // Before null-aware collection elements:<br>  if (eventBanner != null) eventBanner!,<br><br>  // With a null-aware collection element:<br>  ?eventBanner,<br>]);</pre><p>No more verbose if checks and not-null assertions cluttering your component trees.</p><p><strong>Modern, lightweight JS interop and compilation to WebAssembly.</strong> To enable efficient access to modern web APIs and compilation to WebAssembly, Dart 3.3 introduced new <a href="https://dart.dev/interop/js-interop">JS interop</a> libraries as well as package:web. Jaspr was quick to migrate to and support the new APIs, ensuring Jaspr developers could benefit from their new capabilities and build modern Dart apps. Building on this, Jaspr additionally supports experimental compilation to WebAssembly when running on the client. In fact, dart.dev already uses and benefits from this support on compatible browsers.</p><p><strong>A helpful, integrated analyzer plugin.</strong> For a while, Jaspr had a helpful linting package built on top of package:custom_lint, helping developers write idiomatic and correct Jaspr code. With the release of official <a href="https://dart.dev/tools/analyzer-plugins">analyzer plugin</a> support in Dart 3.10, Jaspr migrated to adopt the feature. The plugin provides a great example of what is possible, providing Jaspr-specific diagnostics and code assists. For example, it can convert between component types or quickly wrap a component with another, similar to the assists you might already be used to with Flutter.</p><p>None of these features were built specifically for Jaspr. They’re improvements to the Dart language and tooling that benefit the entire ecosystem, not just Flutter. For some of them, Jaspr was able to immediately take advantage, while others required framework changes from Kilian and contributors to unlock their potential. Either way, it’s clear that Dart keeps evolving and that evolution continues to open up improvements and possibilities for everything built with it, including Jaspr and Flutter.</p><h3>What’s next and how to get started</h3><p>We’re not done yet. Now that our websites share this new technical stack, we can start to share more code, build new interactive features, and continue to improve Dart’s web development story. We’re also migrating the Dart and Flutter blogs from Medium to being directly hosted on our Jaspr-powered sites. You’ll hopefully be able to read this very post there soon.</p><p>If you’re a Dart or Flutter developer curious about building websites with the skills you already have, there’s never been a better time to try. Jaspr is a great option for content-heavy sites, such as landing pages and documentation. It can even naturally <a href="https://docs.jaspr.site/going_further/flutter_embedding">integrate with your Flutter web apps</a>. Try it out now on Jaspr’s <a href="https://playground.jaspr.site/">online playground</a> (which is also built with Jaspr!) or by following the <a href="https://docs.jaspr.site/quick_start">Jaspr quickstart</a>.</p><p>Or, if you’re interested in contributing to the <a href="https://github.com/flutter/website">Flutter</a> or <a href="https://github.com/dart-lang/site-www">Dart</a> documentation sites, the barrier to entry just got a lot lower. Now with Jaspr, <strong>all you need is Dart</strong>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=317c00e8b400" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/we-rebuilt-flutters-websites-with-dart-and-jaspr-317c00e8b400">We rebuilt Flutter’s websites with Dart and Jaspr</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Come meet the Flutter core team on tour in 2026]]></title>
            <link>https://blog.flutter.dev/come-meet-the-flutter-core-team-on-tour-in-2026-51c3d7190e44?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/51c3d7190e44</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[mobile]]></category>
            <dc:creator><![CDATA[Emma Twersky]]></dc:creator>
            <pubDate>Tue, 14 Apr 2026 01:18:57 GMT</pubDate>
            <atom:updated>2026-04-14T01:46:42.645Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UVUiBS4ceEJmWIt8w8IeTQ.png" /><figcaption>Upcoming events where you can meet members of the Flutter team</figcaption></figure><p>The Flutter team has been hard at work preparing for Google Cloud Next and Google I/O this Spring. I strongly believe in the power of community, whether digital and online, or in-person and interactive. For Flutter, that means a truly global community and hundreds of thousands of developers around the world. Some of the most impactful moments of my career have come from those — community thrives in community-led events.</p><p>As we kick off our year and the upcoming release of Dart 3.12 and Flutter 3.44, the Flutter team is setting out to meet as many of you as possible, around the globe. Our mission is to build the most productive app framework and language for high-performance, full-stack, multi-platform applications and ephemeral experiences. And doing that means hearing from you.</p><p>To be transparent and open, we’ve updated <a href="https://flutter.dev/events">the list of events</a> where our team will be present, or we have sponsored the presence of our Google Developer Experts. Our developer relations team is constantly engaging with developers, founders, enterprises, and builders by organizing: customer and partner advisory boards, our <a href="https://flutter.dev/community">meetup organizer network</a>, <a href="https://flutter.dev/community">Flutteristas</a>, <a href="https://flutter.dev/consultants">the Flutter consultants program</a>, <a href="https://flutter.dev/community">Google Developer Experts</a>, and <a href="https://developers.google.com/community">Google Developer Group organizers</a>.</p><p>If you’ve been looking for an opportunity to connect with the team, see a live demo, or give us feedback in person, you can find us at the following events for the rest of the year:</p><h4>April</h4><ul><li><a href="https://cloud.google.com/next"><strong>Google Cloud Next</strong></a> (Las Vegas, NV) — April 22–24</li></ul><h4>May</h4><ul><li><a href="https://flutterconf.es/"><strong>Flutterconf Spain</strong></a><strong> </strong>(Malaga, Spain) — May 08</li><li><a href="https://events.google.com/io"><strong>Google I/O</strong></a> (Sunnyvale, USA) — May 19–20</li><li><a href="https://www.ffdc.io/"><strong>Flutter Flow Developers Conference</strong></a><strong> </strong>(San Francisco, CA) — May 27–28</li></ul><h4>June</h4><ul><li><a href="https://mdevcamp.eu/"><strong>mDevCamp</strong></a> (Prague, Czechia) — June 03</li><li><a href="https://www.fluttertechsummit.com/"><strong>Flutter Tech Summit</strong></a> (Warsaw, Poland) — June 09</li><li><a href="https://config.figma.com/"><strong>Config</strong></a> (San Francisco, CA) — June 23–25</li><li><strong>I/O Connect Berlin</strong> (Berlin, Germany) — June 25</li></ul><h4>July</h4><ul><li><strong>I/O Connect Bengaluru</strong> (Bengaluru, India) — July 14</li><li><a href="https://www.flutterconusa.dev/"><strong>Fluttercon USA</strong></a> (Orlando, FL) — July 16–17</li></ul><h4>August</h4><ul><li><a href="https://ai4.io/"><strong>Ai4</strong></a> (Las Vegas, NV) — August 4–6</li><li><strong>I/O Connect China</strong> (China) — TBD</li><li><a href="https://www.renderatl.com/"><strong>RenderATL</strong></a> (Atlanta, GA) — August 12–13</li></ul><h4>September</h4><ul><li><a href="https://flutterfriends.dev/"><strong>Flutter &amp; Friends</strong></a> (Stockholm, Sweden) — Sept 3–5</li><li><a href="https://flutterconflatam.dev/"><strong>FlutterConf LATAM</strong></a> (Cancún, México) — September 22–23</li></ul><h4>October</h4><ul><li><a href="https://www.nextappcon.com/"><strong>next.app devcon</strong></a><strong> </strong>(Berlin, Germany) — October 7–9</li><li><a href="https://allthingsopen.org/events/all-things-open-2026"><strong>All Things Open</strong></a> (Raleigh, NC) — October 19–20</li><li><a href="https://medium.com/flutterkaigi/flutterkaigi-2026-%E9%96%8B%E5%82%AC%E3%81%AE%E3%81%8A%E7%9F%A5%E3%82%89%E3%81%9B-f78a1421fe08"><strong>Flutter Kaigi/Ninjas</strong></a> (Tokyo, Japan) — October 29–30</li><li><a href="https://developers.google.com/community"><strong>Google for Developers events </strong></a><strong>(DevFest and Build with AI)</strong> — Throughout Fall and Winter 2026.</li></ul><p>Stay tuned and bookmark Flutter.dev’s <a href="https://flutter.dev/events">Events</a> page as we continue to add more events throughout the year.</p><p><strong>Are you hosting a Flutter event or meetup not listed here? Reach </strong><a href="mailto:dash-devrel@google.com"><strong>out to our team</strong></a><strong> to see if we can attend if we’re already in your area — we want to meet and share with as many of you as possible!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=51c3d7190e44" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/come-meet-the-flutter-core-team-on-tour-in-2026-51c3d7190e44">Come meet the Flutter core team on tour in 2026</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flutter’s Material and Cupertino code freeze]]></title>
            <link>https://blog.flutter.dev/flutters-material-and-cupertino-code-freeze-d32d94c59c38?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/d32d94c59c38</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[flutter-material-design]]></category>
            <category><![CDATA[material-design]]></category>
            <category><![CDATA[flutter-cupertino]]></category>
            <dc:creator><![CDATA[Justin McCandless]]></dc:creator>
            <pubDate>Tue, 07 Apr 2026 16:01:02 GMT</pubDate>
            <atom:updated>2026-04-07T16:01:01.852Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JN1_t6kPRkgGFVJyetZE0w.png" /><figcaption>Material and Cupertino libraries are frozen and will be moved from the Flutter framework to new packages</figcaption></figure><p>We’ve been hard at work preparing to decouple Material and Cupertino from the Framework, and now our first major milestone has arrived! As of April 7th, all contributions to the Material and Cupertino libraries in flutter/flutter are frozen. Our next milestone will be the re-release of these libraries as the <a href="https://pub.dev/packages/material_ui">material_ui</a> and <a href="https://pub.dev/packages/cupertino_ui">cupertino_ui</a> packages on pub.dev.</p><p>This means that, after the code freeze, no more changes will be allowed to the Material and Cupertino libraries inside of flutter/flutter. Further development on these libraries will resume in the <a href="https://github.com/flutter/packages">flutter/packages</a> repository once the new packages are released.</p><p><strong>If you write Flutter apps or plugins, but don’t contribute to Material or Cupertino itself, you can stop reading now. This won’t affect you… yet.</strong></p><p>After the 3.44 stable release, the new packages will be published and developers will eventually need to migrate. The old Material and Cupertino code will be deprecated in the stable release <em>after</em> 3.44 and deleted some time after that. Of course, when the time comes, we’ll follow up with detailed instructions about this migration.</p><p>For those who actively contribute to these libraries or are otherwise invested in their development, here are some things you should know:</p><h3>What if you have PRs in flight?</h3><p>Despite the code freeze, we want development on Material and Cupertino to continue with minimal interruption! Any open PRs that touch Material or Cupertino should remain open, and reviewers will continue reviewing and giving feedback as usual. Once the new packages are published, we will provide instructions on how to port these kinds of PRs to flutter/packages. Eventually, your change will go out as a part of a new material_ui or cupertino_ui release.</p><h3>How about new and existing issues related to Material and Cupertino?</h3><p>Issues that relate to Material or Cupertino will remain in flutter/flutter as always. This unified issue tracker approach is the same pattern that we follow for other packages in the flutter/packages repo and a few other repositories.</p><h3>Why freeze the code now?</h3><p>The moment that we release the 1.0.0 versions of the material_ui and cupertino_ui packages, we think it’s important to have a seamless migration process for every Flutter developer who is ready to migrate, regardless of which release channel they’re coming from. This means that we need to keep the risk of breaking changes to an absolute minimum between the Material and Cupertino libraries in flutter/flutter and in flutter/packages. We can achieve this by freezing the code one stable release cycle ahead and copying that frozen code to the new packages.</p><p>The first step in the migration process for Flutter developers is to perform a normal SDK migration to v3.44 or above on any channel. Once there, we know that they have a copy of Material and Cupertino that is frozen. Even if they upgrade their SDK again, that Material and Cupertino code will not change (until it’s deprecated and deleted in the long term). What’s more, we know that the frozen Material and Cupertino code is identical to the code in the 1.0.0 material_ui and cupertino_ui packages, or as close to identical as possible. From there, the developer can migrate from the Material and Cupertino code inside their copy of the SDK onto the material_ui and cupertino_ui packages with minimal friction.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/961/1*NkrFO7smrNSo2NofNp0EVA.png" /></figure><h3>How we got here</h3><p>It’s been a long journey to this point with <em>many</em> contributions and feedback from across the community. A few months ago when I realized that we had test dependencies that would get in the way of decoupling, I posted an <a href="https://github.com/flutter/flutter/issues/177028">issue</a> and figured I was in for a lot of migration work. Instead, contributors from across the community immediately jumped in to help migrate hundreds of tests. The support we received from first-time contributors to veterans was critical to getting us ready for decoupling. THANK YOU!</p><h3>What’s next?</h3><p>After the code freeze, we’ll begin preparing for migration to the new material_ui and cupertino_ui packages. This includes tasks like porting the code over, implementing CI/CD, testing, and setting up docs infrastructure to make sure we can keep the same high quality developer experience that you expect from Flutter.</p><p>As the new packages near readiness, we’ll publish more information about how to migrate successfully, so keep an eye out. Also, if you see anything that you think we’ve missed, please jump in with an issue or a PR. We couldn’t have gotten this far without help from the amazing Flutter community, and we can’t wait to see where we’ll go from here.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d32d94c59c38" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/flutters-material-and-cupertino-code-freeze-d32d94c59c38">Flutter’s Material and Cupertino code freeze</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Dart and Flutter are thinking about AI in 2026]]></title>
            <link>https://blog.flutter.dev/how-dart-and-flutter-are-thinking-about-ai-in-2026-e2fd64e1fdd0?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/e2fd64e1fdd0</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Mariam Hasnany]]></dc:creator>
            <pubDate>Wed, 01 Apr 2026 16:01:01 GMT</pubDate>
            <atom:updated>2026-04-01T16:01:01.359Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*acnlJyV5J3HU4jFbo2LQog.gif" /><figcaption>Dash imagines the future</figcaption></figure><p>Last month, we published <a href="https://blog.flutter.dev/flutter-darts-2026-roadmap-89378f17ebbd">Flutter and Dart’s 2026 Roadmap</a>, a peek into how our teams are approaching our core mission: Building the most popular, fastest growing, and highest-productivity multi-platform UI framework. But it’s impossible to talk about development in 2026 without acknowledging AI.</p><p>To meet this moment, today we are sharing our data-driven and honest thoughts on <em>how</em> our teams approach Dart and Flutter + AI in 2026. This post is intended to be less of a roadmap and more of a collection of thoughts guiding our strategy. Transparency is a core pillar of Flutter, and as an open source project, we believe in the value of experimentation in public. Interpret this as a snapshot of how we’re thinking about AI today; we value your input and feedback but we also recognize that, in this rapidly shifting environment, strategy and approach may change as models, tools, and their use evolve.</p><h3>The Agentic shift by the numbers</h3><p>Flutter gained initial traction by staying ahead of the curve and adapting nimbly to the needs of developers building cross-platform. Now, AI represents another variable in how we think about our ecosystem. Not because every developer needs to use AI, but because we need to consider how it’s shifting our goals for those who do.</p><p>AI adoption is no longer a future trend; it is the current reality. The <a href="https://survey.stackoverflow.co/2025/ai">2025 Stack Overflow Developer Survey</a> showed that 84% of all developers use AI tools in some way within their daily workflows, and in our <a href="https://docs.flutter.dev/reference/user-surveys">2025 Flutter User Survey</a>, we found that 79% of Flutter developers specifically report using AI assistants while working with Flutter.</p><p>However, this rapid adoption has revealed a significant “trust gap.” While <a href="https://github.blog/news-insights/research/research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/#finding-1-developer-productivity-goes-beyond-speed">73% of developers feel more productive</a> because they can reduce the friction of starting new tasks, <a href="https://survey.stackoverflow.co/2025/ai#developer-tools-ai-acc-ai-acc">46% do not yet trust the accuracy</a> of AI tools for critical tasks like writing, debugging, or fixing code. This leads to a “verification tax” — the time engineers pay auditing the output or fine-tuning instructions to achieve correctness.</p><h3>Our approach: Who we build for and the principles that guide us</h3><p>As the premier multi-platform UI framework from Google, Flutter is uniquely positioned to focus on the AI builders in our ecosystem. The principles ensure that Dart and Flutter remain the most reliable choice for developers building apps that run on any screen.</p><h4>Who we are solving for</h4><p>Our strategy addresses builders across the spectrum of AI adoption from traditional to agentic development:</p><ul><li><strong>The traditional developer:</strong> Earn trust in AI for those who depend on core Dart and Flutter tooling. Traditional developers care deeply about thinking through problems themselves and using developer tools to dig under the hood. We aim to improve the existing foundation for them, which in turn improves the quality of AI and builds trust in agentic development.</li><li><strong>The AI-assisted developer:</strong> Improve productivity with AI for those who have adopted AI coding agents in their Dart and Flutter workflows. These engineers rely on AI for repetitive, tedious tasks and boilerplate code so they can spend more time on complex functional and architectural code. Our developer experience team is exploring AI tooling such as MCP servers, Agent Skills and other solutions in this space.</li><li><strong>The AI-first developer :</strong> Make AI work for those who haven’t yet discovered Flutter is the best way to build their apps. These builders are creating apps with natural language. By recognizing where their needs overlap other personas, we ensure our framework is ready for the future of AI development. Collaborations here might include guidance on Flutter with Antigravity, and other vibe-coding products that reflect <a href="https://youtu.be/v6Rzo5khNE8?si=9sKcyc0Rlgevoe7L&amp;t=2432">“Vibe once, deploy everywhere” concept introduced at Google I/O 2025</a>.</li></ul><h4>Our driving principles</h4><ul><li><strong>Humans first:</strong> Dart remains a “human first” language. We prioritize making code readable and manageable for developers, even when it is generated by agents.</li><li><strong>Add, don’t replace:</strong> AI tools should add and improve the experience of building with Dart and Flutter. Each developer should be empowered to use AI assistance as much as they desire, and on a timeline that they choose. We intend to ensure AI is grounded in our documentation and foundational tooling as the source of truth.</li><li><strong>Open standards &amp; agent agnostic:</strong> We meet developers where they are. By leveraging open standards like the Model Context Protocol (MCP), we ensure Flutter works well with any agent you choose, not just Gemini. For example, we recently added an MCP tool to ensure hot reload can be used during AI Assisted development.</li><li><strong>Trust through quality:</strong> We aim to solve the “verification tax” by ensuring AI-generated code is accurate, idiomatic, and compliant with project standards. Ongoing investments and partnerships with Google Deepmind and Antigravity on model evaluation drive quality from the model through to AI developer tools. If you’re a model engineer, hit us up, we’d love to make your model write beautiful Dart code!</li></ul><h3>Let us know what you think</h3><p>We are intentionally experimenting in public because no one knows exactly where this space is going. We invite the community to join us, share your feedback, and help steer the future of Dart and Flutter. Comment here, on social media, or via community forums; we value your thoughts and these conversations.</p><p>… Or continue building apps without AI, that’s totally valid too, and we welcome feedback on our developer roadmap in our previous post. For a deeper dive into our plans, you can view the full <a href="https://github.com/flutter/flutter/blob/master/docs/roadmap/Roadmap.md">official 2026 Roadmap</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e2fd64e1fdd0" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/how-dart-and-flutter-are-thinking-about-ai-in-2026-e2fd64e1fdd0">How Dart and Flutter are thinking about AI in 2026</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[20 apps in 20 days with Flutter and Antigravity]]></title>
            <link>https://blog.flutter.dev/20-apps-in-20-days-with-flutter-and-antigravity-c62ce307c60b?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/c62ce307c60b</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[builders]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[google-antigravity]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <dc:creator><![CDATA[Kevin Lamenzo]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 15:42:28 GMT</pubDate>
            <atom:updated>2026-03-05T15:42:26.316Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Why I stopped planning and started building</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8qm-mMi6Hod2jBw1_2nNEw.png" /><figcaption>Dash having fun building Flutter apps.</figcaption></figure><p>Hi, I’m Kevin Lamenzo! I recently joined the Dart and Flutter teams (🎉), and this January I set out on a quest: build 20 apps in 20 days using Flutter and <a href="https://antigravity.google/">Antigravity</a>. But why? First, the cost of curiosity has officially hit zero. You can go from idea to app in 10 minutes. Second, as a new member of the team I wanted to learn about the framework by building something. Last, and most importantly, I wanted to test the theory that in 2026, we all can be builders now.</p><p>I’m here to share what I learned from the trenches. If you take only one thing from this post, let it be this: stop reading, and go build something.</p><h3>The spark</h3><p>My first app was a health tracker.</p><p>During a recent check-up, my physician “strongly suggested” that I watch my blood pressure and alcohol intake. My first reaction? “Don’t tell me what to do!” My second reaction? “I’m gonna build my own app for that.” No subscription offers, no data harvesting, no gamified onboarding. Just a simple tool that solved my specific problem.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/279/1*sV9X0IeCaF-IInvjLa4Ucg.png" /><figcaption>My first app — a personal health tracker.</figcaption></figure><h3>Why Flutter?</h3><p>I’m always on the go. I initially built a web app, which is nice, but I needed this tool to be in my pocket. Flutter makes the transition from web app to mobile app feel like magic. Antigravity barely needed to change the code.</p><p>After building the mobile version, I even opened a <a href="https://play.google.com/console/">Google Play Developer</a> account ($25), and released the app to myself as a tester. Now my creation is live on my own phone (although I still don’t have a logo or icon).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/723/1*0WJQz_1nMC95larhInedMg.png" /><figcaption>The health tracker app, with a default icon, on my phone.</figcaption></figure><h3>Tearing through ideas</h3><p>The success of building the health tracker was intoxicating. By the end of the first week, I had four more apps on my phone and I had launched an internal blog (I called it “App a Day”) to document my journey and share the messiness with my colleagues.</p><p>This felt like more than vibecoding — I was building. I was exploring my phone’s sensors, working with haptics, and even using APIs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Nrox9tKM1Jok5MQWp4q4Og.png" /><figcaption>My internal blog landing page — App a Day</figcaption></figure><h3>Hitting a wall trying to scale</h3><p>Everything wasn’t rosy. When I tried to take one of my quick idea apps and add to it every day of the week, I hit a wall.</p><p>Large scale apps are possible, but you need a different mindset. You have to lean into the architecture. You likely have to ask the agent 100 follow up questions. The more knowledge you bring to this step of the flow, the better an experience you will have. This is your excuse <a href="https://docs.flutter.dev/learn/pathway">to go learn “traditional” development</a>.</p><p>However, the beauty of the “App a Day” mentality is that you don’t always have to scale. Small apps are fast to build, helpful, and you can wake up tomorrow and move to a completely new one.</p><p>This leads to my “AI thought leadership soapbox moment”:</p><blockquote>Right now we’re all empowered to do amazing things alone, but the next frontier is <strong>collaboration</strong>. How we use our AI superpowers to work together in new ways is uncharted territory. So, if you go out and “vibe build” an app with your friends or a team, chart your journey and share it with the rest of us.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*fCJrAXkiAh4_FNu5I7L_bQ.png" /><figcaption>Dash making a point on his soapbox.</figcaption></figure><h3>My recommended flow</h3><p>I got some questions from colleagues and friends about how I was staying organized. Here’s my flow to building your own app:</p><ol><li>Get organized (<a href="https://docs.google.com/">Google Docs</a>) - I haven’t gone fully AI yet. I need something static, something familiar, a place to park my ideas. I started every app, large or small, with a Google doc. I added the date and my quick notes. This gave me a place to return to as needed.</li><li>Refine my ideas (<a href="https://gemini.google.com/">Gemini</a>) - This step is becoming a classic “AI hack”: don’t write your own prompts; write down your raw thoughts and ask an LLM to create a golden prompt for you.</li><li>Build! (<a href="https://antigravity.google/">Antigravity</a>) - Google’s new AI enabled IDE is a workhorse. By comparison, if you ask any of the popular LLMs (Gemini, ChatGPT, etc.) to “write me a book”, they can only output so much. When you ask Antigravity a complex task like this, first it makes a plan, then it works sequentially through each task in that plan. You guide it along the way. I put all of my golden prompts into Antigravity and guided it to build them into apps.</li><li>Test, iterate, repeat (also <a href="https://antigravity.google/">Antigravity</a>) - After Antigravity finishes your first build, it’s time to get hands on. Run the software. Try it out. Provide your feedback to Antigravity, and ask it to make the changes you need. Don’t know how to run a Flutter app? Just ask the Agent in Antigravity.</li><li>(optional) Deploy (Google Play, <a href="https://firebase.google.com/">Firebase</a> - I’ve already mentioned getting my apps on my phone. Another great avenue for sharing is Firebase. Not sure where to start? Ask Gemini to guide you. Firebase makes hosting your apps and adding more advanced services (like authentication, for example) much easier.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6I979gEcIqfLnPdshiXjRQ.jpeg" /></figure><h3>Breaking out of my internal blog</h3><p>The energy I got from this challenge eventually helped me explode right out of it. Instead of an internal blog, I went and launched my own personal site. Here I’m working outside the artificial bounds of building one small thing a day. Instead, I’m working on things big and small, grabbing ideas as they come, and moving on without hesitation.</p><p>Come find me at <a href="http://ladevzo.com/scrappy-path">ladevzo.com/scrappy-path</a> if you want to see how I’m applying these lessons outside the corporate firewall.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JLGrYXO8VOHh2Qp1NeHykQ.png" /><figcaption>A screenshot of ladevzo.com. Check it out!</figcaption></figure><h3>Conclusion: find your own flow</h3><p>With that said, let me conclude with this: you don’t need to build 20 apps in 20 days. Start small. Use Gemini for brainstorming. Use Antigravity to build a prototype. Before you get bogged down mastering the code, focus on transitioning from “idea” to “working reality”.</p><p>The tools are ready. Are you?</p><h3>Appendix: list of apps</h3><ol><li>Synonym slider (1 file, 207 LOC) — A simple app to provide the user with a list of synonyms for a given word. Demonstrates basic HTTP integration.</li><li>Sensor app (1 file, 228 LOC) — Interacts with device hardware using the sensors plus package.</li><li>Sino shift (1 file, 230 LOC) — A language experiment to translate English phrases and sentences into a Chinese-language-style ideograph format (Chinese languages use far fewer tokens when interacting with LLMs by virtue of their syntax)</li><li>Vip badge (1 file, 273 LOC) — Implements authentication through Firebase and Google Sign-In.</li><li>My apps widget (4 files, 305 LOC) — An Android homescreen â€œcontainerâ€ to hold all of my apps. Utilizes Android Intents to create a home screen widget.</li><li>Haptic soundboard (2 files, 311 LOC) — A soundboard application featuring audio playback capabilities.</li><li>Rusty-haiku (4 files, 403 LOC) — A simple haiku generator. Demonstrates API usage and state management with Riverpod.</li><li>Thought spot (5 files, 481 LOC) — Place a marker on a map and capture (by voice input) a thought. Features speech-to-text, maps, geolocation, and local databases.</li><li>Jolt (6 files, 494 LOC) — Focuses on local storage with shared preferences and custom UI fonts.</li><li>Accept changes (2 files, 547 LOC) — An attempt to bounce Antigravityâ€™s push notifications to my phone. Provides device feedback via notification and connects to a Realtime Database.</li><li>Street slueth (9 files, 574 LOC) — A spin on Geoguesser: a collaborative murder mystery game where you need to use Google Maps to find clues and solve a puzzle. Map-based application with user authentication and Google Street View integration.</li><li>Learn witt (7 files, 588 LOC) — A learning app for understanding Wittgenstein. Focused on user interface design using custom fonts.</li><li>Parcheesi game (5 files, 625 LOC) — A Parcheesi remake. This was an attempt at â€œonce shot promptingâ€ with Antigrabity. Manages complex logic and state using Riverpod and Equatable.</li><li>Health tracker (6 files, 641 LOC) — Personal health tracking app for monitoring daily blood pressure and alcohol intake. Manages local state and utilizes the file system for storage.</li><li>Magic octo (6 files, 692 LOC) — My take on the magic 8-ball.</li><li>Meeting helper (5 files, 778 LOC) — Productivity tool using Firebase authentication and Cloud Firestore.</li><li>Haircut log (6 files, 901 LOC) — A Google Photos integration that helps hair salons manage user haircut photos leveraging the Google Photos Library API.</li><li>Wwks (6 files, 1121 LOC) — What would Kevin say? My personalized, AI-enabled, chat interface. Combines Google Generative AI with a full Firebase backend.</li><li>Human speed (15 files, 1124 LOC) — A personal thinking tool. Allows you to self-manage context across LLM threads. Full-stack AI application structured with Riverpod, GoRouter, and Firebase.</li><li>Math facts AI(11 files, 1520 LOC) — Educational tool leveraging generative AI to teach math facts.</li><li>Workout buddy (11 files, 1582 LOC) — Workout tracker, featuring Riverpod, Cloud Functions, and Freezed code generation.</li><li>Pulse (14 files, 1928 LOC) — Large-scale project integrating generative AI, robust state management, and code generation.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wJetTyHJ1UDBBdMXq8GfIg.png" /><figcaption>Dash getting fit on the treadmill.</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c62ce307c60b" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/20-apps-in-20-days-with-flutter-and-antigravity-c62ce307c60b">20 apps in 20 days with Flutter and Antigravity</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flutter & Dart’s 2026 roadmap]]></title>
            <link>https://blog.flutter.dev/flutter-darts-2026-roadmap-89378f17ebbd?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/89378f17ebbd</guid>
            <category><![CDATA[android]]></category>
            <category><![CDATA[mobile]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[apps]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Emma Twersky]]></dc:creator>
            <pubDate>Tue, 24 Feb 2026 23:01:23 GMT</pubDate>
            <atom:updated>2026-02-24T23:01:22.425Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*Nx4rPo-suELodUsEQqLFdQ.gif" /></figure><p>Transparency is a core goal of the Flutter open source project, and today we’re happy to share our roadmap for the next generation of apps. Our mission remains largely unchanged, we’re still working toward our long-term goal of creating the most popular, fastest growing, and highest-productivity multi-platform UI framework. You can check out the <a href="https://github.com/flutter/flutter/blob/master/docs/roadmap/Roadmap.md"><strong>freshly updated roadmap on GitHub</strong></a> for all the details, and in this post we will cover the themes driving our mission.</p><p>As you dive into our plans for the year, keep in mind that this roadmap is — as it’s always been — our <strong>aspirational</strong> <strong>strategy</strong> for what’s ahead. As with any other roadmap, plans tend to shift and adapt throughout the year, so don’t be surprised if some changes happen along the way. While it primarily reflects the work our teams at Google are focusing on, the truth is that the Flutterverse is now so much bigger than any one company.</p><h3>High-fidelity multiplatform: Impeller, Wasm, and beyond</h3><p>Our driving mission is to continue to deliver the best multiplatform stack by focusing on native-level quality and performance. In 2026, we are completing the migration to the <a href="https://docs.flutter.dev/perf/impeller">Impeller</a> renderer on Android. By finally removing the legacy Skia backend on Android 10 and above, we’re ensuring smooth animations and reducing jank for every user. We continue to see Impeller as the best solution for fast startup and consistent performance.</p><p>On the web, we intend for <a href="https://webassembly.org/">WebAssembly (Wasm)</a> to become the default to deliver native-quality experiences and performance. We are also committed to deep platform integration, ensuring day-zero support for Android 17 and upcoming iOS releases, alongside multi-window support for desktop where our partners at Canonical continue to make progress.</p><h3>GenUI, ephemeral experiences and agentic apps</h3><p>We are fundamentally changing app architecture to enable agentive UIs — interfaces that aren’t just pre-built, but adapt in real-time to user intent. This is powered by the <a href="https://docs.flutter.dev/ai/genui">Flutter GenUI SDK</a> and the <a href="https://a2ui.org/">A2UI protocol</a>, enabling AI models to generate rich experiences dynamically.</p><p>To support this, we are investigating evolving the Dart language by adding support for interpreted bytecode in the Dart runtime. This enables “ephemeral” code delivery, where specific portions of an app can be loaded on demand without requiring a full app store update — a critical technical step for truly agentic apps.</p><h3>Full-stack Dart: Bring your tooling everywhere</h3><p>We are broadening our stack to support the evolution towards full-stack and agentive apps. A major focus is Dart Cloud Functions for Firebase, providing ~10ms cold starts to ensure high-performance backend logic. We are also investigating Dart support for the Google Cloud SDK to enable you to easily connect and build your backend on Google Cloud. Additionally, we are working with the Genkit team on enabling Dart support to help you build sophisticated AI features.</p><h3>AI-reimagined developer experience</h3><p>AI coding agents are disrupting the way apps are built. We’ll continue to collaborate within Google to ensure Dart and Flutter have top-tier support in <a href="https://docs.flutter.dev/ai/create-with-ai#gemini-cli">Gemini CLI</a> and Antigravity, ensuring core workflows like stateful hot reload work seamlessly with AI agents.</p><p>We are also investing in <a href="https://docs.flutter.dev/ai/mcp-server">MCP (Model Context Protocol)</a> servers for Dart tooling, enabling AI agents to perform complex refactors and choose secure, performant libraries with high accuracy by “talking” directly to the Dart analyzer.</p><h3>Sustainable open-source &amp; governance</h3><p>To unlock Flutter’s full potential, we are moving towards an open and sustainable operating model. This includes decoupling the Material and Cupertino design systems into standalone packages to accelerate development and allow them to evolve independently. We are also improving the extensibility of the Flutter Engine so support for new platforms can be authored “out-of-tree.”</p><p>We are deepening our commitment to the ecosystem by formalizing how we collaborate with stakeholders. Central to this is the expansion of our Consultancy Program, Insiders and Google Developer Expert (GDE) network, Customer Advisory Board (CAB), and Partners Advisory Board (PAB), which provide direct feedback to our teams.</p><h3>Modern syntax &amp; compiled performance</h3><p>Dart continues to evolve as a high-performance language. In 2026, we plan to ship Primary Constructors to streamline class declarations and Augmentations to simplify code generation. We will continue to focus on improving build_runner and Dart/Wasm compilation, while refactoring the analyzer to improve performance for large-scale applications.</p><h3>Bringing developers to Flutter and Dart</h3><p>Our recently completed new <a href="https://docs.flutter.dev/learn/pathway">Dart and Flutter learning pathway</a> provides a streamlined, guided onboarding path for new builders. In 2026, we plan to continue our outreach both in-person and across digital platforms to improve the experience for developers and their AI tools.</p><h3>See you at Google Cloud Next &amp; I/O!</h3><p>While this roadmap is our plan for the year, you won’t have to wait long to see the next big things from the team. Mark your calendars for <a href="https://cloud.google.com/next">Google Cloud Next 2026</a> in Las Vegas (April 22–24) and <a href="https://io.google/2026/">Google I/O 2026</a> (May 19–20). These will be the best moments to see Flutter in action next!</p><p>With non-Google contributors now outnumbering those of us employed by Google, there is an incredible amount of exciting work happening that isn’t even captured on this list! Accurate forecasting is always a challenge in an open source project, so please take this as a sincere <strong>statement of our intent</strong> and priorities rather than a fixed guarantee. We are unbelievably excited to keep building the future of apps alongside all of you and can’t wait to see what you’ll build!</p><p><strong>What are you most excited for?</strong> Let us know on socials with the hashtag <strong>#Flutter2026</strong>. And if you’re excited about hearing more from us, be sure to follow us on <a href="https://x.com/flutterdev"><strong>X</strong></a>, check out the repos on <a href="https://github.com/flutter/flutter"><strong>GitHub</strong></a>, and keep an eye on this <strong>blog</strong> for the latest updates. Let’s build the future of apps together! 🚀</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=89378f17ebbd" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/flutter-darts-2026-roadmap-89378f17ebbd">Flutter &amp; Dart’s 2026 roadmap</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What’s new in Flutter 3.41]]></title>
            <link>https://blog.flutter.dev/whats-new-in-flutter-3-41-302ec140e632?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/302ec140e632</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[release-notes]]></category>
            <category><![CDATA[announcements]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[releases]]></category>
            <dc:creator><![CDATA[Kevin Chisholm]]></dc:creator>
            <pubDate>Wed, 11 Feb 2026 19:01:01 GMT</pubDate>
            <atom:updated>2026-02-18T01:48:14.130Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XxO20lj9p2xlQfuIiwa8mg.png" /></figure><h4>Empowering the community</h4><p>Today, we’re excited to announce the release of Flutter 3.41, marking a transformative milestone in our journey together! What an exciting time to be a developer; this release represents our commitment to empowering our community in shaping the direction of Flutter. With 868 commits from 145 unique contributors, Flutter 3.41 provides additional transparency and modularity to further improve the experience of contributing to Flutter.</p><p>We are introducing public release windows to make it easier for you to know when changes you contribute would land in a stable release. We are also continuing to decouple our design libraries, which in the long term will help us evolve design systems faster, while also giving you control over which design changes you adopt in your apps. Whether you are pushing the limits of the GPU with new fragment shader improvements or embedding Flutter seamlessly into existing native apps with content-sized views, this release ensures you have the tools to build with confidence and speed.</p><p>There is so much to explore, so let’s dig right in…</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jmKuW7ItWRJAHNABfTEhHA.gif" /></figure><h3>Structural transparency and modularity</h3><h4>Public Release Windows</h4><p>Predictability is key to landing complex features safely. We are introducing public release windows to provide the entire community with the visibility needed to plan ahead. By explicitly calling out branch cutoff dates and release targets publicly, we enable the entire community to have clarity on when their changes would land in future stable releases.</p><p>So what is a branch cutoff date? This date is the deadline for pull requests to land in the default branches (main for Dart and master for Flutter) to guarantee inclusion in the next stable release. If your PR merges before the cutoff, it will ship in the next stable version. If it merges after, it waits for the following cycle.</p><p>For 2026, we plan to release four stable releases (including this one), the dates are as follows:</p><ul><li>Flutter 3.41 — Feb | Branched on 06 January</li><li>Flutter 3.44 — May | Branches on 07 April</li><li>Flutter 3.47 — August | Branches on 07 July</li><li>Flutter 3.50 — November | Branches on 06 October</li></ul><h4>Decoupling for a leaner core</h4><p>We’re continuing our project to migrate the Material and Cupertino libraries to separate packages. This modular approach has several benefits:</p><ul><li><strong>Faster release cycles:</strong> We no longer need to wait for a quarterly SDK release to ship design updates. We can release new Material or Cupertino features and bug fixes the moment they are ready.</li><li><strong>Independent upgrades:</strong> If you’re using an older SDK version due to a project constraint, you can still upgrade your design packages to get the latest look and feel.</li><li><strong>Adaptive design:</strong> Versioned packages allow us to react much faster when iOS or Android introduce drastic design shifts like “Liquid Glass” or “Material 3 Expressive”, ensuring your app never looks out of date.</li></ul><p>Keep an eye on the <a href="https://github.com/flutter/flutter/issues/101479">GitHub issue</a> to follow the progress.</p><h3>Embracing ecosystem standards</h3><p>Part of empowering the community is ensuring Flutter plays nicely with the tools we already rely on.</p><h4>Swift Package Manager and UIScene</h4><p>The transition from CocoaPods to Swift Package Manager continues. We strongly encourage <a href="https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-plugin-authors">Plugin authors</a> to adopt Swift Package Manager, as it is now the standard for the Apple ecosystem. Additionally, to ensure compatibility with future iOS releases, Flutter now fully supports the <a href="https://github.com/flutter/flutter/pull/178328">UIScene lifecycle by default</a> . This update is critical in meeting Apple’s requirements for upcoming iOS versions. To streamline migration from the deprecated AppDelegate lifecycle logic, check out our <a href="https://docs.flutter.dev/release/breaking-changes/uiscenedelegate">migration guide</a>.</p><h4>Android Grade Plugin (AGP) 9 and Kotlin DSL</h4><p>We continue to align with modern Android standards. With the release of Android Gradle Plugin (AGP) 9, we are working on supporting new strictness requirements and providing guidance on how to navigate them.</p><p><strong>Warning:</strong> <strong>Do not</strong> update your Flutter app for Android to AGP 9 as <strong>migrating plugins to AGP 9 and Flutter apps on AGP 9 using plugins</strong> is not yet supported (<a href="https://github.com/flutter/flutter/issues/181383">#181383)</a>. This support is paused while the Flutter team audits the migration for backwards compatibility with older versions of AGP. This <a href="https://docs.flutter.dev/release/breaking-changes/migrate-to-agp-9">migration doc</a> will be updated as guidance changes.</p><p>Thanks to contributions from community member <a href="https://github.com/bc-lee">Byoungchan Lee (bc-lee@)</a>, new plugin projects now default to using the Kotlin DSL for Gradle.</p><h3>Platform-specific assets</h3><p>Optimizing is now easier thanks to the work of <a href="https://github.com/hm21">Alex Frei (hm21@)</a>. You can now specify which platforms an asset should be bundled for in your pubspec.yaml. This allows optimizations such as, excluding heavy desktop assets from your mobile builds, significantly reducing app size.</p><pre>flutter:<br>  assets:<br>    - path: assets/logo.png<br>    - path: assets/web_worker.js<br>      platforms: [web]<br>    - path: assets/desktop_icon.png<br>      platforms: [windows, linux, macos]</pre><h3>Listening to the community</h3><p>The Flutter team at Google continues to prioritize what matters most to you.</p><h4>The getting started experience</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*baxbpT88lI2jDoF7fQmErQ.png" /></figure><p>For years, the community has called out that while Flutter is delightful and productive, it can be difficult to know where to begin the learning journey.</p><p>We recently launched a completely reimagined <a href="https://blog.flutter.dev/announcing-our-new-dart-and-flutter-getting-started-experience-b8c4b2be0984">Dart and Flutter Getting Started Experience</a>.</p><p>It’s a new learning pathway designed to guide you through the fundamentals of building apps with Flutter and Dart. Let’s take a quick look at some of the changes:</p><ul><li>We’ve introduced a new “quick install” guide that leverages hot-reload on the web, enabling learners to experience the full power of Flutter fast, without setting up a platform-specific environment first. A pathway consisting of written tutorials, low-stakes quizzes, and eight new videos featuring some familiar faces from the Flutter team at Google.</li><li>Learners would finish the learning path having built 4 apps completely from scratch.</li></ul><p>Give the new Getting Started Experience a try in the newly redesigned <a href="https://docs.flutter.dev/learn/pathway">Learn</a> section of our website, powered by <a href="https://jaspr.site/">Jaspr</a>.</p><h4>Fragment shader improvements</h4><p>In Q4 2025, we surveyed developers using the FragmentShader API and asked simply: <em>What is impeding your work?</em> You told us that you needed improved ergonomics when using the API, while also having more flexibility when defining your shaders. In response to that, we made the following changes:</p><ul><li>In 3.41, we added Synchronous Image Decoding. Previously, creating textures for shaders could introduce a frame of lag. With decodeImageFromPixelsSync, you can now generate textures and use them as samplers in the same frame.</li><li>We’ve also added support for High Bitrate Textures (up to 128-bit float), unlocking the ability to use high-resolution lookup tables (LUTs) for GPU-accelerated photo filters and SDFs.</li></ul><pre>void attachTexture(ui.FragmentShader shader) {<br>  ui.PictureRecorder recorder = ui.PictureRecorder();<br>  Canvas canvas = Canvas(recorder);<br>  canvas.drawCircle(const Offset(64, 64), 64, Paint()..color = Colors.red);<br>  ui.Picture picture = recorder.endRecording();<br>  ui.Image image = picture.toImageSync(<br>    128,<br>    128,<br>    targetFormat: ui.TargetPixelFormat.rFloat32,<br>  );<br>  shader.setImageSampler(0, image);<br>}</pre><h4>Widget Previews (Experimental)</h4><p>Based on your early feedback, we are iterating rapidly on Widget Previews. With this release, Widget Previews have improved as follows:</p><ul><li><strong>Flutter Inspector support:</strong> The Widget Preview environment now has access to an embedded Flutter Inspector instance, making it easy to inspect layouts and the state of previewed widgets. <strong>Important note:</strong> it might be necessary to configure additional package directories to see widgets from your project by default. To do this, open the Flutter Inspector settings by clicking the gear icon and add a new package directory pointing to your project.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*FyWSKI69_GcAv7MoAbPbww.gif" /></figure><ul><li><strong>Support for applications with </strong><strong>dart:ffi dependencies:</strong> Previously, previews that included widgets with transitive dependencies on libraries importing dart:ffi would cause compilation errors and prevent the preview environment from updating. This occurred because dart:ffi isn’t supported on web platforms (<a href="https://github.com/flutter/flutter/issues/166431">flutter/flutter#166431</a>). The widget previewer can now handle previews that have dependencies on platform-specific libraries, including dart:ffi and dart:io. <strong>Important note</strong>: invoking APIs from these libraries isn’t supported in the widget previewer and will result in an error being displayed for previews calling these platform-specific APIs. See the <a href="https://dart.dev/tools/pub/create-packages#conditionally-importing-and-exporting-library-files">Dart documentation on conditional imports</a> for examples of how to write code that’s compatible with both native and web platforms.</li></ul><h3>Framework fidelity and polish</h3><p>We continue to refine the present experience with a focus on platform fidelity and developer efficiency.</p><h4>iOS polish</h4><p>In Flutter 3.41 we’ve made visual improvements with the new “bounded blur” style. Previously, translucent widgets using the BackdropFilter could suffer from color bleeding at the edges. Thanks to improvements in the Impeller rendering engine, we have eliminated this artifact.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YQySx5fHQJ9zs7_EI_Y4_g.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tM9ItzXJAm4nN_OcyxzLCw.png" /></figure><p>We’ve also added support for native styled drag handling for CupertinoSheet through the showDragHandle property.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/824/1*ocj9sgfhhYAYFlVIqPxZmA.png" /></figure><h4>Add-to-App</h4><p>Adding Flutter views to existing Android and iOS apps is now easier! Flutter views embedded in existing native apps can now automatically resize themselves based on their content. Previously, a Flutter view needed a fixed size provided by its native parent. This made some scenarios difficult, like adding Flutter views to a native scrollable view.</p><p>To use this, your root widget must support unbounded constraints. Avoid using widgets that require a pre-defined size (like ListView or LayoutBuilder) at the top of your tree, as they will conflict with the dynamic sizing logic.</p><p>To enable this behavior on iOS, <a href="https://docs.flutter.dev/add-to-app/ios/add-flutter-screen#content-sized-views">set</a><a href="https://docs.flutter.dev/add-to-app/ios/add-flutter-screen#content-sized-views">FlutterViewController.isAutoResizable to true</a>. For Android, enable content sizing in your Android Manifest and <a href="https://docs.flutter.dev/add-to-app/android/add-flutter-view#content-sized-views">set the width or height of your FlutterView to content_wrap.</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*BU1kKyxkWidSLXOA37nPLg.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*46fO6mit5AFOq9ZY7YtRmA.gif" /></figure><h4>Navigation and scrolling</h4><p>We’ve worked hard to smooth out the rough edges in core interaction models through the following changes:</p><ul><li>We’ve introduced Navigator.popUntilWithResult, allowing you to pop multiple screens and pass a value back to the destination route in a single call, drastically simplifying state management in multi-step flows.</li><li>We reimplemented StretchingOverscrollIndicator using a simulation-based approach ported from Android 12. This ensures a more natural and fluid overscroll effect that responds correctly to high-velocity flings.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/538/1*klfeLTPZihrgBRUmUzWaIA.gif" /></figure><ul><li>We fixed an issue with pinned headers in NestedScrollView and SliverMainAxisGroup, ensuring headers correctly overlap subsequent slivers.</li></ul><h3>Accessibility</h3><p>Helping you build accessible experiences that reach users on any screen is at the heart of our mission. In this update, we’ve added the following:</p><ul><li>Native accessibility support for CircularProgressIndicator and LinearProgressIndicator, allowing assistive technologies to announce progress updates.</li><li>Flutter now respects web users’ text spacing overrides to improve the reading experience.</li><li>We’ve introduced new matchers like isSemantics and accessibilityAnnouncement in flutter_test to make validating accessibility easier.</li></ul><h3>Material and animation</h3><p>We have introduced new primitives and properties to expand control over animations and layout. Thanks to the work of community member <a href="https://github.com/bernaferrari">Bernardo Ferrari (bernaferrari@)</a>, RepeatingAnimationBuilder introduces a declarative way to create continuous animations like a loading indicator, a pulsing button, or a shimmering placeholder effect.</p><p>For example, here’s how you can make a square slide back-and-forth:</p><pre>RepeatingAnimationBuilder&lt;Offset&gt;(<br>  animatable: Tween&lt;Offset&gt;(<br>    begin: const Offset(-1.0, 0.0), <br>    end: const Offset(1.0, 0.0),<br>  ),<br>  duration: const Duration(seconds: 1),<br>  repeatMode: RepeatMode.reverse,<br>  curve: Curves.easeInOut,<br>  builder: (BuildContext context, Offset offset, Widget child) {<br>    return FractionalTranslation(<br>      translation: offset,<br>      child: child,<br>    );<br>  },<br>  child: const ColoredBox(<br>    color: Colors.green,<br>    child: SizedBox.square(dimension: 100),<br>  ),<br>),</pre><p>We also updated CarouselView with a .builder constructor, making it easier to create carousels with dynamic content. DropdownMenuFormField now supports a custom errorBuilder, and RawAutoComplete now includes an OptionsViewOpenDirection.mostSpace option to intelligently position options based on available screen space.</p><h3>Community-led evolution</h3><p>One of the strongest examples of Flutter open source partnerships is our longstanding relationship with Canonical. Their team continues to drive the Flutter Desktop roadmap forward, delivering critical features that benefit the entire ecosystem.</p><p>Thanks to Canonical’s engineering leadership, we are closing the gap on complex desktop UI requirements. This release introduces experimental APIs for creating popup windows and tooltip windows, along with cross-platform support for dialog windows on Linux, macOS, and Windows. Finally, new APIs were added to let you test multi-window apps. If you’d like a sneak peek of these upcoming windowing APIs, check out Flutter’s <a href="https://github.com/flutter/flutter/tree/master/examples/multiple_windows">multiple_windows example app</a>!</p><p>Flutter Linux now also enables merged threads by default, simplifying the threading model and improving performance while also working to improve Windows stability. We intend to remove the merged threads opt-out in a future release. If you have any issues with merged threads, please <a href="https://github.com/flutter/flutter/issues/150525">let us know</a>.</p><h3>DevTools</h3><p>Devtools has seen improvements in performance and stability:</p><ul><li>Flutter’s DevTools are compiled using dart2wasm, resulting in performance improvements. You can still opt out and revert to the dart2js-compiled DevTools by using the settings dialog.</li><li>Dropped connections to the Dart Tooling Daemon (DTD) are now automatically retried to improve the experience when your machine resumes after sleeping.</li></ul><p>These are just a couple highlights from this release. To learn about all the updates included in Flutter 3.41, check out the release notes for DevTools <a href="https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.52.0">2.52.0</a>, <a href="https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.53.0">2.53.0</a>, and <a href="https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.54.0">2.54.0</a>.</p><h3>Next Stop: flutter upgrade</h3><p>Flutter 3.41 is a step toward improving our open source contributing experience, while also improving Flutter’s foundational feature to enhance your development experience whether you are migrating a plugin to Swift Package Manager, optimizing assets for specific platforms, or pushing pixels with new Shader APIs. We are grateful for the amazing community we’ve built together.</p><p>For a comprehensive list of all the changes, be sure to check out the detailed <a href="https://docs.flutter.dev/release/breaking-changes">breaking changes</a> and <a href="https://docs.flutter.dev/release/release-notes/release-notes-3.41.0">release notes</a>. To try out the new features in Flutter 3.41, all it takes is a flutter upgrade!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=302ec140e632" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/whats-new-in-flutter-3-41-302ec140e632">What’s new in Flutter 3.41</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>