The next evolution of SQLite is here! Read Announcement

We're excited to announce @tursodatabase/sync-react-native — official React Native bindings for Turso. Unlike the JavaScript SDK where we publish separate packages for database and sync, this is a single package that delivers both an embedded database and optional sync with Turso Cloud:
pull and push operations to build offline-first apps that seamlessly sync when connected.

We built native bindings to bring Turso's features to iOS and Android through React Native.
Turso DB features:
Turso Cloud features:
The sync engine core is abstracted from platform-specific network APIs, making it easy to integrate on different platforms (like WASM in browsers). The React Native bindings follow the same approach — the native layer is kept thin as a bridge to SDK-KIT, while async network IO and SDK API logic live in TypeScript. Query execution happens in the native database engine.
This design has several advantages:
Install the package:
npm install @tursodatabase/sync-react-native
Since this is a native module, iOS requires an additional step to link the native dependencies:
cd ios && pod install
The bindings require React Native 0.76+ with the New Architecture enabled. iOS minimum deployment target is 13.0.
For a simple local-only database that runs entirely on device:
import { connect } from '@tursodatabase/sync-react-native';
const db = await connect({ path: 'myapp.db' });
// Execute multiple SQL statements with exec()
await db.exec(`
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE
)
`);
// Use prepared statements and bind args to placeholders
const insert = db.prepare('INSERT INTO users (name, email) VALUES (?, ?)');
await insert.run(['Alice', 'alice@example.com']);
const select = db.prepare('SELECT * FROM users');
console.log(await select.all());
db.close();
To sync with Turso Cloud, provide a url and authToken. The bindings support bidirectional sync — pull remote changes to your local database and push local writes back to the cloud:
import { connect } from '@tursodatabase/sync-react-native';
const db = await connect({
path: 'replica.db',
url: 'libsql://mydb-myorg.turso.io',
authToken: 'your-auth-token',
});
// Pull remote changes to local
await db.pull();
// Make local changes (works offline!)
const insert = db.prepare('INSERT INTO tasks (title) VALUES (?)');
await insert.run(['Buy groceries']);
// Push local changes to remote when connected
await db.push();
We're continuing to improve the React Native bindings with:
The React Native bindings are available now:
npm install @tursodatabase/sync-react-native
Check out the bindings source code and examples on GitHub, or visit our sync documentation for detailed usage guide.
We'd love to hear about what you're building with Turso on mobile. Join our Discord to share your projects and get help from the community.