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
What we measured
| Artifact | Last 4 KB-aligned (measured) | First 16 KB-aligned | Newest measured |
|---|---|---|---|
| React Native react-android | 0.76.9 | 0.77.0 | 0.87.1 aligned |
| Hermes | 0.76.9 | 0.77.0 | 0.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 releaseRuntimeClasspathExpo
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.aabOn 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
- Expo: SDK to React Native version table
- Android developers: Support 16 KB page sizes (updated 2026-09-16)
Read 2026-10-13. Our own numbers are measured from published artifacts (how); anything else is quoted from the sources above.
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
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.