Skip to content

App crashes on 32-bit Android devices — UnsatisfiedLinkError when native .so is missing #1065

@radko93

Description

@radko93

Description

ExecuTorch only ships arm64-v8a native libraries. On Android devices running 32-bit userspace (including budget devices with 64-bit CPUs), the native .so isn't found and ETInstaller throws UnsatisfiedLinkError, which surfaces as a JavascriptException and crashes the app at startup. There's no way for consumers to handle this.

Three code paths throw unconditionally:

  • RnExecutorchPackage.kt — no try/catch around ETInstaller(reactContext)
  • RnExecutorchModules.ts — returns a throwing Proxy instead of null
  • src/index.ts — throws Failed to install react-native-executorch if module is null

We've been carrying a yarn patch in production since January 2026 that makes these paths return null gracefully and exports an isAvailable flag. Happy to submit a PR.

Steps to reproduce

  1. Install react-native-executorch in a React Native app
  2. Build and run on a 32-bit Android device (or a device with a 64-bit CPU running 32-bit userspace)
  3. App crashes at startup with UnsatisfiedLinkError

Snack or a link to a repository

No response

React Native Executorch version

0.8.1 (present since at least 0.6.0)

React Native version

0.83.4

Platforms

Android

JavaScript runtime

Hermes

Workflow

Expo Dev Client

Architecture

Fabric (New Architecture)

Build type

Release mode

Device

Real device

Device model

Samsung Galaxy A13 (SM-A137F), Samsung Galaxy A13 (SM-A135F), Samsung Galaxy A13 5G (SM-A136U), Samsung Galaxy A02s (SM-A025U), Moto G Play 2023, Moto E30, Wiko View4 (W-V830-EEA), Wildfire E6 Star

AI model

FSMN_VAD via useVAD

Performance logs

No response

Acknowledgements

Yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Most urgent fixesplatform: androidIssues and tasks related to Android

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions