{"article":{"slug":"flet-1-0","title":"Flet 1.0","subtitle":null,"summary":"Feodor Fitsner announces Flet 1.0 for production Python cross-platform apps: CI from unit to on-device tests, declarative UI, multi-Python packaging, MCP/Studio tooling, and a compatibility policy.","content_type":"announcement","language":"en","canonical_url":"https://flet.dev/blog/flet-1-0/","author":{"name":"Feodor Fitsner","url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"Flet","url":"https://flet.dev/","listing_slug":null,"listing":null},"topics":[{"name":"Python","slug":"python","url":"https://listedarticles.com/topics/python"},{"name":"Open Source","slug":"open-source","url":"https://listedarticles.com/topics/open-source"},{"name":"Mobile","slug":"mobile","url":"https://listedarticles.com/topics/mobile"},{"name":"Developer Tools","slug":"developer-tools","url":"https://listedarticles.com/topics/developer-tools"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":1654,"reading_minutes":7,"published_at":"2026-09-15T00:00:00.000Z","added_at":"2026-09-19T06:09:32.773Z","updated_at":"2026-09-19T06:09:32.773Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":false},"profile_url":"https://listedarticles.com/articles/flet-1-0","markdown_url":"https://listedarticles.com/articles/flet-1-0.md","example":false,"citation":"Feodor Fitsner, Flet. \"Flet 1.0.\" 15 Sept 2026. https://flet.dev/blog/flet-1-0/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://flet.dev/blog/flet-1-0/"},"body_markdown":"# Flet 1.0\n\nToday, we're releasing **Flet 1.0**! 🎉\n\nMore than four years ago, we introduced Flet with a simple idea: building a cross-platform app should be within reach of anyone who knows Python.\n\nSince then, that idea has grown through the [apps you've built](https://github.com/flet-dev/awesome-flet), the feedback you've shared, and the contributions you've made.\n\nToday, Flet has more than [16,700 stars on GitHub](https://github.com/flet-dev/flet), [100 contributors](https://github.com/flet-dev/flet/graphs/contributors) and has been downloaded from PyPI more than [9,000,000 times](https://pepy.tech/projects/flet?timeRange=threeMonths&category=version&includeCIDownloads=true&granularity=weekly&viewType=line&versions=Total%2C0.*)! We've merged over [1,000 pull requests](https://github.com/flet-dev/flet/pulls?q=is%3Apr+is%3Amerged), closed [2,800 issues](https://github.com/flet-dev/flet/issues?q=is%3Aissue%20state%3Aclosed) and our [Discord community](https://discord.gg/dzWXP8SHG8) has grown to more than 6,000 members.\n\nGetting started is easier, too: [Flet Studio](https://studio.flet.dev) lets you build, explore, and share apps in your browser with help from its AI agent. If you prefer your own editor, the [Flet MCP server](/docs/cookbook/flet-mcp) gives your AI coding assistant up-to-date knowledge of Flet's API.\n\n## What 1.0 means[](#what-10-means)\n\n**Flet 1.0 means it's ready for building production apps.**\n\nWhen we [announced the alpha](/blog/introducing-flet-1-0-alpha), we promised to make Flet more reliable, improve the docs, and add more tests. We've been working on those promises ever since, so you can build your app with confidence and keep it running as Flet grows.\n\n### Tests, tests, and tests![](#tests-tests-and-tests)\n\nWhy do we think it's ready? A big part of the answer is testing, from individual Python functions all the way to packaged apps running on devices:\n\n- **Framework unit tests** exercise the Python SDK across Python 3.10 to 3.14, alongside tests for the Flutter side of Flet.\n- **Control and example integration tests** check behavior and compare screenshots, helping us catch both functional bugs and visual regressions.\n- **Python binary package integration tests** exercise native libraries on Android and the iOS simulator. The mobile package pipeline builds for Python 3.12, 3.13, and 3.14 and supports running device tests across that matrix (a big shout-out to[@ndonkoHenri](https://github.com/ndonkoHenri) for the work on Python binary packages and their integration tests!).\n- **`flet build` integration tests** build apps with Python 3.12, 3.13, and 3.14 for Windows, macOS, Linux, iOS, Android, and web. Android and web builds are also checked from multiple host operating systems.\n- **`flet test` integration tests** go further: they launch a packaged app and interact with it on all five native platforms, across all three bundled Python versions, including Linux ARM64.\n\nThese checks are automated in CI, with unit tests running on relevant pushes and pull requests, and build and device integration suites running on relevant pull requests. You can inspect the [framework CI](https://github.com/flet-dev/flet/actions/workflows/ci.yml), [control tests](https://github.com/flet-dev/flet/actions/workflows/macos-integration-tests.yml), [build matrix](https://github.com/flet-dev/flet/actions/workflows/flet-build-test.yml), and [on-device tests](https://github.com/flet-dev/flet/actions/workflows/flet-test.yml).\n\nYou can also write [integration tests for your own apps](/docs/getting-started/integration-testing) using pytest. Run them with `flet test` against your packaged app on desktop or mobile: tap buttons, enter text, and verify complete user flows. On Android and iOS, screenshot comparisons help catch visual regressions too.\n\nIf that doesn't give you confidence that the framework is stable, I don't know what will! 😅\n\n### Documentation that grows with the code[](#documentation-that-grows-with-the-code)\n\nOur API documentation is generated from Python sources, so the descriptions you see in your editor and on the website come from the same place. Example screenshots and GIFs come from integration tests, with CI checking the rendered UI against reference images.\n\nWe even built our own tooling, **CrocoDocs**, to bring Python API documentation into Docusaurus. It connects docstrings, cross-references, runnable examples, and generated media, making it easier to keep documentation aligned with the framework. Read [how we built the documentation pipeline](/blog/flet-v-0-84-release-announcement#goodbye-mkdocs-hello-crocodocs).\n\n### Faster updates, faster startup, better packaging[](#faster-updates-faster-startup-better-packaging)\n\nSince the alpha, we've improved the parts of Flet that affect how responsive your app feels and how easily it reaches users:\n\n- **Faster UI reconciliation.** Flet tracks changed properties and skips unnecessary comparisons when calculating updates. Our[0.83 benchmarks](/blog/flet-v-0-83-release-announcement#faster-control-diffing) measured improvements of up to 6.7× in control diffing, benefiting both imperative and declarative apps.\n- **Direct Python-to-Dart communication.** In packaged native apps,[dart-bridge](/blog/flet-v-0-86-release-announcement#dart-bridge-in-process-python--dart) lets the two runtimes communicate within the same process, without sockets. Dedicated data channels also make it practical to stream images and other binary data efficiently.\n- **Better packaging across platforms.** We've reduced startup work, enabled bytecode compilation by default, and[redesigned Android packaging](/blog/flet-v-0-86-release-announcement#re-designed-android-packaging) so Python packages can load directly from the APK without first extracting them. See the[0.86 announcement](/blog/flet-v-0-86-release-announcement) for the details.\n\n### Your Python version, your Python libraries[](#your-python-version-your-python-libraries)\n\nFlet can bundle **Python 3.12, 3.13, or 3.14** with your app. Choose the version that works for your dependencies and move to a newer runtime when you're ready. Web builds use the corresponding Pyodide release. See [how to choose a Python version](/docs/publish#choosing-a-python-version).\n\nAnd Python should still feel like Python when your app runs on a phone. That means being able to use the libraries you already rely on.\n\nOur [package index](https://pypi.flet.dev) now contains **more than 100 packages**, including NumPy, pandas, Matplotlib, Pillow, SciPy, scikit-learn, cryptography, and pydantic-core, along with supporting native libraries. Our [mobile-forge pipeline](https://github.com/flet-dev/mobile-forge) automates building wheels for iOS and Android across supported Python versions, with integration tests to exercise packages on mobile. Availability depends on the package and target, but you no longer have to start by figuring out how to cross-compile a native dependency yourself.\n\n### Declarative UI for larger apps[](#declarative-ui-for-larger-apps)\n\n[Flet Declarative](/blog/introducing-declarative-ui-in-flet) lets you describe the UI as a function of application state and organize it into reusable components. As an app grows, that makes it easier to reason about changes than manually keeping controls synchronized across many event handlers.\n\nWe use it ourselves: both [Flet Studio](https://studio.flet.dev) and the [Flet mobile app](/docs/getting-started/testing-on-mobile) are declarative Flet apps. Building our own products with Flet helps us find and fix the same problems you encounter in yours.\n\nThe imperative style remains supported. See our [comparison of declarative and imperative apps](/docs/cookbook/declarative-vs-imperative) to choose the approach that fits your project.\n\n### A commitment to smoother upgrades[](#a-commitment-to-smoother-upgrades)\n\nWe promise not to break everything so often. :)\n\nMore seriously, we know that every API change can mean work for someone maintaining an app. With 1.0, our goal is to make upgrades more predictable, give you time to adapt, and explain what needs changing.\n\nOur [compatibility policy](/docs/updates/compatibility-policy) describes how this works: when possible, APIs are deprecated before removal, with warnings and documentation pointing you toward their replacements. The default deprecation period is three minor releases, with exceptions explained in release notes or migration guidance. Changes that require action are collected in [breaking changes and deprecations](/docs/updates/breaking-changes).\n\n### Better tools for getting started[](#better-tools-for-getting-started)\n\nThe [Flet MCP server](/docs/cookbook/flet-mcp) gives your AI coding assistant access to version-specific Flet API information, with additional tools for finding examples, icons, and CLI options. It helps the assistant work with the API you're actually using.\n\n[Flet Studio](https://studio.flet.dev) gives you a place to explore Flet in your browser: try examples, fork an app, edit it, and share it with someone else. Its built-in AI agent can help you get a first version running, and you can download the project to continue developing locally. It's an easy way to go from \"I wonder if I could build this\" to something you can try.\n\n### Ready doesn't mean finished[](#ready-doesnt-mean-finished)\n\nWe believe Flet 1.0 is ready for production apps. At the same time, 1.0 is just a milestone, and Flet will continue to evolve.\n\nThere will be bugs to fix, APIs to improve, and workflows that could be easier. We will keep working on performance, platform support, documentation, and the everyday details that make a framework pleasant to use.\n\n## What's coming[](#whats-coming)\n\nOur next chapter is about improving the Flet framework and making the whole experience of building, shipping, and using Flet apps better. The [roadmap for 2026 and 2027](/roadmap) covers three areas:\n\n- **Flet Framework:** newer Flutter and Python versions, more UI choices such as shadcn, Fluent, macOS, and Yaru controls, BLE and NFC support, more sensor examples, and continued documentation improvements.\n- **Flet Studio:** GitHub integration, a desktop version, a richer Gallery, and MCP support for Studio. We also plan a CLI for accessing Studio services from your local development workflow.\n- **Fletbase:** backend services for Flet apps, including cloud packaging, publishing to app stores, static web hosting, databases, file storage, and authentication.\n\nThe goal is to let you spend more time building your app while the tools help with the work around it, from the first experiment to publishing and maintaining it. These are our plans for the coming releases; [follow the roadmap](/roadmap) as they take shape.\n\n## How to upgrade[](#how-to-upgrade)\n\nIf you use pip:\n\n```\npip install 'flet[all]' --upgrade\n```\nIf you use uv with `pyproject.toml` and want to upgrade all dependencies:\n\n```\nuv sync --upgrade\n```\nTo upgrade only the core Flet packages:\n\n```\nuv sync --upgrade-package flet \\\n  --upgrade-package flet-cli \\\n  --upgrade-package flet-desktop \\\n  --upgrade-package flet-web\n```\nIf your project pins an older Flet version, update the version constraints in `pyproject.toml` or `requirements.txt` first. Update any Flet extension packages you use, such as `flet-audio` or `flet-video`, to their matching 1.0 release as well.\n\nBefore upgrading an existing app, review the [1.0 migration notes](/docs/updates/breaking-changes#released-in-flet-100), including removed deprecated APIs and changes to `InputBorder`.\n\nIf you're moving from **0.28.x**, this is a larger migration - Flet 1.0 is not a drop-in replacement. The new [Migrating from Flet 0.28 to 1.0](/docs/updates/migrate-to-1-0) guide walks through it step by step, starting with dependencies and the renamed APIs. Pay particular attention to [the single-threaded model](/docs/updates/migrate-to-1-0#step-3-your-app-runs-on-one-thread-now): in 0.28 every sync event handler ran on its own thread, so blocking code never froze the UI. In 1.0 handlers run on the app's event loop, and code that was fine before will make a migrated app feel unresponsive until it's moved off the loop.\n\nNew to Flet? Follow the [getting started guide](/docs) or open [Flet Studio](https://studio.flet.dev) and try it right in your browser.\n\n## Thank you! ❤️[](#thank-you-️)\n\nTo everyone who contributed code, reported a bug, improved an example, answered a question, or trusted Flet with an app: **thank you** 🙏🏻. You helped us get here.\n\nReaching 1.0 is a moment we're proud of, and we're excited to see what you build with it. If you've been waiting for 1.0 to give Flet a try, today is the day.\n\nGo get Flet 1.0, build something you've been dreaming about, and [share it with the community](https://discord.gg/dzWXP8SHG8)! 🎉","body_html":"<h1 id=\"flet-1-0\">Flet 1.0</h1>\n<p>Today, we&#39;re releasing <strong>Flet 1.0</strong>! 🎉</p>\n<p>More than four years ago, we introduced Flet with a simple idea: building a cross-platform app should be within reach of anyone who knows Python.</p>\n<p>Since then, that idea has grown through the <a href=\"https://github.com/flet-dev/awesome-flet\" rel=\"nofollow ugc noopener\">apps you&#39;ve built</a>, the feedback you&#39;ve shared, and the contributions you&#39;ve made.</p>\n<p>Today, Flet has more than <a href=\"https://github.com/flet-dev/flet\" rel=\"nofollow ugc noopener\">16,700 stars on GitHub</a>, <a href=\"https://github.com/flet-dev/flet/graphs/contributors\" rel=\"nofollow ugc noopener\">100 contributors</a> and has been downloaded from PyPI more than <a href=\"https://pepy.tech/projects/flet?timeRange=threeMonths&amp;category=version&amp;includeCIDownloads=true&amp;granularity=weekly&amp;viewType=line&amp;versions=Total%2C0.*\" rel=\"nofollow ugc noopener\">9,000,000 times</a>! We&#39;ve merged over <a href=\"https://github.com/flet-dev/flet/pulls?q=is%3Apr+is%3Amerged\" rel=\"nofollow ugc noopener\">1,000 pull requests</a>, closed <a href=\"https://github.com/flet-dev/flet/issues?q=is%3Aissue%20state%3Aclosed\" rel=\"nofollow ugc noopener\">2,800 issues</a> and our <a href=\"https://discord.gg/dzWXP8SHG8\" rel=\"nofollow ugc noopener\">Discord community</a> has grown to more than 6,000 members.</p>\n<p>Getting started is easier, too: <a href=\"https://studio.flet.dev\" rel=\"nofollow ugc noopener\">Flet Studio</a> lets you build, explore, and share apps in your browser with help from its AI agent. If you prefer your own editor, the <a href=\"/docs/cookbook/flet-mcp\">Flet MCP server</a> gives your AI coding assistant up-to-date knowledge of Flet&#39;s API.</p>\n<h2 id=\"what-1-0-means\">What 1.0 means<a href=\"#what-10-means\"></a></h2>\n<p><strong>Flet 1.0 means it&#39;s ready for building production apps.</strong></p>\n<p>When we <a href=\"/blog/introducing-flet-1-0-alpha\">announced the alpha</a>, we promised to make Flet more reliable, improve the docs, and add more tests. We&#39;ve been working on those promises ever since, so you can build your app with confidence and keep it running as Flet grows.</p>\n<h3 id=\"tests-tests-and-tests\">Tests, tests, and tests</h3>\n<p>Why do we think it&#39;s ready? A big part of the answer is testing, from individual Python functions all the way to packaged apps running on devices:</p>\n<ul><li><strong>Framework unit tests</strong> exercise the Python SDK across Python 3.10 to 3.14, alongside tests for the Flutter side of Flet.</li><li><strong>Control and example integration tests</strong> check behavior and compare screenshots, helping us catch both functional bugs and visual regressions.</li><li><strong>Python binary package integration tests</strong> exercise native libraries on Android and the iOS simulator. The mobile package pipeline builds for Python 3.12, 3.13, and 3.14 and supports running device tests across that matrix (a big shout-out to<a href=\"https://github.com/ndonkoHenri\" rel=\"nofollow ugc noopener\">@ndonkoHenri</a> for the work on Python binary packages and their integration tests!).</li><li><strong><code>flet build</code> integration tests</strong> build apps with Python 3.12, 3.13, and 3.14 for Windows, macOS, Linux, iOS, Android, and web. Android and web builds are also checked from multiple host operating systems.</li><li><strong><code>flet test</code> integration tests</strong> go further: they launch a packaged app and interact with it on all five native platforms, across all three bundled Python versions, including Linux ARM64.</li></ul>\n<p>These checks are automated in CI, with unit tests running on relevant pushes and pull requests, and build and device integration suites running on relevant pull requests. You can inspect the <a href=\"https://github.com/flet-dev/flet/actions/workflows/ci.yml\" rel=\"nofollow ugc noopener\">framework CI</a>, <a href=\"https://github.com/flet-dev/flet/actions/workflows/macos-integration-tests.yml\" rel=\"nofollow ugc noopener\">control tests</a>, <a href=\"https://github.com/flet-dev/flet/actions/workflows/flet-build-test.yml\" rel=\"nofollow ugc noopener\">build matrix</a>, and <a href=\"https://github.com/flet-dev/flet/actions/workflows/flet-test.yml\" rel=\"nofollow ugc noopener\">on-device tests</a>.</p>\n<p>You can also write <a href=\"/docs/getting-started/integration-testing\">integration tests for your own apps</a> using pytest. Run them with <code>flet test</code> against your packaged app on desktop or mobile: tap buttons, enter text, and verify complete user flows. On Android and iOS, screenshot comparisons help catch visual regressions too.</p>\n<p>If that doesn&#39;t give you confidence that the framework is stable, I don&#39;t know what will! 😅</p>\n<h3 id=\"documentation-that-grows-with-the-code\">Documentation that grows with the code<a href=\"#documentation-that-grows-with-the-code\"></a></h3>\n<p>Our API documentation is generated from Python sources, so the descriptions you see in your editor and on the website come from the same place. Example screenshots and GIFs come from integration tests, with CI checking the rendered UI against reference images.</p>\n<p>We even built our own tooling, <strong>CrocoDocs</strong>, to bring Python API documentation into Docusaurus. It connects docstrings, cross-references, runnable examples, and generated media, making it easier to keep documentation aligned with the framework. Read <a href=\"/blog/flet-v-0-84-release-announcement#goodbye-mkdocs-hello-crocodocs\">how we built the documentation pipeline</a>.</p>\n<h3 id=\"faster-updates-faster-startup-better-packaging\">Faster updates, faster startup, better packaging<a href=\"#faster-updates-faster-startup-better-packaging\"></a></h3>\n<p>Since the alpha, we&#39;ve improved the parts of Flet that affect how responsive your app feels and how easily it reaches users:</p>\n<ul><li><strong>Faster UI reconciliation.</strong> Flet tracks changed properties and skips unnecessary comparisons when calculating updates. Our<a href=\"/blog/flet-v-0-83-release-announcement#faster-control-diffing\">0.83 benchmarks</a> measured improvements of up to 6.7× in control diffing, benefiting both imperative and declarative apps.</li><li><strong>Direct Python-to-Dart communication.</strong> In packaged native apps,<a href=\"/blog/flet-v-0-86-release-announcement#dart-bridge-in-process-python--dart\">dart-bridge</a> lets the two runtimes communicate within the same process, without sockets. Dedicated data channels also make it practical to stream images and other binary data efficiently.</li><li><strong>Better packaging across platforms.</strong> We&#39;ve reduced startup work, enabled bytecode compilation by default, and<a href=\"/blog/flet-v-0-86-release-announcement#re-designed-android-packaging\">redesigned Android packaging</a> so Python packages can load directly from the APK without first extracting them. See the<a href=\"/blog/flet-v-0-86-release-announcement\">0.86 announcement</a> for the details.</li></ul>\n<h3 id=\"your-python-version-your-python-libraries\">Your Python version, your Python libraries<a href=\"#your-python-version-your-python-libraries\"></a></h3>\n<p>Flet can bundle <strong>Python 3.12, 3.13, or 3.14</strong> with your app. Choose the version that works for your dependencies and move to a newer runtime when you&#39;re ready. Web builds use the corresponding Pyodide release. See <a href=\"/docs/publish#choosing-a-python-version\">how to choose a Python version</a>.</p>\n<p>And Python should still feel like Python when your app runs on a phone. That means being able to use the libraries you already rely on.</p>\n<p>Our <a href=\"https://pypi.flet.dev\" rel=\"nofollow ugc noopener\">package index</a> now contains <strong>more than 100 packages</strong>, including NumPy, pandas, Matplotlib, Pillow, SciPy, scikit-learn, cryptography, and pydantic-core, along with supporting native libraries. Our <a href=\"https://github.com/flet-dev/mobile-forge\" rel=\"nofollow ugc noopener\">mobile-forge pipeline</a> automates building wheels for iOS and Android across supported Python versions, with integration tests to exercise packages on mobile. Availability depends on the package and target, but you no longer have to start by figuring out how to cross-compile a native dependency yourself.</p>\n<h3 id=\"declarative-ui-for-larger-apps\">Declarative UI for larger apps<a href=\"#declarative-ui-for-larger-apps\"></a></h3>\n<p><a href=\"/blog/introducing-declarative-ui-in-flet\">Flet Declarative</a> lets you describe the UI as a function of application state and organize it into reusable components. As an app grows, that makes it easier to reason about changes than manually keeping controls synchronized across many event handlers.</p>\n<p>We use it ourselves: both <a href=\"https://studio.flet.dev\" rel=\"nofollow ugc noopener\">Flet Studio</a> and the <a href=\"/docs/getting-started/testing-on-mobile\">Flet mobile app</a> are declarative Flet apps. Building our own products with Flet helps us find and fix the same problems you encounter in yours.</p>\n<p>The imperative style remains supported. See our <a href=\"/docs/cookbook/declarative-vs-imperative\">comparison of declarative and imperative apps</a> to choose the approach that fits your project.</p>\n<h3 id=\"a-commitment-to-smoother-upgrades\">A commitment to smoother upgrades<a href=\"#a-commitment-to-smoother-upgrades\"></a></h3>\n<p>We promise not to break everything so often. :)</p>\n<p>More seriously, we know that every API change can mean work for someone maintaining an app. With 1.0, our goal is to make upgrades more predictable, give you time to adapt, and explain what needs changing.</p>\n<p>Our <a href=\"/docs/updates/compatibility-policy\">compatibility policy</a> describes how this works: when possible, APIs are deprecated before removal, with warnings and documentation pointing you toward their replacements. The default deprecation period is three minor releases, with exceptions explained in release notes or migration guidance. Changes that require action are collected in <a href=\"/docs/updates/breaking-changes\">breaking changes and deprecations</a>.</p>\n<h3 id=\"better-tools-for-getting-started\">Better tools for getting started<a href=\"#better-tools-for-getting-started\"></a></h3>\n<p>The <a href=\"/docs/cookbook/flet-mcp\">Flet MCP server</a> gives your AI coding assistant access to version-specific Flet API information, with additional tools for finding examples, icons, and CLI options. It helps the assistant work with the API you&#39;re actually using.</p>\n<p><a href=\"https://studio.flet.dev\" rel=\"nofollow ugc noopener\">Flet Studio</a> gives you a place to explore Flet in your browser: try examples, fork an app, edit it, and share it with someone else. Its built-in AI agent can help you get a first version running, and you can download the project to continue developing locally. It&#39;s an easy way to go from &quot;I wonder if I could build this&quot; to something you can try.</p>\n<h3 id=\"ready-doesn-t-mean-finished\">Ready doesn&#39;t mean finished<a href=\"#ready-doesnt-mean-finished\"></a></h3>\n<p>We believe Flet 1.0 is ready for production apps. At the same time, 1.0 is just a milestone, and Flet will continue to evolve.</p>\n<p>There will be bugs to fix, APIs to improve, and workflows that could be easier. We will keep working on performance, platform support, documentation, and the everyday details that make a framework pleasant to use.</p>\n<h2 id=\"what-s-coming\">What&#39;s coming<a href=\"#whats-coming\"></a></h2>\n<p>Our next chapter is about improving the Flet framework and making the whole experience of building, shipping, and using Flet apps better. The <a href=\"/roadmap\">roadmap for 2026 and 2027</a> covers three areas:</p>\n<ul><li><strong>Flet Framework:</strong> newer Flutter and Python versions, more UI choices such as shadcn, Fluent, macOS, and Yaru controls, BLE and NFC support, more sensor examples, and continued documentation improvements.</li><li><strong>Flet Studio:</strong> GitHub integration, a desktop version, a richer Gallery, and MCP support for Studio. We also plan a CLI for accessing Studio services from your local development workflow.</li><li><strong>Fletbase:</strong> backend services for Flet apps, including cloud packaging, publishing to app stores, static web hosting, databases, file storage, and authentication.</li></ul>\n<p>The goal is to let you spend more time building your app while the tools help with the work around it, from the first experiment to publishing and maintaining it. These are our plans for the coming releases; <a href=\"/roadmap\">follow the roadmap</a> as they take shape.</p>\n<h2 id=\"how-to-upgrade\">How to upgrade<a href=\"#how-to-upgrade\"></a></h2>\n<p>If you use pip:</p>\n<pre><code>pip install &#39;flet[all]&#39; --upgrade</code></pre>\n<p>If you use uv with <code>pyproject.toml</code> and want to upgrade all dependencies:</p>\n<pre><code>uv sync --upgrade</code></pre>\n<p>To upgrade only the core Flet packages:</p>\n<pre><code>uv sync --upgrade-package flet \\\n  --upgrade-package flet-cli \\\n  --upgrade-package flet-desktop \\\n  --upgrade-package flet-web</code></pre>\n<p>If your project pins an older Flet version, update the version constraints in <code>pyproject.toml</code> or <code>requirements.txt</code> first. Update any Flet extension packages you use, such as <code>flet-audio</code> or <code>flet-video</code>, to their matching 1.0 release as well.</p>\n<p>Before upgrading an existing app, review the <a href=\"/docs/updates/breaking-changes#released-in-flet-100\">1.0 migration notes</a>, including removed deprecated APIs and changes to <code>InputBorder</code>.</p>\n<p>If you&#39;re moving from <strong>0.28.x</strong>, this is a larger migration - Flet 1.0 is not a drop-in replacement. The new <a href=\"/docs/updates/migrate-to-1-0\">Migrating from Flet 0.28 to 1.0</a> guide walks through it step by step, starting with dependencies and the renamed APIs. Pay particular attention to <a href=\"/docs/updates/migrate-to-1-0#step-3-your-app-runs-on-one-thread-now\">the single-threaded model</a>: in 0.28 every sync event handler ran on its own thread, so blocking code never froze the UI. In 1.0 handlers run on the app&#39;s event loop, and code that was fine before will make a migrated app feel unresponsive until it&#39;s moved off the loop.</p>\n<p>New to Flet? Follow the <a href=\"/docs\">getting started guide</a> or open <a href=\"https://studio.flet.dev\" rel=\"nofollow ugc noopener\">Flet Studio</a> and try it right in your browser.</p>\n<h2 id=\"thank-you\">Thank you! ❤️<a href=\"#thank-you-️\"></a></h2>\n<p>To everyone who contributed code, reported a bug, improved an example, answered a question, or trusted Flet with an app: <strong>thank you</strong> 🙏🏻. You helped us get here.</p>\n<p>Reaching 1.0 is a moment we&#39;re proud of, and we&#39;re excited to see what you build with it. If you&#39;ve been waiting for 1.0 to give Flet a try, today is the day.</p>\n<p>Go get Flet 1.0, build something you&#39;ve been dreaming about, and <a href=\"https://discord.gg/dzWXP8SHG8\" rel=\"nofollow ugc noopener\">share it with the community</a>! 🎉</p>","headings":[{"level":1,"text":"Flet 1.0","id":"flet-1-0"},{"level":2,"text":"What 1.0 means","id":"what-1-0-means"},{"level":3,"text":"Tests, tests, and tests","id":"tests-tests-and-tests"},{"level":3,"text":"Documentation that grows with the code","id":"documentation-that-grows-with-the-code"},{"level":3,"text":"Faster updates, faster startup, better packaging","id":"faster-updates-faster-startup-better-packaging"},{"level":3,"text":"Your Python version, your Python libraries","id":"your-python-version-your-python-libraries"},{"level":3,"text":"Declarative UI for larger apps","id":"declarative-ui-for-larger-apps"},{"level":3,"text":"A commitment to smoother upgrades","id":"a-commitment-to-smoother-upgrades"},{"level":3,"text":"Better tools for getting started","id":"better-tools-for-getting-started"},{"level":3,"text":"Ready doesn't mean finished","id":"ready-doesn-t-mean-finished"},{"level":2,"text":"What's coming","id":"what-s-coming"},{"level":2,"text":"How to upgrade","id":"how-to-upgrade"},{"level":2,"text":"Thank you! ❤️","id":"thank-you"}]}}