Flet
Flet enables developers to easily build realtime web, mobile and desktop apps in Python. No frontend experience required.
Install / Use
/learn @flet-dev/FletREADME
Flet is a framework that allows building mobile, desktop and web applications in Python only without prior experience in frontend development.
<img src="https://flet.dev/img/pages/home/single-code-base.svg" width="25" align="top" /> Single code base for any device
Your app will equally look great on iOS, Android, Windows, Linux, macOS and web.
<img src="https://flet.dev/img/pages/home/python.svg" width="25" align="top" /> Build an entire app in Python
Build a cross-platform app without knowledge of Dart, Swift, Kotlin, HTML or JavaScript - only Python!
<img src="https://flet.dev/img/pages/home/controls.svg" width="25" align="top" /> 150+ built-in controls and services
Beautiful UI widgets with Material and Cupertino design: layout, navigation, dialogs, charts - Flet uses Flutter to render UI.
<img src="https://flet.dev/img/pages/home/python-packages.svg" width="25" align="top" /> 50+ Python packages for iOS and Android
Numpy, pandas, pydantic, cryptography, opencv, pillow and other popular libraries.
<img src="https://flet.dev/img/pages/home/web-support.svg" width="25" align="top" /> Full web support
Flet apps run natively in modern browsers using WebAssembly and Pyodide, with no server required. Prefer server-side? Deploy as a Python web app with real-time UI updates.
<img src="https://flet.dev/img/pages/home/packaging.svg" width="25" align="top" /> Built-in packaging
Build standalone executables or bundles for iOS, Android, Windows, Linux, macOS and web. Instantly deploy to App Store and Google Play.
<img src="https://flet.dev/img/pages/home/test-on-ios-android.svg" width="25" align="top" /> Test on iOS and Android
Test your project on your own mobile device with Flet App. See your app updates as you make changes.
<img src="https://flet.dev/img/pages/home/extensible.svg" width="25" align="top" /> Extensible
Easily wrap any of thousands of Flutter packages to use with Flet or build new controls in pure Python using built-in UI primitives.
<img src="https://flet.dev/img/pages/home/accessible.svg" width="25" align="top" /> Accessible
Flet is built with Flutter which has solid accessibility foundations on Android, iOS, web, and desktop.
Flet app example
Below is a simple "Counter" app, with a text field and two buttons to increment and decrement the counter value:
import flet as ft
def main(page: ft.Page):
page.title = "Flet counter example"
page.vertical_alignment = ft.MainAxisAlignment.CENTER
input = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, width=100)
def minus_click(e):
input.value = str(int(input.value) - 1)
def plus_click(e):
input.value = str(int(input.value) + 1)
page.add(
ft.Row(
alignment=ft.MainAxisAlignment.CENTER,
controls=[
ft.IconButton(ft.Icons.REMOVE, on_click=minus_click),
input,
ft.IconButton(ft.Icons.ADD, on_click=plus_click),
],
)
)
ft.run(main)
To run the app, install flet:
pip install 'flet[all]'
then launch the app:
flet run counter.py
This will open the app in a native OS window - what a nice alternative to Electron! 🙂
<p align="center"> <img src="https://docs.flet.dev/assets/getting-started/counter-app/macos.png" width="45%" /> </p>To run the same app as a web app use --web option with flet run command:
flet run --web counter.py
<p align="center">
<img src="https://docs.flet.dev/assets/getting-started/counter-app/safari.png" width="60%" />
</p>
Learn more
Community
Contributing
Want to help improve Flet? Check out the contribution guide.
Related Skills
node-connect
337.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
83.2kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
337.3kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
