flutter-native-splash-engineering
Skill8 starsChanged 48 days agoMITView on GitHub
Design, implement, review, debug, migrate, visually verify, and optimize production Android, iOS, and Web launch screens generated with flutter_native_splash. Use when a task involves flutter_native_splash YAML, splash colors/images/branding, Android 12+ SplashScreen icons or masking, iOS launch storyboards, Web pre-engine splash HTML/CSS, light/dark resources, image sizing, preserve/remove lifecycle, stuck or long splash screens, white/black startup flashes, first-frame matching, flavors or white-label splash generation, stale generated resources, CI regeneration, release-only differences, or startup-performance diagnosis tied to the native splash. Do not use for general in-app loading screens, desktop splash support, runtime dynamic splash content, or startup optimization with no flutter_native_splash/native launch-screen concern.
In this repository70 other files it gives its agents.
- camerawesome-flutterSkill
- dart-args-production-cliSkill
- dart-flutter-equatable-engineeringSkill
- dart-flutter-ffi-systems-engineeringSkill
- dart-metaSkill
- document-camera-frameSkill
- document-scan-flutterSkill
- figma-to-flutter-expertSkill
- flutter-animations-production-engineeringSkill
- flutter-app-hardening-reverse-engineeringSkill
- flutter-app-icon-engineeringSkill
- flutter-application-security-engineeringSkill
- flutter-app-links-deep-link-engineeringSkill
- flutter-cachingSkill
- flutter-concurrency-memory-performanceSkill
- flutter-confetti-engineeringSkill
- flutter-dart-package-engineeringSkill
- flutter-design-system-from-design-mdSkill
- flutter-dio-cache-interceptor-engineeringSkill
- flutter-dio-engineeringSkill
- flutter-doc-scannerSkill
- flutter-drift-persistence-engineeringSkill
- flutter-expert-tipsSkill
- flutter-firebase-analyticsSkill
- flutter-firebase-core-engineeringSkill
- flutter-firebase-messagingSkill
- flutter-get-it-injectable-dependency-injectionSkill
- flutter-go-router-engineeringSkill
- flutter-hive-persistence-engineeringSkill
- flutter-image-performanceSkill
- flutter-image-picker-production-engineeringSkill
- flutter-lints-static-analysis-engineeringSkill
- flutter-local-notifications-production-engineeringSkill
- flutter-memory-leak-engineeringSkill
- flutter-mobile-developmentSkill
- flutter-motion-engineeringSkill
- flutter-multi-environmentSkill
- flutter-package-plugin-selectionSkill
- flutter-path-provider-production-storageSkill
- flutter-performance-jank-optimizationSkill
- flutter-permission-handler-engineeringSkill
- flutter-pinputSkill
- flutter-production-build-releaseSkill
- flutter-production-engineeringSkill
- flutter-production-loggingSkill
- flutter-pro-image-editor-engineeringSkill
- flutter-secure-storage-security-engineeringSkill
- flutter-sentry-engineeringSkill
- flutter-share-plus-engineeringSkill
- flutter-skeletonizer-engineeringSkill
- flutter-squadron-concurrency-engineeringSkill
- flutter-supabase-engineeringSkill
- flutter-svg-engineeringSkill
- flutter-ui-performance-engineeringSkill
- flutter-url-launcher-engineeringSkill
- flutter-video-player-production-engineeringSkill
- flutter-webview-production-engineeringSkill
- freezed-production-engineeringSkill
- html-to-flutterSkill
- hydrated-blocSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
25 rules. About 0 are common, 20 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈20
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 8
Treat flutter_native_splash as a native/Web resource generator, not an application loading-screen framework.
- Distinctive: line 14
Before changing code or generated resources:
- Distinctive: line 39
Treat Android 12+ as a separate system splash with icon masking and restricted layout.
- Distinctive: line 41
Keep native splash content static and compile-time generated.
- Distinctive: line 42
Do not use app-internal theme preferences to choose native dark mode.
- Distinctive: line 44
Do not use GIF, Lottie, or unsupported native animation hacks.
- Very specific: line 47
Never add Future.delayed merely to keep branding visible.
- Very specific: line 48
Use preserve() only for a small, essential prerequisite and assign exactly one owner to remove().
- Very specific: line 56
Do not run flutter clean after every edit.
- Distinctive: line 58
Treat generated native/Web files as generated state unless the repository has an explicit manual-merge ownership strategy.
- Distinctive: line 60
Keep one CI strategy: either commit deterministic generated files or generate them deterministically in CI.
- Distinctive: line 62
Use flavor/brand-specific compile-time resources.
- Distinctive: line 64
Prefer flat colors and lightweight correctly sized raster assets over huge full-screen images where the design permits.
- Distinctive: line 73
Actual startup optimization: remove blocking awaits, reduce synchronous CPU/disk work, defer optional SDKs/network calls, and render a …
- Distinctive: line 76
Perceived-performance optimization: remove flashes, align colors and system bars, and match the first frame.
- Distinctive: line 78
Visual/branding change: update colors, logos, branding, or positioning.
- Distinctive: line 80
Do not claim categories 2 or 3 make startup faster.
- Very specific: line 84
Read only the relevant sections of references/production-guide.md.
- Distinctive: line 91
Use these search headings:
- Distinctive: line 117
Keep the smallest correct configuration and reuse the repository's existing asset/flavor naming conventions.
- Distinctive: line 119
Run the generator once per relevant configuration, then review the generated native/Web diff before accepting it.
- Distinctive: line 121
Do not hand-edit generated output unless the repository deliberately owns and documents that merge strategy.
- Distinctive: line 126
Run configuration/generator checks and relevant Flutter analysis, then perform a full rebuild and test release-like cold launches.
- Distinctive: line 134
every affected flavor/brand and generated-resource strategy.
- Distinctive: line 140
Never claim startup became faster from visual timing alone.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Flutter Native Splash Engineering
Treat flutter_native_splash as a native/Web resource generator, not an
application loading-screen framework. Optimize the startup path separately from
the appearance of the OS-to-Flutter transition.
Start with evidence
Before changing code or generated resources:
- Inspect
pubspec.yaml,pubspec.lock, Flutter/Dart constraints, target platforms, flavors, and build pipelines. - Identify the locked
flutter_native_splashversion and whether runtimepreserve()/remove()APIs are imported. - Find every splash configuration file, generation command, generated-resource ownership rule, preserve/remove call, and startup owner.
- Inspect source asset formats, pixel dimensions, transparency, file sizes, dark variants, branding, and platform overrides.
- Audit all synchronous work and awaited initialization before
runAppand the first stable Flutter frame. - Inspect the first Flutter frame, theme/system bars, and layout for visual continuity with each native/Web splash.
- Separate Android pre-12, Android 12+, iOS/iPad, and Web behavior.
The bundled guide was validated against flutter_native_splash 2.4.8 on
2026-08-11. Use the installed package README, API, and changelog as the source
of truth when versions differ, especially for configuration keys, Android 12+
behavior, preserve/remove, flavors, Web output, and toolchain requirements.
Preserve these invariants
- Support only the package's declared Android, iOS, and Web targets; do not fabricate macOS, Windows, or Linux support.
- Treat Android 12+ as a separate system splash with icon masking and restricted layout; do not reuse a pre-12 full-screen design blindly.
- Keep native splash content static and compile-time generated.
- Do not use app-internal theme preferences to choose native dark mode; native appearance follows platform/system resources available before Flutter runs.
- Do not use GIF, Lottie, or unsupported native animation hacks. Continue rich animation in Flutter after the first frame.
- Minimize work before
runAppand the first frame. - Never add
Future.delayedmerely to keep branding visible. - Use
preserve()only for a small, essential prerequisite and assign exactly one owner toremove(). - Move long, dynamic, network-dependent, retryable, progressive, or interactive startup work into a Flutter startup/loading screen.
- Match the first Flutter frame's background, logo placement, system bars, and theme closely enough to avoid flashes and jumps where practical.
- Regenerate resources after configuration or source-asset changes; hot reload and hot restart do not regenerate launch resources.
- Do not run
flutter cleanafter every edit. Use it only when targeted regeneration and full rebuild still leave stale artifacts. - Treat generated native/Web files as generated state unless the repository has an explicit manual-merge ownership strategy.
- Keep one CI strategy: either commit deterministic generated files or generate them deterministically in CI; do not mix uncontrolled approaches.
- Use flavor/brand-specific compile-time resources; do not runtime-switch native splash branding.
- Prefer flat colors and lightweight correctly sized raster assets over huge full-screen images where the design permits.
- Measure actual startup in profile/release-like cold and warm launches; splash duration in debug is not a performance metric.
Classify the requested change
Identify which outcome is actually requested:
- Actual startup optimization: remove blocking awaits, reduce synchronous CPU/disk work, defer optional SDKs/network calls, and render a lightweight first frame sooner.
- Perceived-performance optimization: remove flashes, align colors and system bars, and match the first frame.
- Visual/branding change: update colors, logos, branding, or positioning.
Do not claim categories 2 or 3 make startup faster.
Route to the production guide
Read only the relevant sections of references/production-guide.md. Locate
sections before reading them with:
rg -n '^#{1,3} (SECTION|RELATED SECTION)$' references/production-guide.mdUse these search headings:
| Task | Search headings | ||||||||||||
| Understand architecture, dependency placement, generated files, or configuration | `Startup Model | Actual vs Perceived Performance | Package Architecture | Runtime Dependency Decision | Files Modified / Generated | Current Configuration | Current Top-Level Configuration Surface | Required Background Configuration | Platform Overrides` | ||||
| Configure colors, dark mode, backgrounds, sizing, branding, or assets | `Dark Mode | Dark Mode Source | Background Images | Image Position / Scaling | Branding | Branding Guidance | Input Asset Formats | Asset Resolution | Asset File Size | Flat Color vs Full Background Image | Orientation / Tablets / Foldables | Accessibility` | |
| Implement or debug Android pre-12 and Android 12+ | `Android 12+ | Android 12 Splash Model | Android 12 Asset Sizes | Android 12 Masking | Android 12 Background | Android 12 Icon Background | Android 12 Branding | Android 12 Animation | Android 12 Testing Caveats | Android Pre-12 | android_min_sdk | Android Orientation | Fullscreen and Android Edge-to-Edge` |
| Implement or debug iOS/iPad | `iOS | iOS Asset Scaling | iPhone / iPad | iOS Dark Mode | iOS Status Bar / Fullscreen | iOS Launch Screen Restrictions` | |||||||
| Implement or debug Web splash behavior | `Web | Web Generated Assets | Web Dark Mode | Web Performance | Web GIF` | ||||||||
| Generate, regenerate, restore, or troubleshoot stale resources | `Generation Workflow | Default configuration | Custom Configuration Path | Restore Default Splash | When to Regenerate | Hot Reload / Hot Restart | Do Not Ritualistically flutter clean` | ||||||
| Use preserve/remove or fix startup ownership and failures | `Preserve and Remove | preserve | remove | Deprecated Runtime API | When to Preserve | When NOT to Preserve | Stuck Splash Prevention | Startup Ownership | Startup Failure Architecture | Startup I/O Timeouts` | |||
| Choose native splash versus Flutter loading UI | `Native Splash vs Flutter Loading Screen | Authentication Startup | Remote Config | Third-Party SDK Initialization | Example Startup Anti-Pattern | Dynamic Splash Content | Animation Decision | Splash Duration` | |||||
| Remove flashes or logo jumps and match the first frame | `Smooth Native-to-Flutter Transition | First-Frame Matching | Logo Jump | System Bars` | |||||||||
| Configure flavors, white-label brands, CI, upgrades, or removal | `Flavor Support | Flavor Safety | Android Flavor Setup | iOS Flavor Setup | White-Label Applications | CI/CD | CI Strategy A | CI Strategy B | Do Not Mix Uncontrolled Strategies | Upgrades | Remove Command Semantics` | ||
| Diagnose or optimize startup | `Startup Performance | Startup Work Classification | Parallel Initialization | Startup CPU | Startup Network | Startup Disk I/O | Measuring Startup | Profile Mode | Cold vs Warm Start | Performance Budget Review | Asset Performance Rules | Build Size` | |
| Debug, review, or prepare production | `Reliability Rules | Debugging Guide | Anti-Patterns | Implementation Checklist | Startup Audit Checklist | Code Review Checklist | Production Readiness Checklist | Version-Sensitive Areas | Decision Framework` |
For a full startup or production-readiness audit, read the entire guide after completing the repository inventory.
Implement at the real ownership boundary
- Fix slow startup in the startup dependency graph, not by extending splash preservation.
- Fix visual discontinuity by aligning generated resources and the first Flutter frame, not by adding delay.
- Keep the smallest correct configuration and reuse the repository's existing asset/flavor naming conventions.
- Run the generator once per relevant configuration, then review the generated native/Web diff before accepting it.
- Do not hand-edit generated output unless the repository deliberately owns and documents that merge strategy.
Validate the result
Run configuration/generator checks and relevant Flutter analysis, then perform a full rebuild and test release-like cold launches. Cover changed paths from this matrix:
- Android pre-12 and Android 12+ across representative versions;
- Android light/dark mode, orientation, edge-to-edge, tablets, and foldables;
- iPhone and iPad light/dark launches with correct scaling and system bars;
- Web hard refresh before Flutter initializes, including dark mode;
- every affected flavor/brand and generated-resource strategy;
- preserve/remove success, timeout/failure, and exactly-one-removal ownership;
- first-frame background/logo/system-bar continuity;
- source and generated asset size/build-size impact;
- profile/release cold and warm startup measurements when performance changed.
Never claim startup became faster from visual timing alone. Report any platform, OS-version, device-shape, flavor, or release-build path that was not executed.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

