Android 16 KB fix map

React Native and Expo: Google Play's 16 KB page size requirement

Short answer: com.facebook.react:react-android and hermes-android are 16 KB-aligned from React Native 0.77.0; we measured 0.76.9 and earlier as 4 KB-aligned. Every Expo SDK on Expo's current version table (SDK 54 to 57) ships React Native 0.81 or newer, past that boundary. If Play still flags the app, a third-party native module ships its own offending .so: find it with the checker and upgrade that package.

Checked 2026-10-13 · by hermonLabs · Google Play deadlines

fails, old defaultp_align = 00 10 00 00 00 00 00 000x1000 = 4096 = 4 KB
passesp_align = 00 40 00 00 00 00 00 000x4000 = 16384 = 16 KB

What we measured

ArtifactLast 4 KB-aligned (measured)First 16 KB-alignedNewest measured
React Native react-android0.76.90.77.00.87.1 aligned
Hermes0.76.90.77.00.82.1 aligned

Measured 2026-10-01 by reading the ELF headers of the published artifacts; method on Methodology.

Bare React Native

Upgrade to 0.77.0 or newer (the Upgrade Helper shows the file-by-file diff), then confirm what Gradle actually resolves, since a library can pin an older version:

cd android
./gradlew :app:dependencyInsight --dependency react-android --configuration releaseRuntimeClasspath

Expo

Expo pins the React Native version per SDK. On Expo's version table (read 2026-10-13), SDK 54 maps to React Native 0.81, SDK 55 to 0.83, SDK 56 to 0.85 and SDK 57 to 0.86. If you are on an older SDK, upgrading the SDK is how you move React Native, then make a new EAS build.

Native modules

Packages with native code (storage, camera, ML, maps) carry their own .so files. Some are in our map, for example MMKV (aligned from 1.3.14). Paste ./gradlew :app:dependencies output into the dependency checker to match everything we have measured.

Find the exact file Play is complaining about

Run a check on the exact .aab you upload, not a debug APK. The free in-browser checker lists every arm64-v8a/x86_64 .so and its alignment without uploading anything; the same rules as a script:

curl -LO https://android-16kb-fixmap.pages.dev/check16k.py
python3 check16k.py app-release.aab

On a device or emulator booted with 16 KB pages, adb shell getconf PAGE_SIZE prints 16384 (Google's guide lists the 16 KB emulator images and the Pixel developer option).

Still flagged?

See why Play can disagree with a local check, and the separate targetSdk 36 deadline (Expo: set it with expo-build-properties).

Sources

Read 2026-10-13. Our own numbers are measured from published artifacts (how); anything else is quoted from the sources above.

Need the full map plus the fix guide?

The paid kit ($12, v2.1) contains the complete measured fix map for all 80+ libraries as JSON and a table, every raw per-version measurement, the spot-check evidence, and the CI checker. This page and the checker script stay free.

  • fixmap.json 209 KB
  • fixmap.md 41 KB
  • tools/check16k.py 6 KB
  • GUIDE.md 17 KB
Get the kit ($12)

Full refund within 14 days if the kit didn't help you find or fix your blocker, no questions — email us and we process it via Polar's Refunds API.