Skip to main content

Flet 1.0

· 10 min read
Feodor Fitsner
Flet founder and developer
Flet 1.0Flet 1.0

Today, we're releasing Flet 1.0! 🎉

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.

Since then, that idea has grown through the apps you've built, the feedback you've shared, and the contributions you've made.

Today, Flet has more than 16,700 stars on GitHub, 100 contributors and has been downloaded from PyPI more than 9,000,000 times! We've merged over 1,000 pull requests, closed 2,800 issues and our Discord community has grown to more than 6,000 members.

Getting started is easier, too: Flet Studio 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 gives your AI coding assistant up-to-date knowledge of Flet's API.

What 1.0 means

Flet 1.0 means it's ready for building production apps.

When we announced the 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.

Tests, tests, and tests!

Why 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:

  • Framework unit tests exercise the Python SDK across Python 3.10 to 3.14, alongside tests for the Flutter side of Flet.
  • Control and example integration tests check behavior and compare screenshots, helping us catch both functional bugs and visual regressions.
  • 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 for the work on Python binary packages and their integration tests!).
  • 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.
  • 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.

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 framework CI, control tests, build matrix, and on-device tests.

You can also write integration tests for your own apps 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.

If that doesn't give you confidence that the framework is stable, I don't know what will! 😅

Documentation that grows with the code

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.

We 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.

Faster updates, faster startup, better packaging

Since the alpha, we've improved the parts of Flet that affect how responsive your app feels and how easily it reaches users:

  • Faster UI reconciliation. Flet tracks changed properties and skips unnecessary comparisons when calculating updates. Our 0.83 benchmarks measured improvements of up to 6.7× in control diffing, benefiting both imperative and declarative apps.
  • Direct Python-to-Dart communication. In packaged native apps, dart-bridge 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.
  • Better packaging across platforms. We've reduced startup work, enabled bytecode compilation by default, and redesigned Android packaging so Python packages can load directly from the APK without first extracting them. See the 0.86 announcement for the details.

Your Python version, your Python libraries

Flet 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.

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.

Our package index 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 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.

Declarative UI for larger apps

Flet Declarative 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.

We use it ourselves: both Flet Studio and the Flet mobile app are declarative Flet apps. Building our own products with Flet helps us find and fix the same problems you encounter in yours.

The imperative style remains supported. See our comparison of declarative and imperative apps to choose the approach that fits your project.

A commitment to smoother upgrades

We promise not to break everything so often. :)

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.

Our 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.

Better tools for getting started

The Flet MCP server 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.

Flet Studio 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.

Ready doesn't mean finished

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.

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.

What's coming

Our 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 covers three areas:

  • 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.
  • 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.
  • Fletbase: backend services for Flet apps, including cloud packaging, publishing to app stores, static web hosting, databases, file storage, and authentication.

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; follow the roadmap as they take shape.

How to upgrade

If you use pip:

pip install 'flet[all]' --upgrade

If you use uv with pyproject.toml and want to upgrade all dependencies:

uv sync --upgrade

To upgrade only the core Flet packages:

uv sync --upgrade-package flet \
--upgrade-package flet-cli \
--upgrade-package flet-desktop \
--upgrade-package flet-web

If 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.

Before upgrading an existing app, review the 1.0 migration notes, including removed deprecated APIs and changes to InputBorder.

If 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 guide walks through it step by step, starting with dependencies and the renamed APIs. Pay particular attention to the single-threaded model: 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.

New to Flet? Follow the getting started guide or open Flet Studio and try it right in your browser.

Thank you!

To 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.

Reaching 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.

Go get Flet 1.0, build something you've been thinking about, and share it with the community! 🎉