Overview
Expo-native persistence and lifecycle integration for @absolutejs/sync.
@absolutejs/sync-expov0.0.4betaNative AppsExpo SQLite, lifecycle, protection, and background-task adapter for @absolutejs/sync
bun add @absolutejs/sync-expoExpo-native persistence and lifecycle integration for @absolutejs/sync.
Expo SQLite durable cache, outbox, receipts, cursors, and dead letters.
Principal-partitioned storage with the same migrations and policy contract as
web and Capacitor.
AES-256-GCM record protection with a device-only key held by Expo SecureStore.
AppState and Expo Network wake-up handling.
Bounded Expo Background Task integration.
AbsoluteJS provisions this package automatically for Expo applications that use @absolutejs/sync. Direct package consumers can use the exported adapter functions without AbsoluteJS.
The @absolutejs/sync-expo/client and @absolutejs/sync-expo/bridge subpaths remain free of Expo and React Native runtime imports for WebViews and bridge contract tests. Native bridge hosts inject expoSyncRandomId; WebView socket identities use the browser Crypto API.
Background execution is an acceleration only. Foreground startup, resume, and connectivity recovery remain authoritative because Android and iOS decide when deferrable work is allowed to run.
Outcomes
Expo-native persistence and lifecycle integration for @absolutejs/sync.
Hardening checklist
Follow in order
Supported entry points declared by this project’s package manifest. Internal dist paths are not part of the package contract.
Public package entry point declared in package.json.
Scripts declared by this project’s package manifest.
Search the declarations exported by the current package type files. Expand a symbol to inspect its source-backed signature.
type ExpoSyncSqliteExecutor = {
execAsync(source: string): Promise<void>;
getAllAsync<T>(source: string, params?: readonly (boolean | number | null | string | Uint8Array)[]): Promise<T[]>;
getFirstAsync<T>(source: string, params?: readonly (boolean | number | null | string | Uint8Array)[]): Promise<T | null>;
runAsync(source: string, params?: readonly (boolean | number | null | string | Uint8Array)[]): Promise<unknown>;
};@absolutejs/sync-expo