WhoBuilt

Your Android React Native App Is Big Because It's Missing This One Setting

Jun 13, 2025· 7 min· 30K views·Watch on YouTube

Speaker

Michał Pierzchała, principal engineer at Callstack, explains how to reduce React Native Android app size with R8 in a short episode of Callstack’s React Native Optimization in Practice series.

Measure the starting size

Pierzchała starts with a fresh React Native project and uses Spotify’s Ruler tool to analyze its release bundle. The baseline report shows a 7.7 MB download size and a 21.5 MB install size.

Enable R8 and resource shrinking

He points to the R8 section of Callstack’s React Native Optimization Guide. In the app’s release build configuration, he enables ProGuard, which turns on R8, and resource shrinking for assets such as PNGs, JPEGs, and vector drawables.

Compare the optimized build

After rerunning the bundle analysis, the download size drops from 7.7 MB to 5.5 MB, while the install size falls from 21.5 MB to 15 MB. The report also shows 63 components instead of 75, because R8 removed unused components.

Apply the savings to your project

Pierzachła says the smaller bundle takes up less space in the Play Store and on users’ devices. He encourages viewers to apply the optimization in their own projects.

Takeaways

  • Measure release bundle size before optimizing so you can compare results.
  • Enable R8 for release builds to remove unused native code.
  • Turn on resource shrinking to reduce packaged image and vector assets.
  • Reanalyze the bundle after changes to verify download and install size reductions.
  • Check third-party library rules when enabling R8, since some libraries may need configuration.

Mentioned in this talk

Search inside this talk

What was claimed 5

  • role at
    Michał Pierzchała is principal engineer at Callstack
    “a principal engineer at Callstack”
    YouTube
    Verified5 sources· Talk
  • feature
    R8: Built-in Android optimizer for making native binaries smaller
    “R8 is a built-in Android optimizer for making your native binaries smaller”
    YouTube
    Unverified1 source· Talk
  • uses
    “add it to the dependencies in build.gradle”
    YouTube
    Unverified1 source· Talk
  • feature
    Resource shrinking: Shrinks resources including PNGs, JPEGs, and vector drawables
    “We also want to shrink resources, including PNGs, JPEGs, and vector drawables.”
    YouTube
    Unverified1 source· Talk
  • feature
    R8: Removes unused components that are unnecessary for the app to function
    “R8 removed some components that we haven't used and that weren't necessary”
    YouTube
    Unverified1 source· Talk

Related talks