You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feature: Unified and fully customizable startup sequence (splash → boot → startup) with support for a custom Flutter widget/animation #5523
I have searched the opened issues and there are no duplicates
Describe the requested feature
At the moment you can only replace a static image (splash.png) and background colors via CLI flags or pyproject.toml. Dynamic animations, SVG/Lottie clips, or arbitrary widgets are not supported.
Boot-screen and startup-screen are not covered by the splash.
After the splash, Flet shows two text-based screens—“Preparing the app…” and “Starting up the app…”—with a progress ring. They cannot be replaced by the same custom artwork, so users see three visually different screens in a row.
Because of these gaps, even the most customized splash is followed by the default boot/startup screens, preventing a seamless branded launch experience.
Proposed solution:
Allow developers to specify one custom Flutter widget (or route) that fully replaces the entire splash → boot → startup chain on every platform.
Alternatively, extend the current options so that:
a) boot_screen and startup_screen can be replaced with custom imagery/animation;
b) splash can accept Lottie/SVG/GIF/Motion files or any Widget, similar to what flutter_native_splash offers in Flutter.
Provide parameters for light/dark theme variants, text localization, and a minimum display time (to prevent blinking on fast devices).
Work-arounds (not ideal):
Forking flet-build-template and editing the startup screen manually—hard to maintain after updates.
Showing a “pseudo-splash” after Flet UI starts—causes noticeable delay/double flash and does not replace boot/startup.
Please add the ability to fully customize the entire startup sequence (splash + boot + startup) and/or let us specify a custom Flutter widget to replace the default screens—just like in native Flutter. This would remove the triple-screen flicker and deliver a single, cohesive branded launch experience for our users
Thanks for the detailed request! This shipped in Flet 0.86.0 through #6616 (same answer as #5328).
The separate "Preparing…" and "Starting up…" screens are now one persistent boot screen covering both stages, so there's no more triple-screen flicker. You can:
configure the built-in one (light/dark colours, theme_mode, your own prepare_message/startup_message, fade_out_duration, plus per-platform overrides via [tool.flet.<platform>.boot_screen]), or
replace it with your own Flutter widget (Lottie, Rive, any animation) from a Flet extension by overriding FletExtension.createBootScreen():
[tool.flet.boot_screen]
name = "my_screen"
[tool.flet.boot_screen.my_screen]
# any options, passed to your widget
Your widget receives a ValueListenable<BootStatus> (stage + startup error), and Flet removes it when the first page is ready. Because it's a regular Flutter widget, it can also localize its text from the device locale. Docs: Boot screen and the extension guide. For a working example, see the spinkit boot screen in flet-spinkit.
One part can't change: the native splash is drawn by the OS before the Flutter engine starts, so it can only be a static image and colour, never a Flutter widget. That's true in plain Flutter too, and flutter_native_splash is image-only as well. For a seamless launch, make [tool.flet.splash] match the first frame of your boot screen (same background, same logo) and start the animation in the boot screen.
There's no built-in minimum display time yet (the boot screen is removed as soon as the app is ready). If you need one, please open a focused issue for it. Built-in Lottie/Rive boot screens are tracked in #5944. Closing this one as implemented.
Activity
FeodorFitsner commentedon Aug 9, 2025
Good request, thank you! That will be implemented as part of extensions.
HappyCoder256 commentedon Dec 16, 2025
Is this feature ready for use?
Muddassir-Farooq-official commentedon Jan 4, 2026
class BootScreen extends StatelessWidget {
const BootScreen({
super.key,
});
@OverRide
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const SizedBox(
width: 30,
height: 30,
child: CircularProgressIndicator(strokeWidth: 3),
),
const SizedBox(
height: 10,
),
Text(appBootScreenMessage, style: Theme.of(context).textTheme.bodySmall,)
],
),
),
);
}
}
@FeodorFitsner I found this in build template
Muddassir-Farooq-official commentedon Jan 14, 2026
@FeodorFitsner any update?
Muddassir-Farooq-official commentedon Jan 28, 2026
Any update.
HappyCoder256 commentedon Feb 3, 2026
@FeodorFitsner @ndonkoHenri
feat: add flet-splash CLI tool for custom startup splash screens.
ndonkoHenri commentedon Oct 6, 2026
Thanks for the detailed request! This shipped in Flet 0.86.0 through #6616 (same answer as #5328).
The separate "Preparing…" and "Starting up…" screens are now one persistent boot screen covering both stages, so there's no more triple-screen flicker. You can:
theme_mode, your ownprepare_message/startup_message,fade_out_duration, plus per-platform overrides via[tool.flet.<platform>.boot_screen]), orFletExtension.createBootScreen():Your widget receives a
ValueListenable<BootStatus>(stage + startup error), and Flet removes it when the first page is ready. Because it's a regular Flutter widget, it can also localize its text from the device locale. Docs: Boot screen and the extension guide. For a working example, see thespinkitboot screen in flet-spinkit.One part can't change: the native splash is drawn by the OS before the Flutter engine starts, so it can only be a static image and colour, never a Flutter widget. That's true in plain Flutter too, and
flutter_native_splashis image-only as well. For a seamless launch, make[tool.flet.splash]match the first frame of your boot screen (same background, same logo) and start the animation in the boot screen.There's no built-in minimum display time yet (the boot screen is removed as soon as the app is ready). If you need one, please open a focused issue for it. Built-in Lottie/Rive boot screens are tracked in #5944. Closing this one as implemented.