Fix Android 16 KB Page Size Compliance for React Native

Full–time

Posted on: 22 days ago

OverviewWe need an experienced Android/React Native developer to make our production app fully compliant with Google Play's 16 KB memory page size requirement for apps targeting Android 15+ (SDK 35).
Google Play Console has already flagged 19 non-compliant .so files in our latest production build. We have a full mapping of each library to its source package (provided below).

Our Stack

  • React Native with Expo SDK 52
  • Hermes JS engine (enabled)
  • AGP resolved via RN 0.76 version catalog)
  • Gradle 8.10.2, NDK

  • * targetSdkVersion 35, compileSdkVersion 35

  • CI/CD: Codemagic

  • Flagged Libraries (from Google Play Console)
    Google Play has identified 19 .

    so files across arm64-v8a and x86_64 that are not 16 KB page aligned:

    React Native Core / Hermes (5 files):
    * — Hermes JS engine
    * — Hermes tooling
    * — NDK C++ standard library
    * — React Native core
    * — JavaScript Interface (Meta)

    Facebook/Meta — Fresco Image Pipeline (5 files):
    * — Facebook JNI bindings
    * — Fresco GIF support
    * — Fresco image pipeline
    * libstatic- — Fresco WebP support
    * libnative- — Fresco image transcoder

    Expo Modules (2 files):
    * libexpo-modules- — expo-modules-core
    * — expo-image 2.0.7

    Third-Party npm Packages (7 files):
    * / — react-native-reanimated 3.16.7
    * — react-native-mmkv 2.12.2
    * — react-native-quick-crypto 0.7.17
    * — react-native-screens 4.10.0
    * libanimation-decoder- — lottie-react-native 7.1.0
    * libnative- — @shopify/flash-list 1.8.3

    Scope of Work

  • Determine the fix strategy for each flagged library — Whether to upgrade the dependency, patch the native build, add linker flags (-Wl,-z,max-page-size=16384), or upgrade NDK/build tools.
  • Apply fixes — Upgrade packages, patch build configs, or apply whatever is needed to make all 19 .so files 16 KB aligned.
  • Verify alignment — Run zipalign -c -P 16 and/or Google's on the release AAB to confirm all .so files pass.
  • Test on 16 KB emulator — Set up an Android 15 emulator with 16 KB page size enabled, install the app, and verify it launches and runs without crashes.
  • Document changes — Provide a brief summary of what was upgraded/changed and any libraries that need upstream fixes or workarounds.

  • Deliverables

  • A release AAB that passes zipalign -c -P 16 with zero flagged libraries
  • All changes committed to a branch in our GitHub repo (we'll provide access)
  • A short written summary covering: What was changed per library

  • Any dependency upgrades performed
    Any known risks or follow-up items

    Additional Native Modules in the App
    Beyond the flagged libraries, the app also uses these native modules that should be verified:
    @intercom/intercom-react-native 8.7.0
    @stripe/stripe-react-native 0.38.6
    react-native-keychain 10.0.0
    react-native-gesture-handler 2.25.0
    react-native-maps 1.18.4
    react-native-fbsdk-next 13.4.1
    @sentry/react-native
    Custom SDK (bundled locally)
    Custom Adjoe SDK bundled locally)

    Ideal Candidate

  • Experience with React Native + Expo native Android builds
  • Familiarity with Android NDK, ELF binary alignment, and shared library toolchains
  • Has previously migrated an app to 16 KB page size compliance
  • Can set up and test on Android 15 16 KB page size emulator images

Contract duration of less than 1 month.

Mandatory skills:
Android, React Native, Android App Development