Flet wants you to build a web, desktop, or mobile app from one Python file. The project lets developers write a single codebase that runs across all three platforms, with a live coding editor, testing tools, and accessibility features built in.
The simplest example starts with a counter. You drop a Text control and a button on the page, wire the button to a Python function that increments the count, and Flet turns the code into a working app. The whole thing happens in a browser-based editor called Flet Studio, where you can edit code, ask an AI agent for help, and run the app in place.
The Controls and the Code
Flet lists more than 150 controls and services, including layouts, navigation, forms, and dialogs. Each control takes customizable colors, typography, and themes. The documentation walks through building a simple counter app step by step, showing how to arrange the controls with Python and connect the button to a function that updates the count.
The code sample is short enough to paste in one sitting:
“`python
import flet as ft
def main(page: ft.Page):
counter = ft.Text(“0”, size=50, data=0)
def increment(e):
counter.data += 1
counter.value = str(counter.data)
page.floating_action_button = ft.FloatingActionButton(
icon=ft.Icons.ADD, on_click=increment
)
page.add(
ft.Container(
content=counter,
alignment=ft.Alignment.CENTER,
expand=True,
)
)
ft.run(main)
“`
Packages and Deployment
Flet supports NumPy, pandas, Pillow, and cryptography out of the box. For mobile, prebuilt packages save the work of compiling native dependencies. The app can be packaged for desktop, mobile, and web with flet build, and prepared for distribution on the App Store and Google Play.
Running in the browser is also an option. Pyodide and WebAssembly let Python run inside a web page, while the server-side route sends real-time UI updates to connected clients.
Testing and Accessibility
The testing story includes pytest support for tapping buttons, entering text, and checking user flows. Screenshot comparisons catch visual changes on iOS and Android. Flet MCP connects your coding assistant to version-specific API information, examples, icons, and CLI options.
Custom controls can be written in Python or wrapped around Flutter packages. The project also covers screen readers, labels, custom semantics, keyboard shortcuts, and inspecting the accessibility information exposed by the UI.
Live Coding and Sharing
Flet Studio runs in a browser with no installation needed. You pick an example, write Python, or ask the AI agent for a hand. The app runs and shares what you make, with links sent or projects downloaded for local editing.
The gallery and community pages invite users to share ideas, ask questions, and shape future work. Flet is open source, and contributors are welcomed.
What We Make of It
The live coding loop alone — edit, run, share — is a strong feature. The breadth of controls, deployment options, and testing tools gives developers a full set of tools for building cross-platform Python apps.
Key Facts
- 150+ controls and services
- Runs web, desktop, and mobile from one Python codebase
- Supports NumPy, pandas, Pillow, and cryptography
- Prebuilt packages for iOS and Android
- Packages apps with
flet buildfor desktop, mobile, and web - Runs in browser via Pyodide and WebAssembly
- Open source, with community contributions welcome
Related Features
- NumPy, pandas, Pillow, and cryptography support
- Prebuilt packages for iOS and Android
flet buildfor packaging- Pyodide and WebAssembly for browser runtime
- MCP for API documentation and examples
- Accessibility support for screen readers, labels, and semantics
Flet offers a live coding workflow that makes building cross-platform apps easier, and the range of controls and deployment paths gives developers real options for getting their apps out.
Source material: “Flet 1.0 – Build cross-platform apps in Python,” flet.dev.
Get the Notebook.
The day's best stories and every fresh verdict, in plain English, in your inbox by seven. One email a day, no more.

