JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1426
  • Score
    100M100P100Q123228F
  • License MIT

TalaDB React Native module — document and vector database via JSI HostObject

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@taladb/react-native) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    @taladb/react-native

    React Native module for TalaDB — embedded local-first storage via JSI TurboModule and a Rust core.

    npm License: MIT

    Note: Most users should install taladb instead, which auto-selects this package when running in React Native.

    What it provides

    • TalaDB's Rust core compiled to a static library for iOS and Android
    • JSI HostObject bridge — calls go directly from JS to C++ to Rust with no JSON serialization on the hot path
    • No Bridge/async overhead for local reads
    • Data stored in the app's private documents directory (sandboxed, backed up by OS)

    Requirements

    • React Native 0.73+
    • iOS 15+ / Android API 24+

    Installation

    pnpm add taladb @taladb/react-native

    iOS

    cd ios && pod install

    Android

    No extra setup required — the .so library is bundled automatically via Gradle.

    Usage

    Use through the unified taladb package:

    import { openDB } from 'taladb';
    
    const db = await openDB('myapp.db');
    const tasks = db.collection('tasks');
    
    await tasks.createIndex('status');
    await tasks.insert({ title: 'Buy groceries', status: 'pending', priority: 1 });
    
    const pending = await tasks.find({ status: 'pending' });
    await tasks.updateOne({ title: 'Buy groceries' }, { $set: { status: 'done' } });

    With React hooks

    import { useEffect, useState } from 'react';
    import { openDB } from 'taladb';
    import type { TalaDB } from 'taladb';
    
    export function useDatabase() {
      const [db, setDb] = useState<TalaDB | null>(null);
    
      useEffect(() => {
        let instance: TalaDB;
        openDB('myapp.db').then((opened) => {
          instance = opened;
          setDb(opened);
        });
        return () => { instance?.close(); };
      }, []);
    
      return db;
    }

    Architecture

    JavaScript (React Native)
            │  JSI (synchronous, no bridge)
            ▼
    C++ HostObject (TalaDBHostObject.cpp)
            │  C FFI
            ▼
    Rust static library (taladb-core)
            │
            ▼
    redb B-tree (app documents directory)

    Building from source

    # iOS (requires Xcode + Rust iOS targets)
    pnpm --filter @taladb/react-native build:ios
    
    # Android (requires NDK + Rust Android targets)
    pnpm --filter @taladb/react-native build:android

    Full Documentation

    https://thinkgrid-labs.github.io/taladb/guide/react-native

    License

    MIT © ThinkGrid Labs