The JavaScript Interface (JSI) for Expo Modules in React Native, providing a native-to-JS bridge with synchronous calls and low overhead. Current stable version is 0.56.0.7. Released alongside Expo SDK updates, with a monthly cadence. Differentiator: enables high-performance native module communication without the asynchronous bridge overhead of the standard React Native bridge. Used internally by Expo modules that require direct synchronous access to native APIs.
npm install expo-modules-jsiNo compatibility data collected yet for this library.
Verified import paths — ran on the pinned version, not inferred.
Shows how to install JSI and call a synchronous native method using Expo Modules JSI in a React Native app.
Update to const jsi = installJSI(); and use jsi.callNativeSync(...) instead of relying on global side effects.
Always invoke installJSI() at the start of your app initialization, before any module calls.
Use the return value of installJSI() instead of global.JSIHostObject.
Ensure your React Native app uses Hermes (Android) or JavaScriptCore (iOS). Check your podfile and gradle config.
Convert callback-based native modules to synchronous methods or use async alternatives (e.g., expo-modules-core's EventEmitter).
Call const jsi = installJSI(); then use jsi.callNativeSync(...).
Run npm install expo-modules-jsi and ensure your project has the correct Expo SDK version. For bare projects, run npx pod-install ios.
Ensure installJSI() is called only once during app startup. Guard with a flag if necessary.
Use import { installJSI } from 'expo-modules-jsi'. Check package version compatibility with Expo SDK.