flutter-reducing-app-size
flutter/agent-plugins · 8.6k installs · 3.1K stars
Skill
Marked Command Execution
Install
npx -y skills add flutter/agent-plugins --skill flutter-reducing-app-size --agent claude-codeRun in a terminal. Claude loads the skill when a task calls for it. Check the repo's README before you run it.
Files
Reducing Flutter App Size
Contents
- Core Concepts
- Workflow: Generating Size Analysis Files
- Workflow: Analyzing Size Data in DevTools
- Workflow: Estimating iOS Download Size
- Workflow: Implementing Size Reduction Strategies
- Examples
Core Concepts
- Debug vs. Release: Never use debug builds to measure app size. Debug builds include VM overhead and lack Ahead-Of-Time (AOT) compilation and tree-shaking.
- Upload vs. Download Size: The size of an upload package (APK, AAB, IPA) does not represent the end-user download size. App stores filter redundant native library architectures and asset densities based on the target device.
- AOT Tree-Shaking: The Dart AOT compiler automatically removes unused or unreachable code in profile and release modes.
- Size Analysis JSON: The
--analyze-sizeflag generates a*-code-size-analysis_*.jsonfile detailing the byte size of packages, libraries, classes, and functions.
Workflow: Generating Size Analysis Files
Use this workflow to generate the raw data required for size analysis.
Task Progress:
- Determine the target platform (apk, appbundle, ios, linux, macos, windows).
- Run the Flutter build command with the
--analyze-sizeflag. - Locate the generated
*-code-size-analysis_*.jsonfile in thebuild/directory.
Conditional Logic:
- If targeting Android: Run
flutter build apk --analyze-sizeorflutter build appbundle --analyze-size. - If targeting iOS: Run
flutter build ios --analyze-size. Note: This creates a.appfile useful for relative content sizing, but not for estimating final App Store download size. Use the Estimating iOS Download Size workflow for accurate iOS metrics. - If targeting Desktop: Run
flutter build [windows|macos|linux] --analyze-size.
Workflow: Analyzing Size Data in DevTools
Use this workflow to visualize and drill down into the Size Analysis JSON.
Task Progress:
- Launch DevTools by running
dart devtoolsin the terminal. - Select "Open app size tool" from the DevTools landing page.
- Upload the generated
*-code-size-analysis_*.jsonfile. - Inspect the treemap or tree view to identify large packages, libraries, or assets.
- Feedback Loop:
- Identify the largest contributors to app size.
- Determine if the dependency or asset is strictly necessary.
- Remove, replace, or optimize the identified component.
- Regenerate the Size Analysis JSON and compare the new build against the old build using the DevTools "Diff" tab.
Workflow: Estimating iOS Download Size
Use this workflow to get an accurate projection of iOS download and installation sizes across different devices.
Task Progress:
- Configure the app version and build number in
pubspec.yaml. - Generate an Xcode archive by running
flutter build ipa --export-method development. - Open the generated archive (
build/ios/archive/*.xcarchive) in Xcode. - Click Distribute App and select Development.
- In the App Thinning configuration, select All compatible device variants.
- Check the option to Strip Swift symbols.
- Sign and export the IPA.
- Open the exported directory and review the
App Thinning Size Report.txtfile to evaluate projected sizes per device.
Workflow: Implementing Size Reduction Strategies
Apply these strategies to actively reduce the compiled footprint of the application.
Task Progress:
- Split Debug Info: Strip debug symbols from the compiled binary and store them in separate files.
- Remove Unused Resources: Audit the
pubspec.yamlandassets/directory. Delete any images, fonts, or files not actively referenced in the codebase. - Minimize Library Resources: Review third-party packages. If a package imports massive resource files (e.g., large icon sets or localization files) but only a fraction is used, consider alternative packages or custom implementations.
- Compress Media: Compress all PNG and JPEG assets using tools like
pngquant,imageoptim, or WebP conversion before bundling them into the app.
Examples
Generating Size Analysis (Android)
# Generate the size analysis JSON for an Android App Bundle
flutter build appbundle --analyze-size --target-platform=android-arm64
Splitting Debug Info (Release Build)
# Build an APK while stripping debug info to reduce binary size
flutter build apk --obfuscate --split-debug-info=build/app/outputs/symbols
Reading the iOS App Thinning Size Report
When reviewing App Thinning Size Report.txt, look for the specific target device to understand the true impact on the user:
Variant: Runner-7433FC8E-1DF4-4299-A7E8-E00768671BEB.ipa
Supported variant descriptors: [device: iPhone12,1, os-version: 13.0]
App + On Demand Resources size: 5.4 MB compressed, 13.7 MB uncompressed
App size: 5.4 MB compressed, 13.7 MB uncompressed
Interpretation: The end-user download size (compressed) is 5.4 MB, and the on-device footprint (uncompressed) is 13.7 MB.
Facts
- Kind
- Skill
- Repo
- flutter/agent-plugins
- Group
- Uncategorized
- Installs
- 8.6k
- Stars
- 3.1K
- 1find-skillsvercel-labs/skillsHelps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.3.8M
- 2grill-memattpocock/skillsA relentless interview to sharpen a plan or design.1.3M
- 3grill-with-docsmattpocock/skillsA relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.1.1M
- 4agent-browservercel-labs/agent-browserBrowser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.1.1M
- 5improve-codebase-architecturemattpocock/skillsScan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.1.1M
- 6tddmattpocock/skillsTest-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.1.1M