Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .changeset/persisted-metadata-followups.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
'@tanstack/db': patch
'@tanstack/db-sqlite-persisted-collection-core': patch
'@tanstack/db-sqlite-persistence-core': patch
'@tanstack/electric-db-collection': patch
---

Expand Down
36 changes: 18 additions & 18 deletions .changeset/sqlite-persistence.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,57 @@
---
'@tanstack/db': patch
'@tanstack/db-sqlite-persisted-collection-core': patch
'@tanstack/db-browser-wa-sqlite-persisted-collection': patch
'@tanstack/db-cloudflare-do-sqlite-persisted-collection': patch
'@tanstack/db-node-sqlite-persisted-collection': patch
'@tanstack/db-electron-sqlite-persisted-collection': patch
'@tanstack/db-expo-sqlite-persisted-collection': patch
'@tanstack/db-react-native-sqlite-persisted-collection': patch
'@tanstack/db-capacitor-sqlite-persisted-collection': patch
'@tanstack/db-tauri-sqlite-persisted-collection': patch
'@tanstack/db-sqlite-persistence-core': patch
'@tanstack/browser-db-sqlite-persistence': patch
'@tanstack/cloudflare-durable-objects-db-sqlite-persistence': patch
'@tanstack/node-db-sqlite-persistence': patch
'@tanstack/electron-db-sqlite-persistence': patch
'@tanstack/expo-db-sqlite-persistence': patch
'@tanstack/react-native-db-sqlite-persistence': patch
'@tanstack/capacitor-db-sqlite-persistence': patch
'@tanstack/tauri-db-sqlite-persistence': patch
---

feat(persistence): add SQLite-based offline persistence for collections

Adds a new persistence layer that durably stores collection data in SQLite, enabling applications to survive page reloads and app restarts across browser, Node, mobile, desktop, and edge runtimes.

**Core persistence (`@tanstack/db-sqlite-persisted-collection-core`)**
**Core persistence (`@tanstack/db-sqlite-persistence-core`)**

- New package providing the shared SQLite persistence runtime: hydration, streaming, transaction tracking, and applied-tx pruning
- SQLite core adapter with full query compilation, index management, and schema migration support
- Portable conformance test contracts for runtime-specific adapters

**Browser (`@tanstack/db-browser-wa-sqlite-persisted-collection`)**
**Browser (`@tanstack/browser-db-sqlite-persistence`)**

- New package for browser persistence via wa-sqlite backed by OPFS
- Single-tab persistence with OPFS-based SQLite storage
- `BrowserCollectionCoordinator` for multi-tab leader-election and cross-tab sync

**Cloudflare Durable Objects (`@tanstack/db-cloudflare-do-sqlite-persisted-collection`)**
**Cloudflare Durable Objects (`@tanstack/cloudflare-durable-objects-db-sqlite-persistence`)**

- New package for SQLite persistence in Cloudflare Durable Objects runtimes

**Node (`@tanstack/db-node-sqlite-persisted-collection`)**
**Node (`@tanstack/node-db-sqlite-persistence`)**

- New package for Node persistence via SQLite

**Electron (`@tanstack/db-electron-sqlite-persisted-collection`)**
**Electron (`@tanstack/electron-db-sqlite-persistence`)**

- New package providing Electron main and renderer persistence bridge helpers

**Expo (`@tanstack/db-expo-sqlite-persisted-collection`)**
**Expo (`@tanstack/expo-db-sqlite-persistence`)**

- New package for Expo persistence via `expo-sqlite`

**React Native (`@tanstack/db-react-native-sqlite-persisted-collection`)**
**React Native (`@tanstack/react-native-db-sqlite-persistence`)**

- New package for React Native persistence via op-sqlite
- Adapter with transaction deadlock prevention and runtime parity coverage

**Capacitor (`@tanstack/db-capacitor-sqlite-persisted-collection`)**
**Capacitor (`@tanstack/capacitor-db-sqlite-persistence`)**

- New package for Capacitor persistence via `@capacitor-community/sqlite`

**Tauri (`@tanstack/db-tauri-sqlite-persisted-collection`)**
**Tauri (`@tanstack/tauri-db-sqlite-persistence`)**

- New package for Tauri persistence via `@tauri-apps/plugin-sql`
10 changes: 5 additions & 5 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,22 +65,22 @@ jobs:

- name: Run Node SQLite persisted collection E2E tests
run: |
cd packages/db-node-sqlite-persisted-collection
cd packages/node-db-sqlite-persistence
pnpm test:e2e

- name: Run Electron SQLite persisted collection E2E tests
run: |
cd packages/db-electron-sqlite-persisted-collection
cd packages/electron-db-sqlite-persistence
pnpm test:e2e

- name: Run Cloudflare Durable Object persisted collection E2E tests
run: |
cd packages/db-cloudflare-do-sqlite-persisted-collection
cd packages/cloudflare-durable-objects-db-sqlite-persistence
pnpm test:e2e

- name: Run React Native/Expo persisted collection E2E tests
run: |
cd packages/db-react-native-sqlite-persisted-collection
cd packages/react-native-db-sqlite-persistence
pnpm test:e2e

- name: Run React Native/Expo runtime E2E lane
Expand Down Expand Up @@ -108,7 +108,7 @@ jobs:
exit 0
fi

cd packages/db-react-native-sqlite-persisted-collection
cd packages/react-native-db-sqlite-persistence
pnpm test:e2e:runtime
env:
TANSTACK_DB_MOBILE_SQLITE_FACTORY_MODULE: ${{ vars.TANSTACK_DB_MOBILE_SQLITE_FACTORY_MODULE }}
Expand Down
Loading
Loading