flutter-app-size

Measure and optimize Flutter app bundle, APK, or IPA size with platform-specific analysis and reduction strategies. Supports Android (APK/AppBundle), iOS (IPA), and desktop platforms (Linux, macOS, Windows) with platform-specific measurement workflows Generates code size analysis JSON files via flutter build --analyze-size and integrates with Dart DevTools App Size Tool for component breakdown visualization Implements size reduction through debug info splitting, asset compression, and platform-specific tree-shaking using dart:io Platform checks Provides iOS-specific Xcode App Thinning Size Report generation for accurate end-user download estimates

INSTALLATION
npx skills add https://github.com/flutter/skills --skill flutter-app-size
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$2a

-

Determine Target Platform and Baseline

STOP AND ASK THE USER: "Which platform (apk, appbundle, ios, linux, macos, windows) are you targeting for size optimization, and do you have a specific size reduction goal?"

-

Generate Size Analysis File

Execute the Flutter build command with the --analyze-size flag to compile Dart with code size usage recording.

# Replace <platform> with apk, appbundle, ios, linux, macos, or windows

flutter build <platform> --analyze-size

Note: This generates a *-code-size-analysis_*.json file in the build/ directory and prints a high-level summary to the terminal.

-

Generate iOS App Size Report (iOS Only)

If targeting iOS, the .app file generated by --analyze-size only evaluates relative size. For an accurate end-user download estimate, generate an Xcode App Size Report.

flutter build ipa --export-method development
  • Follow up by instructing the user to:
  • Open the archive (build/ios/archive/*.xcarchive) in Xcode.
  • Click Distribute App -> Development.
  • In App Thinning, select "all compatible device variants".
  • Select Strip Swift symbols.
  • Export the IPA and review the App Thinning Size Report.txt.

-

Analyze Components in DevTools

Launch DevTools to inspect the JSON analysis file.

dart devtools
  • Instruct the user to open the "App Size Tool" in the DevTools browser UI and upload the *-code-size-analysis_*.json file.
  • Use the Treemap or Dominator Tree to identify large packages, libraries, or assets.

-

Implement Size Reduction Strategies

Apply the following strategies to the build process and codebase:

Strategy A: Split Debug Info and Obfuscate

Extract debug symbols from the compiled binary to reduce the final artifact size.

flutter build appbundle --obfuscate --split-debug-info=build/app/outputs/symbols/

Strategy B: Platform-Specific Tree Shaking

Use dart:io Platform checks to ensure the Dart AOT compiler removes unreachable code for the target platform.

import 'dart:io';

void initializePlatformSpecificFeatures() {

  if (Platform.isWindows) {

    // Windows-specific imports and logic

    // The AOT compiler will strip this out when building for Android/iOS

    _initWindowsFeatures();

  } else if (Platform.isAndroid) {

    _initAndroidFeatures();

  }

}

-

Validate and Fix

After applying reduction strategies, regenerate the size analysis file.

flutter build <platform> --analyze-size

STOP AND ASK THE USER: "Please upload the new *-code-size-analysis_*.json file to DevTools and compare it with the original using the 'Diff' tab. Did the app size decrease to meet your requirements?"

  • Error State: If the size did not decrease, verify that --split-debug-info was applied correctly and that large assets (PNG/JPEG) have been compressed or removed.

Constraints

  • NEVER use debug builds (flutter run or standard IDE play buttons) to measure app size. They contain debugging overhead and are not representative of production sizes.
  • NEVER assume the upload package size (e.g., a universal APK or AAB) is the exact download size for end-users. App stores filter native libraries and asset densities.
  • ALWAYS provide a valid directory path when using the --split-debug-info flag.
  • DO NOT rely solely on the iOS .app file size; always use the Xcode App Thinning Size Report for accurate iOS download size estimates.
  • ALWAYS ensure that Platform checks use dart:io constants directly so the AOT compiler can accurately perform tree-shaking.
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card