# Flet 1.0: The Python Framework That Brings Flutter-Powered Apps to Every Platform
## A New Era for Python Cross-Platform Development
The developer landscape has long been divided by platform-specific languages. Want to build for iOS? Learn Swift. Android? Kotlin. Desktop? C# or C++. The browser? JavaScript. Flet aims to dissolve these barriers entirely by letting developers write a single language — Python — and deploy to every major platform. With the arrival of Flet 1.0, that vision has officially graduated from experimental to production-ready.
Flet is an open-source Python framework that delegates its user interface rendering to Google’s Flutter engine. Under the hood, Flutter draws Material Design and Cupertino widgets across iOS, Android, Windows, macOS, Linux, and the web browser. From the developer’s perspective, none of this Flutter complexity is visible. You write Python, and Flet translates that into polished, native-feeling interfaces. There is no need to touch Dart, Swift, Kotlin, or JavaScript at any point in the workflow.
The Flet team announced the 1.0 release approximately four years after the project first began, a timeline that reflects a substantial amount of maturation. The release is now available on PyPI under the permissive Apache 2.0 license, making it free for both individual developers and commercial teams.
—
## Getting Started and Deployment
Setting up Flet is straightforward. The SDK requires Python 3.10 or newer and can be installed with a single command: `pip install ‘flet[all]’`. Once installed, developers can begin building applications immediately using familiar Python patterns.
For production deployment, the `flet build` command generates distribution artifacts tailored to each target platform. The CLI supports eight build targets, each producing platform-specific output:
– **apk** — Android APK for direct device installation
– **aab** — Android App Bundle for Google Play Store distribution
– **ipa** — iOS application archive for the App Store
– **ios-simulator** — iOS build for testing in Apple’s simulator
– **windows** — Windows desktop application
– **macos** — macOS desktop application
– **linux** — Linux desktop application
– **web** — Web application using Pyodide for browser execution
This breadth of target support means a single codebase can serve mobile users, desktop users, and web users simultaneously without any platform-specific code branches.
—
## Comprehensive Testing and Quality Assurance
One of the most significant aspects of the 1.0 release is the maturity of the testing infrastructure. Flet runs its own framework unit tests across Python versions 3.10 through 3.14, including parallel test suites for the Flutter rendering side. This ensures that both the Python SDK and the underlying Flutter engine remain in sync and free of regressions.
The test architecture operates across multiple layers. Control and example integration tests verify both functional behavior and visual consistency by comparing screenshots, which catches bugs that might not surface through logic tests alone. Binary package tests exercise native libraries specifically on Android devices and iOS simulators.
The mobile CI pipeline builds and tests applications against Python 3.12, 3.13, and 3.14. The `flet build` integration test suite compiles applications across all six native platforms for those Python versions. The `flet test` command then takes the packaged application and drives it programmatically on five native platforms, including Linux on ARM64 architecture.
Developers can replicate this testing methodology for their own projects. Custom integration tests use the pytest framework and are executed via `flet test` against a packaged build, with automated screenshot comparison available for Android and iOS targets. This level of automated visual regression detection brings professional-grade QA tooling within reach of small teams and individual developers.
—
## Python Versions and Package Availability
Flet bundles a specific Python runtime directly into your application. For native mobile and desktop builds, developers can choose between Python 3.12, 3.13, or 3.14, each packaged alongside the app during the build process. Web builds leverage the matching Pyodide release to provide Python execution in the browser.
The Flet package index has grown substantially and now lists more than 100 compatible packages. This includes major data science and machine learning libraries such as NumPy, pandas, Matplotlib, Pillow, SciPy, and scikit-learn, as well as modern tools like pydantic-core and the cryptography library. Supporting native libraries are included where necessary.
A custom pipeline called mobile-forge automates the building of Python wheel files for iOS and Android, solving what has historically been one of the most challenging aspects of running Python on mobile devices. However, availability of specific packages still varies depending on both the package itself and the target platform.
—
## Performance Improvements in Version 1.0
Flet 1.0 introduces meaningful performance optimizations that directly impact the user experience of built applications. The framework now tracks which UI properties have actually changed and skips unnecessary comparisons during the reconciliation process. Benchmarking at version 0.83 shows up to a 6.7 times improvement in control diffing speed, meaning the interface updates faster and with less computational overhead.
For packaged native applications, a new dart-bridge architecture enables the Python runtime and the Dart runtime to communicate within a single process. This eliminates the need for socket-based communication, which was a source of latency in earlier versions. Dedicated channels are available specifically for binary data transfer, improving throughput for media-heavy applications.
Packaging also now enables bytecode compilation by default, and the Android packaging pipeline has been completely redesigned to load Python packages directly from the APK archive without extracting them to disk first. Both of these changes contribute to smaller application sizes and faster startup times.
—
## Declarative UI: A New Way to Build Interfaces
Flet 1.0 introduces a declarative UI paradigm alongside the existing imperative style. The declarative approach describes the user interface as a pure function of the application’s state. When state changes, the framework automatically rebuilds the UI to reflect the new state. This model encourages cleaner, more predictable code architecture and aligns with modern frontend philosophies popularized by frameworks like React and SwiftUI.
Flet Studio, the framework’s browser-based development environment, as well as the Flet mobile application itself, are both built using the declarative style. This serves as a living demonstration of the pattern in action. The imperative approach, which involves directly mutating control properties and calling update methods, remains fully supported for developers who prefer that style or have existing imperative codebases.
The framework’s compatibility policy is also noteworthy. APIs are deprecated before being removed, and the default deprecation window spans three minor releases. This gives development teams ample time to migrate their code when changes are introduced, reducing the risk of breaking production applications during upgrades.
—
## Developer Tools and AI Integration
Flet 1.0 comes with a suite of developer tools designed to streamline the build process and reduce context switching. Flet Studio runs entirely in the browser and features a built-in AI agent that can assist with code generation, debugging, and project scaffolding. Projects created in the browser can be downloaded for local development, giving developers the flexibility to work in whatever environment suits them best.
The Flet MCP (Model Context Protocol) server provides AI coding assistants with version-specific Flet API documentation, example code, icon references, and CLI option details. This integration helps AI tools generate accurate, framework-aware suggestions rather than generic Python code that might not align with Flet’s conventions.
—
## Key Considerations for Migrating to Flet 1.0
Developers upgrading from earlier Flet versions should be aware of an important architectural change in how event handlers operate. In version 0.28, each synchronous handler ran on its own separate thread, meaning that a blocking operation like a long `time.sleep()` call would not freeze the user interface. In Flet 1.0, all handlers execute on the application’s single event loop. A blocking call in a handler will now freeze the entire UI until it completes.
The recommended migration path is to convert synchronous handlers to asynchronous ones using Python’s `async` and `await` syntax, or to offload blocking work to a separate thread. This change aligns Flet more closely with modern asynchronous Python patterns and prevents the subtle UI freezes that were easy to overlook in the threaded model.
—
## Frequently Asked Questions
**What is Flet?**
Flet is an open-source Python framework that allows developers to build cross-platform applications using Python alone. It uses Google’s Flutter engine under the hood to render Material Design and Cupertino user interfaces on iOS, Android, Windows, macOS, Linux, and in web browsers.
**Do I need to know Flutter or Dart to use Flet?**
No. Flet abstracts away all Flutter and Dart complexity. You write Python code, and Flet handles the translation to Flutter widgets and platform-specific builds automatically.
**What Python version do I need?**
The Flet SDK requires Python 3.10 or newer. When building apps for mobile and desktop, Flet bundles Python 3.12, 3.13, or 3.14 with your application. Web builds use the corresponding Pyodide release.
**How do I install Flet?**
Install it via pip with `pip install ‘flet[all]’`. This command installs the full SDK with all dependencies included.
**What platforms can I deploy to?**
Flet supports eight build targets: Android APK, Android App Bundle, iOS IPA, iOS Simulator, Windows, macOS, Linux, and Web.
**Is Flet 1.0 ready for production use?**
Yes. The 1.0 release is explicitly intended for building production applications and is available on PyPI under the Apache 2.0 license.
**What happened to the imperative UI style?**
The imperative style is still fully supported in Flet 1.0. The framework now also offers a declarative UI style, which describes interfaces as functions of application state. Developers can choose either approach or mix them as needed.
**Why did my Flet 0.28 app’s UI freeze after upgrading?**
In Flet 1.0, event handlers run on the application event loop rather than on individual threads. Any blocking operation in a handler will freeze the UI. Converting handlers to async functions or moving blocking work to a thread resolves this issue.
**What packages are available for Flet?**
The Flet package index includes more than 100 packages, covering major libraries in data science, machine learning, image processing, and web development, including NumPy, pandas, Matplotlib, SciPy, scikit-learn, and pydantic-core.
**What is the deprecation policy?**
Flet follows a compatibility policy where APIs are deprecated before removal, with a default deprecation period of three minor releases.
—
## Conclusion
Flet 1.0 represents a significant milestone in the Python cross-platform ecosystem. After four years of development, it delivers a production-ready framework that genuinely fulfills the promise of “write once, run everywhere” without requiring developers to leave the Python ecosystem or learn platform-specific languages. The combination of a mature testing suite, performance optimizations, a rich package ecosystem, and modern developer tooling including AI assistance positions Flet as a compelling option for teams and individuals looking to build multi-platform applications efficiently.
The framework’s thoughtful design choices — from the layered testing approach that catches visual and functional regressions, to the carefully managed deprecation policy, to the dual declarative and imperative UI paradigms — demonstrate a team that has listened to developer needs and built accordingly. As the package index continues to grow and the community expands, Flet is well placed to become a go-to solution for Python developers seeking to reach multiple platforms from a single codebase.
Thank you for reading



