tursodatabase/turso · critical · Error
@tursodatabase/sync-react-native: Failed to install JSI bind
Error message
@tursodatabase/sync-react-native: Failed to install JSI bindings. Make sure the New Architecture is enabled.
What it means
After the native module is found, index.ts calls TursoNative.install() to install the JSI bindings; a false return means the TurboModule exists but JSI installation failed. This package requires React Native's New Architecture (JSI host objects on the global), so the dominant cause is running on the old architecture where install() cannot succeed. Like the module check, this throws at import time.
Source
Thrown at bindings/react-native/src/index.ts:64
// Export file system configuration function
export { setFileSystemImpl } from './internal/ioProcessor';
// Get the native module
const TursoNative: TursoNativeModule | undefined = NativeModules.Turso;
// Check if native module is available
if (!TursoNative) {
throw new Error(
`@tursodatabase/sync-react-native: Native module not found. Make sure you have properly linked the library.\n` +
`- iOS: Run 'pod install' in your ios directory\n` +
`- Android: Make sure the package is properly included in your MainApplication.java`
);
}
// Install the JSI bindings
const installed = TursoNative.install();
if (!installed) {
throw new Error(
'@tursodatabase/sync-react-native: Failed to install JSI bindings. Make sure the New Architecture is enabled.'
);
}
// Get the proxy that was installed on the global object
// __TursoProxy is declared globally in types.ts
const TursoProxy: TursoProxyType = __TursoProxy;
if (!TursoProxy) {
throw new Error(
'@tursodatabase/sync-react-native: JSI bindings not found on global object. This is a bug.'
);
}
/**
* Helper function to construct a database path in a writable directory.
*
* @param filename - Database filename (e.g., 'mydb.db')View on GitHub (pinned to bad083fafb)
Solutions
- Enable the New Architecture: android/gradle.properties -> newArchEnabled=true, and rebuild; on modern RN (0.76+) it is on by default
- Upgrade React Native to a version with mature New Architecture support if the app is old
- After flipping the flag, do a full clean rebuild (gradlew clean / pod deintegrate && pod install) — the setting is compiled in
- Confirm no other library forces the old architecture in the same build
Example fix
# android/gradle.properties (before) newArchEnabled=false # app crashes at import: Failed to install JSI bindings # android/gradle.properties (after) newArchEnabled=true # then: cd android && ./gradlew clean && cd .. && npx react-native run-android
Defensive patterns
Strategy: validation
Validate before calling
// Verify build config before relying on the SDK
// android/gradle.properties must contain newArchEnabled=true
// iOS: RCT_NEW_ARCH_ENABLED=1 (default in newer RN templates)
// Add a startup assertion so misconfiguration fails loudly at boot:
if (!__TursoProxy) {
console.error('Turso JSI not installed — check that the New Architecture is enabled');
} Prevention
- Keep newArchEnabled=true in android/gradle.properties and pod install after any flag change
- Verify other native dependencies support the New Architecture before enabling it app-wide
- Treat 'Failed to install JSI bindings' as a build-config error, not a code bug — fix the build first
When it happens
Trigger: New Architecture disabled: iOS without RCT_NEW_ARCH_ENABLED (or newArchEnabled=false in android/gradle.properties); an old React Native version that lacks the required JSI/turbo-module support; partial upgrade where only one platform has the new arch enabled.
Common situations: Adding this SDK to an older RN app (pre-0.7x) that cannot enable the new arch; toggling newArchEnabled back to false for a compatibility workaround; CI builds using stale gradle.properties.
Related errors
- Turso native module not loaded
- Failed to get column name at index ${i}
- Unknown column type: ${kind}
- @tursodatabase/sync-react-native: JSI bindings not found on
- push() is only available for sync databases
AI-assisted analysis of tursodatabase/turso@bad083fafb (2026-08-16).
Data as JSON: /api/errors/5147045cab99ac89.
Report an issue: GitHub.