OpenSourceChoice verdict: Flet 1.0 is credible for a bounded new Python app when one team owns every target platform. Pilot it now, but do not move a critical 0.28 application until the first patch release lands and your event, packaging, accessibility and recovery tests pass. Choose direct Flutter when cross-platform UI is the product, and a normal web stack when searchable document pages are the product.
This researched analysis was checked on September 18, 2026. We reviewed the stable package, release notes, documentation, repository activity, current issues and community discussion. We did not build, sign, publish or performance-test a Flet application.
The decision at a glance
| Question | Assessment |
|---|---|
| Current stable release | Flet 1.0.0, published September 14 on GitHub and PyPI |
| Best fit | Python-heavy internal tools, data utilities and focused desktop/mobile apps |
| Poor fit | SEO-first sites, platform-native experiences and apps without cross-platform test capacity |
| Main risk | A large 0.28 migration plus a confirmed 1.0.0 component event regression with a 1.0.1 fix still under review |
| Real cost | Flutter toolchains, signing, store delivery, platform QA and server operations for dynamic web apps |
| Alternative to evaluate | Direct Flutter for a long-lived multi-platform product; an HTML-first stack for content-led web work |
Why Flet 1.0 matters now
The final 1.0.0 release arrived after a long alpha and beta cycle, and the project now calls the framework production-ready. PyPI identifies it as stable, requires Python 3.10 or newer and shows Trusted Publishing for both distributions.
Interest is not limited to the announcement. The current r/Python release thread reached 232 votes during our check, while Hacker News reached 71 points and 36 comments. Those are discovery signals, not proof of reliability. The stronger evidence is the active repository: maintainers were already preparing 1.0.1 three days after release.
What Flet does—and what it does not
Flet lets Python describe controls and handle events while Flutter renders the interface. Native packages can bundle CPython, and the build matrix targets Windows, macOS, Linux, Android, iOS and web. It fits when Python libraries matter more than matching each platform's native toolkit.
Web has two materially different modes. A static build runs Python in the browser through Pyodide and needs no Python server. A dynamic app runs Python on a server and creates a session over WebSocket for each browser connection. The first inherits WebAssembly package and threading limits; the second inherits stateful server, scaling, upload and connection operations.
Flet does not remove Flutter: builds still need its SDK, Apple targets require macOS, and stores keep their signing and review processes. It also does not turn a Flutter single-page interface into an HTML-first content site. If web discoverability is the job, compare our htmx 4 migration analysis before choosing a cross-platform UI runtime.
Who should pilot it
Flet is strongest when the team already owns Python business logic and needs a focused interface across two or three platforms: an operations console, field utility, data-review tool or companion app. Its mobile package index includes common scientific and data libraries, although availability depends on the package, Python version and target.
Do not choose it merely to avoid frontend engineering. A consumer app still needs responsive layout, accessibility, native permissions, signed releases, crash reporting and platform support. Consolidating source code does not eliminate product work.
The 1.0 migration is the largest risk
Flet's guide says 1.0 is not a drop-in replacement for 0.28. APIs were removed or renamed, services changed, extensions now move in lockstep, and synchronous handlers moved from a worker pool onto the app event loop. Blocking I/O or CPU work can now freeze input and rendering.
There is also fresh release evidence. Issue #6857 reproduces a 1.0.0 bug where a retained child component can remain visible but stop receiving clicks after its wrapper re-renders. Maintainer PR #6859 records a fix, regression coverage and 308 passing project tests, but it was still open and explicitly preparing 1.0.1 when checked. That does not make every 1.0.0 app unsafe. It does make a critical migration before the patch unnecessarily aggressive.
Operational cost, privacy and security
The framework and repository are Apache-2.0 licensed, with no framework runtime fee. Review bundled libraries and your own dependencies separately; our open-source license guide explains why one top-level license does not clear an entire shipped application.
The real cost is platform infrastructure: native SDKs, CI runners, certificates, store accounts, device testing and updates. Static web avoids a Python server but cannot use threads for blocking work; dynamic web adds WebSocket sessions and backend capacity.
Privacy follows the deployment choice. A packaged native or static browser app can keep processing on-device unless your code calls a remote service. A dynamic web app sends events and receives UI updates through your server. Flet Studio and its AI agent are optional hosted products with a separate privacy boundary; sensitive code should stay in an approved local workflow unless that service has passed review.
The repository's GitHub security page showed no SECURITY.md and no published project advisories during this review. Absence of advisories is not evidence of absence of vulnerabilities. Pin Flet and extension versions together, preserve hashes, scan the complete Python, Dart and native dependency graph, and document a private reporting route before treating the framework as an enterprise standard.
Compare direct Flutter
Direct Flutter is the principal alternative. It removes the Python-to-Dart bridge and Pyodide boundary, exposes the wider Flutter ecosystem directly and gives UI specialists the platform's native language and tooling. The price is Dart expertise and a separate integration boundary around existing Python services or models.
Choose Flet when Python code and libraries are the durable center of the application. Choose Flutter when interaction design, device integrations and long-term client performance are the durable center. For a web-only application, compare both against an HTML-first framework rather than assuming cross-platform reach is free value.
A measurable ten-day pilot
Use one representative workflow and exactly the platforms you intend to support.
- Pin Flet and every extension; record package hashes and the Flutter/Python versions.
- Implement six critical user journeys, including one blocking I/O path moved off the event loop.
- Run 100 parent/child re-render cycles with event assertions; accept zero lost or duplicate actions.
- Perform 20 cold launches per target and record median and p95 startup time, package size and first-interaction latency.
- Build, sign and install release artifacts in CI on every target; do not count
flet runas delivery proof. - Test keyboard, screen reader, scaling, offline startup, reconnect, permission denial and abrupt termination.
- Inspect network traffic and logs; no secret or sensitive record may leave the device unintentionally.
- Prove rollback to the pinned previous artifact within 30 minutes.
Pass only if the same workflow meets agreed latency and accessibility thresholds on every target, the required Python packages build without private patches, and the team can own the release pipeline. For an existing 0.28 app, add a side-by-side migration branch and wait for the stable release containing the #6857 fix before deciding.
Conclusion
Flet 1.0 crosses an important line: Python teams can now evaluate one maintained framework for native, mobile and web delivery instead of assembling a thin GUI experiment. The release also arrives with a substantial migration and an immediate component-event patch in flight.
That combination argues for a pilot, not a rejection and not a fleet-wide rewrite. Start with a new, bounded application, measure the actual target platforms, and let packaging, event correctness and recovery decide. Critical 0.28 migrations should wait for the first patch and then earn adoption through the same tests.
Sources and research record
Sources were accessed September 18, 2026. Social counts are observations from that check; project benchmarks and test totals remain project-reported.
- Release and package: Flet 1.0 announcement, GitHub v1.0.0 release and PyPI 1.0.0.
- Migration and compatibility: 0.28 to 1.0 migration guide, breaking changes and compatibility policy.
- Runtime and delivery: publishing matrix, async model, static web and dynamic web.
- Current regression: component event issue #6857 and proposed 1.0.1 fix #6859.
- License and security posture: Apache-2.0 license at v1.0.0 and repository security page.
- Alternative: Flutter multi-platform overview.
- Independent interest: r/Python release discussion and Hacker News discussion.
Build a stack for this use case.
Answer nine practical questions and compare three transparent architectures with costs, free limits, lock-in, and migration paths.
Build my stack

