website/blog/2026-02-24-flet-v-0-81-release-announcement.md
Flet 0.81.0 is now available with new controls, better platform integration, and build workflow improvements.
Highlights in this release:
Camera, CodeEditor, PageView, color pickers, RotatedBox.Hero animations and Matrix4 transforms.flet build ios-simulator and flet build --artifact.Clipboard APIs for images and files.FilePicker support for direct file content (with_data=True).LayoutControl.on_size_change event for size-aware UI.If you use pip:
pip install 'flet[all]' --upgrade
If you use uv with pyproject.toml and want to upgrade everything:
uv sync --upgrade
If you want to upgrade only Flet packages:
uv sync --upgrade-package flet \
--upgrade-package flet-cli \
--upgrade-package flet-desktop \
--upgrade-package flet-web
On Linux, your project might use flet-desktop-light instead of flet-desktop. In that case, upgrade flet-desktop-light package instead.
CameraCamera is a new control for live camera preview, image capture, video recording, and frame streaming.
It is currently supported on web, iOS, and Android, which makes it practical for cross-platform scanning, media capture, and computer vision scenarios from a single Flet codebase.
import flet as ft
import flet_camera as fc
def main(page: ft.Page):
page.add(
fc.Camera(
expand=True,
preview_enabled=True,
)
)
ft.run(main)
More info:
CodeEditorCodeEditor brings an embedded source editor into Flet apps.
This is useful for developer tools, education apps, playgrounds, and it is also part of the groundwork for the upcoming FletPad experience.
import flet as ft
import flet_code_editor as fce
def main(page: ft.Page):
page.add(
fce.CodeEditor(
language=fce.CodeLanguage.PYTHON,
code_theme=fce.CodeTheme.ATOM_ONE_LIGHT,
value="print('Hello, Flet')",
expand=True,
)
)
ft.run(main)
More info:
PageViewPageView provides swipe-based paging with viewport control and programmatic navigation.
It solves a common mobile-style UX need for onboarding, content carousels, step-by-step flows, and story-like interfaces.
import flet as ft
def main(page: ft.Page):
page.add(
ft.PageView(
expand=True,
viewport_fraction=0.9,
selected_index=1,
controls=[
ft.Container(
bgcolor=ft.Colors.INDIGO_400,
alignment=ft.Alignment.CENTER,
content=ft.Text("Page 1", size=24, color=ft.Colors.WHITE),
),
ft.Container(
bgcolor=ft.Colors.PINK_300,
alignment=ft.Alignment.CENTER,
content=ft.Text("Page 2", size=24, color=ft.Colors.WHITE),
),
ft.Container(
bgcolor=ft.Colors.TEAL_300,
alignment=ft.Alignment.CENTER,
content=ft.Text("Page 3", size=24, color=ft.Colors.WHITE),
),
],
)
)
ft.run(main)
More info:
Flet now includes multiple color picker controls powered by flutter_colorpicker.
This makes it easier to build design tools, theming UIs, and customization dialogs without third-party integration work.
import flet as ft
from flet_color_pickers import MaterialPicker
def main(page: ft.Page):
page.add(
MaterialPicker(
color="#ff9800",
on_color_change=lambda e: print(e.data),
)
)
ft.run(main)
More info:
Hero animationsHero animations add shared-element transitions between routes.
They solve abrupt navigation changes by visually connecting matching elements across screens, which improves perceived continuity and polish.
More info:
Matrix4 transforms and RotatedBoxThis release adds Matrix4-based transforms to LayoutControl.transform and introduces RotatedBox.
Together, they cover both advanced transform pipelines and layout-aware quarter-turn rotation. This helps when building rich interactions, visual effects, and precise UI compositions.
import flet as ft
from math import pi
def main(page: ft.Page):
page.add(
ft.Container(
width=220,
height=130,
bgcolor=ft.Colors.CYAN_300,
transform=ft.Transform(
matrix=ft.Matrix4.identity().set_entry(3, 2, 0.0018).rotate_y(pi / 8)
),
),
ft.RotatedBox(quarter_turns=1, content=ft.Text("Rotated")),
)
ft.run(main)
More info:
LayoutControl docs: https://flet.dev/docs/controls/layoutcontrol/RotatedBox docs: https://flet.dev/docs/controls/rotatedbox/Packaging for iOS simulator now produces an unsigned .app you can drag and drop into the simulator:
flet build ios-simulator
At the same time, flet build --artifact gives better control over output artifact naming without affecting bundle IDs:
flet build macos --artifact "My Awesome App"
More info:
Clipboard, FilePicker, locales, and size-aware layoutsThis release improves app integration with operating systems and browsers:
Clipboard can now get/set images and files.FilePicker can return picked file content as bytes with with_data=True.LayoutControl.on_size_change helps build size-aware UI logic.import flet as ft
def main(page: ft.Page):
async def pick_text_file(_):
files = await ft.FilePicker().pick_files(with_data=True)
print(files[0].bytes if files else None)
page.add(ft.Button("Pick file", on_click=pick_text_file))
ft.run(main)
import flet as ft
def main(page: ft.Page):
def handle_size_change(e: ft.LayoutSizeChangeEvent[ft.Container]):
e.control.content.value = f"{int(e.width)} x {int(e.height)}"
page.add(
ft.Container(
expand=True,
content=ft.Text(),
on_size_change=handle_size_change,
)
)
ft.run(main)
More info:
Clipboard docs: https://flet.dev/docs/services/clipboard/FilePicker docs: https://flet.dev/docs/services/filepicker/LayoutControl docs: https://flet.dev/docs/controls/layoutcontrol/0.81.0 reduces memory churn in control diffing algorithm, which is especially important for web apps with frequent UI diffs.
object_patch memory churn (#6204).ignore_up_down_keys to TextField and CupertinoTextField (#6183)..mjs and .wasm (#6140).style patching and clear stale style state (#6119).AlertDialog and CupertinoAlertDialog barrier color updates (#6097).ControlEvent runtime type hints (#6102).Flet app update on mobile storesAn updated Flet app for testing on mobile devices is coming to the App Store and Google Play soon.
For now, see the current mobile testing guide: https://flet.dev/docs/getting-started/testing-on-mobile/
Flet 0.81.0 is focused on practical app-building features: richer UI controls, stronger system integration, and smoother build workflows.
Try it in your apps and share feedback in GitHub Discussions or on Discord.
Happy Flet-ing!