jazz-tools 2.0.0-alpha.38 → 2.0.0-alpha.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/docs-index.db CHANGED
Binary file
@@ -256,15 +256,141 @@ function App() {
256
256
  ```
257
257
 
258
258
  The secret is the user's identity. If it's lost (e.g. `localStorage` cleared), the identity is
259
- gone and any data owned by that user becomes inaccessible. For durable identity, upgrade to an
260
- external provider.
259
+ gone and any data owned by that user becomes inaccessible unless you restore it from a recovery
260
+ passphrase, a passkey backup, or an external provider you linked earlier.
261
+
262
+ ## Backing up and restoring the secret
263
+
264
+ You can keep local-first auth fully serverless and still make it recoverable. Jazz ships two backup
265
+ helpers for the same 32-byte secret:
266
+
267
+ | Method | Platforms | Best for | Trade-offs |
268
+ | --------------------------- | ------------- | ---------------------------------------------- | ---------------------------------------------------- |
269
+ | `jazz-tools/passphrase` | Browser, Expo | Manual backup users can carry anywhere | User must safely store a 24-word recovery passphrase |
270
+ | `jazz-tools/passkey-backup` | Browser only | Fast recovery on devices that support passkeys | Requires WebAuthn and a stable relying-party ID |
271
+
272
+ ### Recovery passphrase
273
+
274
+ `jazz-tools/passphrase` converts the local-first secret into a 24-word English recovery
275
+ passphrase. Restoring that passphrase produces the exact same secret, so the user keeps the same
276
+ Jazz identity.
277
+
278
+ ```tsx
279
+
280
+ isLoading: boolean;
281
+ recoveryPhrase: string | null;
282
+ } {
283
+ const { secret, isLoading } = useLocalFirstAuth();
284
+
285
+ return {
286
+ isLoading,
287
+ recoveryPhrase: secret ? RecoveryPhrase.fromSecret(secret) : null,
288
+ };
289
+ }
290
+ ```
291
+
292
+ ```tsx
293
+
294
+ isLoading: boolean;
295
+ recoveryPhrase: string | null;
296
+ } {
297
+ const { secret, isLoading } = useLocalFirstAuth();
298
+
299
+ return {
300
+ isLoading,
301
+ recoveryPhrase: secret ? RecoveryPhrase.fromSecret(secret) : null,
302
+ };
303
+ }
304
+ ```
305
+
306
+ To restore, decode the user-provided passphrase back into a secret and hand it back to your
307
+ local-first auth flow:
308
+
309
+ ```tsx
310
+
311
+ const { login } = useLocalFirstAuth();
312
+
313
+ return async (userInput: string) => {
314
+ const restoredSecret = RecoveryPhrase.toSecret(userInput);
315
+ await login(restoredSecret);
316
+ };
317
+ }
318
+ ```
319
+
320
+ ```tsx
321
+
322
+ const { login } = useLocalFirstAuth();
323
+
324
+ return async (userInput: string) => {
325
+ const restoredSecret = RecoveryPhrase.toSecret(userInput);
326
+ await login(restoredSecret);
327
+ };
328
+ }
329
+ ```
330
+
331
+ The parser accepts upper-case input and extra whitespace. Invalid input throws
332
+ `RecoveryPhraseError` with codes like `invalid-length`, `invalid-word`, and
333
+ `invalid-checksum`.
334
+
335
+ In React and Expo, prefer `useLocalFirstAuth()` for backup and restore so the mounted
336
+ `JazzProvider` updates immediately. The lower-level `BrowserAuthSecretStore` and
337
+ `ExpoAuthSecretStore` APIs are still useful outside React-based UIs.
338
+
339
+ ### Passkey backup
340
+
341
+ For browser apps, `jazz-tools/passkey-backup` stores the same secret in a resident WebAuthn
342
+ credential. That gives users passkey-style recovery without adding a server-side auth provider.
343
+
344
+ Create the passkey from the current local-first secret:
345
+
346
+ ```tsx
347
+
348
+ isLoading: boolean;
349
+ backupWithPasskey: (displayName: string) => Promise<void>;
350
+ } {
351
+ const { secret, isLoading } = useLocalFirstAuth();
352
+
353
+ return {
354
+ isLoading,
355
+ backupWithPasskey: async (displayName: string) => {
356
+ if (!secret) {
357
+ throw new Error("Local-first secret is not ready yet");
358
+ }
359
+
360
+ await passkeyBackup.backup(secret, displayName);
361
+ },
362
+ };
363
+ }
364
+ ```
365
+
366
+ Restore from the passkey by reading the secret back and passing it to `login(...)` from
367
+ `useLocalFirstAuth()`:
368
+
369
+ ```tsx
370
+
371
+ const { login } = useLocalFirstAuth();
372
+
373
+ return async () => {
374
+ const restoredSecret = await passkeyBackup.restore();
375
+ await login(restoredSecret);
376
+ };
377
+ }
378
+ ```
379
+
380
+ Use a stable `appHostname` everywhere you want passkey recovery to work. It becomes the WebAuthn
381
+ relying-party ID, so changing it creates a different passkey namespace. `backup(secret,
382
+ displayName)` also needs a user-visible name for the platform passkey sheet.
383
+
384
+ Handle `PasskeyBackupError` in your UI to surface cases like unsupported browsers, no saved
385
+ credential, or missing user verification. Keep a recovery passphrase or external sign-in as a
386
+ fallback if the user might lose access to their passkey provider.
261
387
 
262
388
  ## Server configuration
263
389
 
264
390
  Local-first auth is enabled by default in development. In production, enable it explicitly:
265
391
 
266
392
  ```bash
267
- jazz-tools server --allow-local-first-auth
393
+ pnpm dlx jazz-tools@alpha server --allow-local-first-auth
268
394
  ```
269
395
 
270
396
  No JWKS endpoint is needed — the token is self-contained and the server can verify it on its own.
@@ -565,7 +691,7 @@ We can define permissions in `permissions.ts`:
565
691
 
566
692
  Write your permissions policies in `permissions.ts` next to `schema.ts`. By default Jazz looks for both files at your project root — except in SvelteKit projects, where they should live in `src/lib/` (the standard location for shared app code).
567
693
 
568
- Run `npx jazz-tools@alpha validate` before publishing to identify any issues. You do not need to write a schema migration to update permissions policies. Push the updated policies by running `npx jazz-tools@alpha deploy <appId>`.
694
+ Run `pnpm dlx jazz-tools@alpha validate` before publishing to surface warnings about tables with no explicit permission policy. You do not need to write a schema migration to update permissions policies. Push the updated policies by running `pnpm dlx jazz-tools@alpha deploy <appId>`.
569
695
 
570
696
  Apps that do not need user-scoped filtering should still declare explicit grants (`policy.todos.allowRead.always()` or `policy.todos.allowRead.where({})`) once a compiled bundle is loaded.
571
697
 
@@ -1367,79 +1493,109 @@ DESCRIPTION:Set up Jazz in your app — works out of the box with most framework
1367
1493
 
1368
1494
  ## Zero-config client setup
1369
1495
 
1370
- Every client needs an `appId`. Add a `serverUrl` to enable sync. For login and authentication options, see [Authentication](/docs/auth/authentication).
1496
+ Every client needs an `appId` and a `secret` for [local-first auth](/docs/auth/local-first-auth). Without `secret`, the client runs in anonymous mode and every write is rejected with `AnonymousWriteDeniedError`. Add a `serverUrl` to enable sync. For the full auth matrix (anonymous, local-first, external JWT), see [Authentication](/docs/auth/authentication).
1371
1497
 
1372
1498
  ```tsx
1373
1499
 
1374
- return (
1500
+ const { secret, isLoading } = useLocalFirstAuth();
1375
1501
 
1376
- <h1>Todos</h1>
1502
+ if (isLoading || !secret) return null;
1503
+
1504
+ return (
1377
1505
 
1378
1506
  );
1379
1507
  }
1380
1508
  ```
1381
1509
 
1382
- ```vue
1383
- <script setup lang="ts">
1510
+ `useLocalFirstAuth()` from `jazz-tools/react` loads the device secret (or generates one on first run) and exposes `login` / `signOut` for switching identity.
1384
1511
 
1385
- const client = createJazzClient({
1386
- appId: "my-todo-app",
1387
- });
1388
- </script>
1512
+ ```vue title="App.vue"
1513
+ <script setup lang="ts">
1514
+ import { createJazzClient, JazzProvider } from "jazz-tools/vue";
1515
+ import { BrowserAuthSecretStore } from "jazz-tools";
1516
+ import TodoList from "./TodoList.vue";
1389
1517
 
1390
- <template>
1518
+ const secret = await BrowserAuthSecretStore.getOrCreateSecret();
1391
1519
 
1392
- <h1>Todos</h1>
1520
+ const client = createJazzClient({
1521
+ appId: "<your-app-id>",
1522
+ secret,
1523
+ });
1524
+ </script>
1393
1525
 
1394
- <template #fallback>
1395
- <p>Loading...</p>
1396
- </template>
1526
+ <template>
1397
1527
 
1398
- </template>
1528
+ <h1>Todos</h1>
1399
1529
 
1400
- ```
1530
+ </template>
1531
+ ```
1401
1532
 
1402
- ```svelte
1533
+ ```svelte title="App.svelte"
1534
+ <script lang="ts">
1535
+ import {
1536
+ createJazzClient,
1537
+ JazzSvelteProvider,
1538
+ BrowserAuthSecretStore,
1539
+ } from 'jazz-tools/svelte';
1540
+ import TodoList from './TodoList.svelte';
1403
1541
 
1404
- <script lang="ts">
1405
- import { createJazzClient, JazzSvelteProvider } from 'jazz-tools/svelte';
1406
- import TodoList from './TodoList.svelte';
1542
+ let client = $state | null>(null);
1407
1543
 
1408
- const client = createJazzClient({
1409
- appId: 'my-todo-app',
1410
- });
1411
- </script>
1544
+ BrowserAuthSecretStore.getOrCreateSecret().then((secret) => {
1545
+ client = createJazzClient({ appId: '<your-app-id>', secret });
1546
+ });
1547
+ </script>
1412
1548
 
1413
- {#snippet children()}
1414
- <h1>Todos</h1>
1549
+ {#if client}
1415
1550
 
1416
- {/snippet}
1417
- {#snippet fallback()}
1418
- <p>Loading...</p>
1419
- {/snippet}
1551
+ {#snippet children()}
1552
+ <h1>Todos</h1>
1420
1553
 
1421
- ```
1554
+ {/snippet}
1555
+ {#snippet fallback()}
1556
+ <p>Loading...</p>
1557
+ {/snippet}
1558
+
1559
+ {/if}
1560
+ ```
1422
1561
 
1423
1562
  ```tsx
1424
1563
 
1564
+ const { secret, isLoading } = useLocalFirstAuth();
1565
+
1566
+ if (isLoading || !secret) return null;
1567
+
1425
1568
  return (
1426
1569
 
1427
- Todos
1570
+ My App
1428
1571
 
1429
1572
  );
1430
1573
  }
1431
1574
  ```
1432
1575
 
1576
+ `ExpoAuthSecretStore` persists the secret in the device's secure storage. Or use `useLocalFirstAuth()` from `jazz-tools/expo` for a hook-based API.
1577
+
1433
1578
  ```ts
1434
- const db = await createDb({
1435
- appId: readEnvAppId() ?? "todo-client-example",
1579
+
1580
+ const secret = await BrowserAuthSecretStore.getOrCreateSecret({ appId: "my-app" });
1581
+
1582
+ return createDb({
1583
+ appId: "my-app",
1436
1584
  env: "dev",
1437
1585
  userBranch: "main",
1438
- ...config,
1586
+ secret,
1439
1587
  });
1588
+ }
1440
1589
  ```
1441
1590
 
1442
- Without auth configuration, Jazz creates a local-first identity automatically. To use Jazz completely offline, don't set a `serverUrl`.
1591
+ The secret is generated on first load, persisted locally (`localStorage` in the browser, secure storage on Expo), and reused on every subsequent run — the same device keeps the same Jazz identity.
1592
+
1593
+ Using Jazz completely offline? Leave out `serverUrl` and everything above still works — writes
1594
+ stay on the device until a server is reachable.
1595
+
1596
+ The local-first secret **is** the user's identity. If it's lost (e.g. cleared `localStorage`), the
1597
+ identity is gone and any data owned by that user becomes inaccessible. Plan for recovery with
1598
+ [backup and restore](/docs/auth/local-first-auth#backing-up-and-restoring-the-secret).
1443
1599
 
1444
1600
  Some bundlers and runtimes cannot automatically resolve Jazz's Wasm and worker assets. See [Runtime source overrides](#runtime-source-overrides) below.
1445
1601
 
@@ -1451,6 +1607,127 @@ For React Native and Expo clients, make sure `serverUrl` points to a host your r
1451
1607
 
1452
1608
  Browser clients default to `driver: { type: "persistent" }`, which stores data locally for offline support. Set `driver: { type: "memory" }` to keep data in memory only. This option requires you to set a `serverUrl` since nothing is saved locally.
1453
1609
 
1610
+ ## Dev plugins
1611
+
1612
+ Jazz ships bundler plugins that remove boilerplate in development. They start a local Jazz dev server, watch `schema.ts` and `permissions.ts`, auto-push both on change, and inject the app ID and server URL as framework-appropriate env vars so `createJazzClient({ appId, serverUrl })` picks them up without any manual wiring.
1613
+
1614
+ ```ts title="vite.config.ts"
1615
+ import { defineConfig } from "vite";
1616
+ import react from "@vitejs/plugin-react";
1617
+ import { jazzPlugin } from "jazz-tools/dev/vite";
1618
+
1619
+ export default defineConfig({
1620
+ plugins: [react(), jazzPlugin()],
1621
+ });
1622
+ ```
1623
+
1624
+ Injects `VITE_JAZZ_APP_ID` and `VITE_JAZZ_SERVER_URL` into `import.meta.env`.
1625
+
1626
+ ```ts title="vite.config.ts"
1627
+ import { defineConfig } from "vite";
1628
+ import vue from "@vitejs/plugin-vue";
1629
+ import { jazzPlugin } from "jazz-tools/dev/vite";
1630
+
1631
+ export default defineConfig({
1632
+ plugins: [vue(), jazzPlugin()],
1633
+ });
1634
+ ```
1635
+
1636
+ Injects `VITE_JAZZ_APP_ID` and `VITE_JAZZ_SERVER_URL` into `import.meta.env`.
1637
+
1638
+ ```ts title="vite.config.ts"
1639
+ import { defineConfig } from "vite";
1640
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
1641
+ import { jazzSvelteKit } from "jazz-tools/dev/sveltekit";
1642
+
1643
+ export default defineConfig({
1644
+ plugins: [svelte(), jazzSvelteKit()],
1645
+ });
1646
+ ```
1647
+
1648
+ Injects `PUBLIC_JAZZ_APP_ID` and `PUBLIC_JAZZ_SERVER_URL`. Use `jazzSvelteKit` for both Vite+Svelte and SvelteKit projects.
1649
+
1650
+ ```ts title="vite.config.ts"
1651
+ import { sveltekit } from "@sveltejs/kit/vite";
1652
+ import { jazzSvelteKit } from "jazz-tools/dev/sveltekit";
1653
+ import { defineConfig } from "vite";
1654
+
1655
+ export default defineConfig({
1656
+ // jazzSvelteKit must come before sveltekit so it populates
1657
+ // process.env before SvelteKit captures $env/dynamic/public.
1658
+ plugins: [jazzSvelteKit(), sveltekit()],
1659
+ });
1660
+ ```
1661
+
1662
+ Defaults `schemaDir` to `src/lib/`. Injects `PUBLIC_JAZZ_APP_ID` and `PUBLIC_JAZZ_SERVER_URL`.
1663
+
1664
+ ```ts title="next.config.ts"
1665
+ import { withJazz } from "jazz-tools/dev/next";
1666
+
1667
+ export default withJazz({});
1668
+ ```
1669
+
1670
+ Injects `NEXT_PUBLIC_JAZZ_APP_ID` and `NEXT_PUBLIC_JAZZ_SERVER_URL`. Only runs in the Next.js dev phase; production builds are untouched.
1671
+
1672
+ ```js title="metro.config.js"
1673
+ import { getDefaultConfig } from "expo/metro-config";
1674
+ import { withJazz } from "jazz-tools/dev/expo";
1675
+
1676
+ const config = getDefaultConfig(__dirname);
1677
+
1678
+ await withJazz(config, { schemaDir: __dirname });
1679
+
1680
+ export default config;
1681
+ ```
1682
+
1683
+ Injects `EXPO_PUBLIC_JAZZ_APP_ID` and `EXPO_PUBLIC_JAZZ_SERVER_URL` via `expoConfig.extra`. Skipped automatically when `NODE_ENV=production`.
1684
+
1685
+ On first run the plugin generates an app ID, persists it to `.env`, and starts a local Jazz server under `node_modules/.cache/jazz-dev-server/`. Every subsequent run reuses both.
1686
+
1687
+ ### Env var names
1688
+
1689
+ Each plugin writes the same two values (`appId`, `serverUrl`) under the prefix its bundler uses to expose env vars to the client bundle. SvelteKit's `PUBLIC_*` prefix also covers Svelte+Vite via `jazzSvelteKit`. Secrets are always unprefixed — they're server-only: `JAZZ_ADMIN_SECRET` and `BACKEND_SECRET`.
1690
+
1691
+ | Bundler | App ID | Server URL |
1692
+ | --------- | ------------------------- | ----------------------------- |
1693
+ | Vite | `VITE_JAZZ_APP_ID` | `VITE_JAZZ_SERVER_URL` |
1694
+ | Next.js | `NEXT_PUBLIC_JAZZ_APP_ID` | `NEXT_PUBLIC_JAZZ_SERVER_URL` |
1695
+ | SvelteKit | `PUBLIC_JAZZ_APP_ID` | `PUBLIC_JAZZ_SERVER_URL` |
1696
+ | Expo | `EXPO_PUBLIC_JAZZ_APP_ID` | `EXPO_PUBLIC_JAZZ_SERVER_URL` |
1697
+
1698
+ Jazz Cloud sync URL: `https://v2.sync.jazz.tools/`. For self-hosted deployments, point the server URL at your own host.
1699
+
1700
+ ### Plugin options
1701
+
1702
+ All plugins accept the same base options:
1703
+
1704
+ | Option | Description |
1705
+ | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1706
+ | `server` | `true` (default) starts an embedded local server. `false` disables the plugin. A URL string connects to an existing server. An object configures the embedded server (see below). |
1707
+ | `schemaDir` | Directory containing `schema.ts` and `permissions.ts`. Defaults to the project root, or `src/lib/` for SvelteKit. |
1708
+ | `appId` | Override the app ID. Defaults to the value in `.env`, otherwise a generated UUID persisted on first run. |
1709
+ | `adminSecret` | Required when `server` is a URL. Ignored for the embedded server (a random secret is generated). |
1710
+
1711
+ When `server` is an object, the embedded server accepts: `port` (default: random), `dataDir` (default: `node_modules/.cache/jazz-dev-server`), `inMemory`, `allowLocalFirstAuth`, `jwksUrl`, and the catalogue authority forwarding fields. See [Server Setup](/docs/getting-started/server-setup) for the full semantics.
1712
+
1713
+ ### Connecting to an existing server
1714
+
1715
+ Pass a URL to point the plugin at a server you already run — hosted cloud, staging, or a shared self-hosted instance. You must also provide `adminSecret` (or set `JAZZ_ADMIN_SECRET`) so the plugin can push schema and permissions.
1716
+
1717
+ ```ts title="vite.config.ts"
1718
+ jazzPlugin({
1719
+ server: "https://my-jazz-server.example.com",
1720
+ adminSecret: process.env.JAZZ_ADMIN_SECRET,
1721
+ appId: process.env.VITE_JAZZ_APP_ID,
1722
+ });
1723
+ ```
1724
+
1725
+ ### What auto-pushes
1726
+
1727
+ On startup and on every change to `schema.ts` or `permissions.ts`, the plugin publishes the current structural schema and permissions bundle to the server. Structural schema push works without an admin secret in development, so a bare `schema.ts` edit is enough to see clients pick up the new shape. Permission pushes use the server's admin secret (generated for the embedded server, supplied by you for a remote server).
1728
+
1729
+ Auto-push covers the development loop. For production — or any change that needs a schema migration — run `pnpm dlx jazz-tools@alpha deploy <appId>` to publish the migration, the new schema, and the current permissions in one step. See [Migrations](/docs/schemas/migrations).
1730
+
1454
1731
  ## Runtime source overrides
1455
1732
 
1456
1733
  Use `runtimeSources` when Jazz can't automatically find its internal assets. This usually only happens with non-standard bundler configurations or on edge runtimes like Cloudflare Workers.
@@ -1570,10 +1847,7 @@ DESCRIPTION:Hosted and self-hosted database server configuration, app provisioni
1570
1847
 
1571
1848
  ## Hosted database server
1572
1849
 
1573
- App IDs are provisioned on request. Ask in the `jazz2-adopters` Discord channel with your app name and JWKS endpoint.
1574
-
1575
- This manual provisioning process is temporary while Jazz 2 is under heavy development.
1576
- Self-service onboarding is planned.
1850
+ Your app ID namespaces your data for storage and sync. Click below to generate one on the Jazz hosted cloud&hairsp;—&hairsp;you'll also get the secrets you need to deploy permissions later.
1577
1851
 
1578
1852
  ## Self-hosted database server
1579
1853
 
@@ -1587,7 +1861,7 @@ npx jazz-tools@alpha server "$JAZZ_APP_ID" \
1587
1861
 
1588
1862
  ```
1589
1863
 
1590
- `jazz-tools server ` currently supports:
1864
+ `jazz-tools@alpha server ` currently supports:
1591
1865
 
1592
1866
  | Option | Purpose | Environment variable | Default |
1593
1867
  | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | ------------------------- |
@@ -1694,6 +1968,105 @@ pub async fn list_todos_for_request(
1694
1968
  }
1695
1969
  ```
1696
1970
 
1971
+ ===PAGE:guides/better-auth-adapter===
1972
+ TITLE:Better Auth Adapter
1973
+ DESCRIPTION:Use Better Auth with Jazz as the database adapter.
1974
+
1975
+ The Jazz Better Auth adapter lets Better Auth store its tables in Jazz. For general Better Auth setup (route handlers, client, plugins), see the [Better Auth documentation](https://www.better-auth.com/docs).
1976
+
1977
+ ## Schema Workflow
1978
+
1979
+ Better Auth tables live in a generated `schema-better-auth/` module that your app schema spreads into its own table map. This keeps Better Auth's tables in the same Jazz app as your own data, so a single backend context handles both.
1980
+
1981
+ ```bash
1982
+ # Generate the Better Auth schema module into schema-better-auth/
1983
+ npx @better-auth/cli@latest generate \
1984
+ --config ./src/lib/auth.ts \
1985
+ --output ./schema-better-auth/schema.ts
1986
+
1987
+ # Validate the generated schema source alongside your own
1988
+ pnpm dlx jazz-tools@alpha validate
1989
+ ```
1990
+
1991
+ Import the generated tables in your app's `schema.ts` and merge them into the app definition:
1992
+
1993
+ ```ts title="schema.ts"
1994
+
1995
+ const schema = {
1996
+ ...betterauthSchema,
1997
+ messages: s.table({
1998
+ author_name: s.string(),
1999
+ chat_id: s.string(),
2000
+ text: s.string(),
2001
+ sent_at: s.timestamp(),
2002
+ }),
2003
+ // ...your own tables
2004
+ };
2005
+
2006
+ type AppSchema = s.Schema<typeof schema>;
2007
+
2008
+ ```
2009
+
2010
+ The generated `schema-better-auth/schema.ts` also ships a `permissions` export that denies all operations on the Better Auth tables. Merge it with your own permissions so regular client sessions can't read or write Better Auth rows — the adapter itself uses `context.asBackend()`, which authenticates with `backendSecret` and bypasses permission checks entirely.
2011
+
2012
+ ## Database Adapter
2013
+
2014
+ Create a server-side [Jazz context](/docs/getting-started/server-setup#backend-context-setup), then pass it to `jazzAdapter(...)` as the `database` in your Better Auth config. Point both `db` and `schema` at the merged `app` — not at the generated module directly — so Better Auth and your own tables share a single Jazz app.
2015
+
2016
+ ```ts title="src/lib/auth.ts"
2017
+
2018
+ const jazzContext = createJazzContext({
2019
+ appId: process.env.APP_ID!,
2020
+ driver: { type: "memory" },
2021
+ serverUrl: process.env.SYNC_SERVER_URL!,
2022
+ env: process.env.NODE_ENV === "production" ? "prod" : "dev",
2023
+ userBranch: "main",
2024
+ backendSecret: process.env.BACKEND_SECRET!,
2025
+ });
2026
+
2027
+ database: jazzAdapter({
2028
+ db: () => jazzContext.asBackend(app),
2029
+ schema: app.wasmSchema,
2030
+ }),
2031
+ // ...your Better Auth config
2032
+ });
2033
+ ```
2034
+
2035
+ | Option | Description |
2036
+ | ----------- | ------------------------------------------------------------------------------------------------------ |
2037
+ | `db` | A function returning a `Db` handle via `context.asBackend(app)`. Use the merged app, not `authSchema`. |
2038
+ | `schema` | Typically `app.wasmSchema` from your merged schema. A raw `s.App` is also accepted. |
2039
+ | `debugLogs` | Better Auth adapter debug logging controls. |
2040
+ | `usePlural` | Whether Better Auth model names should use plural table names. |
2041
+ | `prefix` | Table name prefix (defaults to `"better_auth_"`). |
2042
+
2043
+ The Jazz adapter does not support Better Auth experimental joins yet, so do not enable
2044
+ `experimental.joins`.
2045
+
2046
+ ### Publishing to a sync server
2047
+
2048
+ Because Better Auth tables are merged into your app schema, they ride on the same deploy as everything else — no separate push for `schema-better-auth/`. Publish schema, permissions, and migrations through the normal workflow:
2049
+
2050
+ ```bash
2051
+ pnpm dlx jazz-tools@alpha deploy <appId>
2052
+ ```
2053
+
2054
+ See [Migrations](/docs/schemas/migrations) for the full deploy flow and how schema changes produce migration edges.
2055
+
2056
+ ## Compatibility
2057
+
2058
+ The adapter is currently aligned with Better Auth `1.5.5`.
2059
+
2060
+ | Plugin/Feature | Compatibility |
2061
+ | --------------------- | :-----------: |
2062
+ | Email & Password auth | ✅ |
2063
+ | Social Provider auth | ✅ |
2064
+ | Email OTP | ✅ |
2065
+
2066
+ This section reflects the adapter behavior currently covered by this repo's Better Auth
2067
+ integration and tests. If you add plugins that introduce extra tables or custom schema fields,
2068
+ regenerate `schema-better-auth/schema.ts` and re-run the Jazz schema workflow.
2069
+
1697
2070
  ===PAGE:index===
1698
2071
  TITLE:Overview
1699
2072
  DESCRIPTION:The database that syncs.
@@ -1722,13 +2095,17 @@ db.subscribeAll(app.todos.where({ done: false }), ({ all }) => {
1722
2095
 
1723
2096
  Jazz works with React, Vue, Expo/React Native, Svelte, plain TypeScript, and Rust.
1724
2097
 
1725
- ## Quickstarts
2098
+ (Looking for [classic Jazz docs?](https://classic.jazz.tools/docs))
2099
+
2100
+ ## Quickstart
2101
+
2102
+ ## Install
1726
2103
 
1727
2104
  ## Setup
1728
2105
 
1729
2106
  ## Reference
1730
2107
 
1731
- ===PAGE:quickstarts/client===
2108
+ ===PAGE:install/client===
1732
2109
  TITLE:Client
1733
2110
  DESCRIPTION:Build a local-first to-do app with Jazz, step by step.
1734
2111
 
@@ -1770,19 +2147,19 @@ Start with a fresh app. If you already have one, skip to [Install](#install).
1770
2147
  ## Install
1771
2148
 
1772
2149
  ```bash title="Terminal"
1773
- pnpm add jazz-tools
2150
+ pnpm add jazz-tools@alpha
1774
2151
  ```
1775
2152
 
1776
2153
  ```bash title="Terminal"
1777
- pnpm add jazz-tools
2154
+ pnpm add jazz-tools@alpha
1778
2155
  ```
1779
2156
 
1780
2157
  ```bash title="Terminal"
1781
- pnpm add jazz-tools
2158
+ pnpm add jazz-tools@alpha
1782
2159
  ```
1783
2160
 
1784
2161
  ```bash title="Terminal"
1785
- pnpm add jazz-tools jazz-rn expo
2162
+ pnpm add jazz-tools@alpha jazz-rn expo
1786
2163
  pnpm add -D @babel/plugin-transform-flow-strip-types
1787
2164
  ```
1788
2165
 
@@ -1830,9 +2207,13 @@ Start with a fresh app. If you already have one, skip to [Install](#install).
1830
2207
  ```
1831
2208
 
1832
2209
  ```bash title="Terminal"
1833
- pnpm add jazz-tools
2210
+ pnpm add jazz-tools@alpha
1834
2211
  ```
1835
2212
 
2213
+ ## Get an app ID
2214
+
2215
+ Your app ID namespaces your data for storage and sync. Click below to generate one on [Jazz Cloud](https://v2.dashboard.jazz.tools) (sync URL: `https://v2.sync.jazz.tools/`)&hairsp;—&hairsp;you'll also get the secrets you need to deploy permissions later.
2216
+
1836
2217
  ## Define your schema
1837
2218
 
1838
2219
  Create `schema.ts` at the root of your project (or `src/lib/schema.ts` for SvelteKit). This is the source of truth for your data model.
@@ -1865,7 +2246,9 @@ Create the basic structure for your app with Jazz and a to-do list.
1865
2246
  ```tsx
1866
2247
 
1867
2248
  return (
1868
-
2249
+ ",
2250
+ }}
2251
+ >
1869
2252
  <h1>Todos</h1>
1870
2253
 
1871
2254
  );
@@ -1876,7 +2259,7 @@ Create the basic structure for your app with Jazz and a to-do list.
1876
2259
  <script setup lang="ts">
1877
2260
 
1878
2261
  const client = createJazzClient({
1879
- appId: "my-todo-app",
2262
+ appId: "<your-app-id>",
1880
2263
  });
1881
2264
  </script>
1882
2265
 
@@ -1899,7 +2282,7 @@ const client = createJazzClient({
1899
2282
  import TodoList from './TodoList.svelte';
1900
2283
 
1901
2284
  const client = createJazzClient({
1902
- appId: 'my-todo-app',
2285
+ appId: '<your-app-id>',
1903
2286
  });
1904
2287
  </script>
1905
2288
 
@@ -1916,6 +2299,9 @@ const client = createJazzClient({
1916
2299
  ```tsx
1917
2300
 
1918
2301
  return (
2302
+ ",
2303
+ }}
2304
+ >
1919
2305
 
1920
2306
  Todos
1921
2307
 
@@ -1939,13 +2325,15 @@ const client = createJazzClient({
1939
2325
  ```ts
1940
2326
 
1941
2327
  const db = await createDb({
1942
- appId: "my-todo-app",
2328
+ appId: "<your-app-id>",
1943
2329
  });
1944
2330
  // use db.shutdown() to clean up when finished
1945
2331
  ```
1946
2332
 
1947
- `appId` identifies your app for storage and sync. For all client config options and runtime
1948
- source overrides, see [Client Setup](/docs/getting-started/client-setup#client-config-options).
2333
+ `appId` identifies your app for storage and sync. Use the UUID you generated
2334
+ above&hairsp;—&hairsp;not a human-readable name&hairsp;—&hairsp;so your local data is already
2335
+ correctly namespaced when you add a server. For all client config options and runtime source
2336
+ overrides, see [Client Setup](/docs/getting-started/client-setup#client-config-options).
1949
2337
 
1950
2338
  ## Add a to-do
1951
2339
 
@@ -2264,22 +2652,7 @@ Framework hooks return `undefined` while loading, then an array of matching rows
2264
2652
 
2265
2653
  ## Enable sync
2266
2654
 
2267
- So far, your to-do list only works locally. To sync across devices, you need a server, permissions, and an app ID.
2268
-
2269
- ### Start a server
2270
-
2271
- Generate an app ID:
2272
-
2273
- ```bash title="Terminal"
2274
- npx jazz-tools@alpha create app
2275
- # outputs a UUID like: 019d0ba1-519a-7e01-b0eb-0059ee898e4d
2276
- ```
2277
-
2278
- Start the server with that ID. In development mode, clients auto-publish the schema when they connect, so you don't need an admin secret just to sync schema changes. The default port is 1625.
2279
-
2280
- ```bash title="Terminal"
2281
- npx jazz-tools@alpha server <your-app-id> --admin-secret secret
2282
- ```
2655
+ So far, your to-do list only works locally. To sync across devices, you need permissions published to the server.
2283
2656
 
2284
2657
  ### Add permissions
2285
2658
 
@@ -2294,33 +2667,17 @@ The server rejects all reads and writes unless you define [permissions](/docs/au
2294
2667
  });
2295
2668
  ```
2296
2669
 
2297
- Then publish the permissions bundle:
2298
-
2299
- ```bash title="Terminal"
2300
- npx jazz-tools@alpha deploy \
2301
- <your-app-id> \
2302
- --server-url http://127.0.0.1:1625 \
2303
- --admin-secret secret
2304
- ```
2670
+ Then publish the permissions bundle using the app ID and admin secret from above:
2305
2671
 
2306
2672
  ### Connect the client
2307
2673
 
2308
- Update your client config to use the same app ID, and add `serverUrl`:
2309
-
2310
- ```ts title="Client config"
2311
- {
2312
- appId: "<your-app-id>",
2313
- // Use your machine's LAN IP for mobile devices.
2314
- serverUrl: "http://127.0.0.1:1625",
2315
- }
2316
- ```
2674
+ Update your client config to add `serverUrl` Jazz Cloud is at `https://v2.sync.jazz.tools/`. If you generated an app ID above, these values are already filled in:
2317
2675
 
2318
2676
  Clients pick up the schema from the server when they connect. If you update `schema.ts` you need to [create and push a migration to the new schema](/docs/schemas/migrations) so that clients can understand existing data with the new schema.
2319
2677
 
2320
- Permissions can be updated without adding a new schema by using
2321
- `npx jazz-tools@alpha deploy <your-app-id>`.
2678
+ Permissions can be updated without a schema migration by re-running `pnpm dlx jazz-tools@alpha deploy`.
2322
2679
 
2323
- For production deployment and hosting options, see [Server Setup](/docs/getting-started/server-setup).
2680
+ For self-hosted deployments, see [Server Setup](/docs/getting-started/server-setup).
2324
2681
 
2325
2682
  ## Next steps
2326
2683
 
@@ -2331,11 +2688,11 @@ For production deployment and hosting options, see [Server Setup](/docs/getting-
2331
2688
 
2332
2689
  ## Example apps
2333
2690
 
2334
- - [Todo app (React)](https://github.com/garden-co/jazz2/tree/main/docs/examples/todo-client-localfirst-react)&hairsp;—&hairsp;the app you just built, as a complete project
2335
- - [File upload (React)](https://github.com/garden-co/jazz2/tree/main/docs/examples/file-upload-react)&hairsp;—&hairsp;image upload and rendering with Jazz
2336
- - [Wequencer (Svelte)](https://github.com/garden-co/jazz2/tree/main/docs/examples/wequencer)&hairsp;—&hairsp;collaborative real-time music sequencer
2691
+ - [Todo app (React)](https://github.com/garden-co/jazz2/tree/main/examples/docs/todo-client-localfirst-react)&hairsp;—&hairsp;the app you just built, as a complete project
2692
+ - [File upload (React)](https://github.com/garden-co/jazz2/tree/main/examples/file-upload-react)&hairsp;—&hairsp;image upload and rendering with Jazz
2693
+ - [Wequencer (Svelte)](https://github.com/garden-co/jazz2/tree/main/examples/wequencer)&hairsp;—&hairsp;collaborative real-time music sequencer
2337
2694
 
2338
- ===PAGE:quickstarts/typescript-server===
2695
+ ===PAGE:install/typescript-server===
2339
2696
  TITLE:TypeScript Server
2340
2697
  DESCRIPTION:Build a server-side to-do API with Jazz and Hono, step by step.
2341
2698
 
@@ -2353,7 +2710,7 @@ pnpm init
2353
2710
  `jazz-napi` is the native runtime for Jazz on Node.js. It bundles the query engine, storage, and sync layer as a Rust binary via NAPI. `jazz-tools` detects it automatically at runtime, but it must be listed as an explicit dependency.
2354
2711
 
2355
2712
  ```bash title="Terminal"
2356
- pnpm add jazz-tools jazz-napi hono @hono/node-server
2713
+ pnpm add jazz-tools@alpha jazz-napi@alpha hono @hono/node-server
2357
2714
  pnpm add -D typescript tsx
2358
2715
  ```
2359
2716
 
@@ -2403,7 +2760,7 @@ The server rejects all reads and writes unless you define [permissions](/docs/au
2403
2760
  Generate an app ID:
2404
2761
 
2405
2762
  ```bash title="Terminal"
2406
- npx jazz-tools@alpha create app
2763
+ pnpm dlx jazz-tools@alpha create app
2407
2764
  # outputs a UUID like: 019d0ba1-519a-7e01-b0eb-0059ee898e4d
2408
2765
  ```
2409
2766
 
@@ -2554,6 +2911,30 @@ curl -X DELETE http://localhost:3000/api/todos/<id> \
2554
2911
  - [Queries](/docs/reading/queries)&hairsp;—&hairsp;filtering, sorting, pagination, and relations
2555
2912
  - [Server Setup](/docs/getting-started/server-setup)&hairsp;—&hairsp;hosting, sync, and deployment
2556
2913
 
2914
+ ===PAGE:quickstart===
2915
+ TITLE:Quickstart
2916
+ DESCRIPTION:Scaffold a synced local-first app in one command.
2917
+
2918
+ ## Scaffold a new Jazz app
2919
+
2920
+ ```bash title="Terminal"
2921
+ pnpm create jazz
2922
+ ```
2923
+
2924
+ Pick a framework, hosting mode, and auth style when prompted. The scaffolder installs dependencies and — if you chose hosted — provisions an app on Jazz Cloud with env vars filled in for you.
2925
+
2926
+ ## What you get
2927
+
2928
+ - `schema.ts` — the source of truth for your data. Tables, types, and queries all flow from here. See [Schemas](/docs/schemas/defining-tables).
2929
+ - `permissions.ts` — row-level access, pre-wired. See [Permissions](/docs/auth/permissions).
2930
+ - A Jazz provider and a todo UI you can reshape into your own app.
2931
+
2932
+ ## Next steps
2933
+
2934
+ - **Model your own data** — edit `schema.ts`, then use `db.insert` and `db.subscribeAll` from your components. See [Writing Data](/docs/writing/writing-data) and [Queries](/docs/reading/queries).
2935
+ - **Add auth** — see [Authentication](/docs/auth/authentication) to go beyond an anonymous identity.
2936
+ - **Install into an existing app** — see [Install → Client](/docs/install/client) or [Install → TypeScript Server](/docs/install/typescript-server).
2937
+
2557
2938
  ===PAGE:reading/filters-and-sorting===
2558
2939
  TITLE:Filters, Sorting & Pagination
2559
2940
  DESCRIPTION:Filter rows with where(), sort with orderBy(), and paginate with limit/offset.
@@ -3283,10 +3664,10 @@ If you're unfamiliar with JWTs and JWKS, see the [explainer on the Authenticatio
3283
3664
  Point the Jazz server at your Better Auth JWKS endpoint:
3284
3665
 
3285
3666
  ```bash
3286
- jazz-tools server --jwks-url https://your-app.example.com/api/auth/jwks
3667
+ pnpm dlx jazz-tools@alpha server --jwks-url https://your-app.example.com/api/auth/jwks
3287
3668
  ```
3288
3669
 
3289
- For a full working example, see the [Better Auth chat example](https://github.com/garden-co/jazz/tree/main/examples/auth-betterauth-chat).
3670
+ For a full working example, see the [Better Auth chat example](https://github.com/garden-co/jazz2/tree/main/examples/auth-betterauth-chat).
3290
3671
 
3291
3672
  If your users start unauthenticated and sign up later, see [Local-first auth](/docs/auth/local-first-auth#signing-up-with-betterauth) for how to preserve their identity across the transition.
3292
3673
 
@@ -3324,10 +3705,10 @@ function JazzWithWorkOS() {
3324
3705
  Point the Jazz server at the WorkOS JWKS endpoint:
3325
3706
 
3326
3707
  ```bash
3327
- jazz-tools server --jwks-url https://api.workos.com/sso/jwks/client_01ABC...
3708
+ pnpm dlx jazz-tools@alpha server --jwks-url https://api.workos.com/sso/jwks/client_01ABC...
3328
3709
  ```
3329
3710
 
3330
- For a full working example, see the [WorkOS chat example](https://github.com/garden-co/jazz/tree/main/examples/auth-workos-chat).
3711
+ For a full working example, see the [WorkOS chat example](https://github.com/garden-co/jazz2/tree/main/examples/auth-workos-chat).
3331
3712
 
3332
3713
  See [Server setup](/docs/getting-started/server-setup) for the full set of server flags.
3333
3714
 
@@ -3359,7 +3740,7 @@ Any provider that issues JWTs and exposes a JWKS endpoint will work. The key pat
3359
3740
 
3360
3741
  Jazz uses the JWT `sub` claim as `session.user_id`. If your provider keeps `sub` fixed to its own user ID, mint the JWT with `sub` set to the Jazz user ID yourself — either via a custom `getSubject` hook on the provider or by issuing the JWT directly from your server.
3361
3742
 
3362
- Full working examples: [Better Auth chat](https://github.com/garden-co/jazz/tree/main/examples/auth-betterauth-chat), [WorkOS chat](https://github.com/garden-co/jazz/tree/main/examples/auth-workos-chat).
3743
+ Full working examples: [Better Auth chat](https://github.com/garden-co/jazz2/tree/main/examples/auth-betterauth-chat), [WorkOS chat](https://github.com/garden-co/jazz2/tree/main/examples/auth-workos-chat).
3363
3744
 
3364
3745
  ===PAGE:recipes/nested-data===
3365
3746
  TITLE:"Nested data with permission inheritance"
@@ -3833,11 +4214,11 @@ See [Writing Data](/docs/writing/writing-data#write-durability-tiers) for detail
3833
4214
 
3834
4215
  Read durability controls when the **first result** of a query or subscription is delivered.
3835
4216
 
3836
- | Option | Values | Default | What it does |
3837
- | -------------- | ----------------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
3838
- | `tier` | `"local"` \| `"edge"` \| `"global"` | Same as writes | How far the first result must come from before the query delivers. |
3839
- | `localUpdates` | `"immediate"` \| `"deferred"` | `"immediate"` | With `"immediate"`, your own local writes appear in the subscription while still waiting for the tier to confirm the initial snapshot. This only takes effect after the subscription has settled at least once. With `"deferred"`, all delivery is held until the tier confirms. |
3840
- | `propagation` | `"full"` \| `"local-only"` | `"full"` | With `"full"`, the subscription is sent to upstream servers, which push matching data back. With `"local-only"`, only local storage is queried&hairsp;—&hairsp;no server communication. |
4217
+ | Option | Values | Default | What it does |
4218
+ | -------------- | ----------------------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
4219
+ | `tier` | `"local"` \| `"edge"` \| `"global"` | `"local"` (browser/client) / `"edge"` (backend/server) | How far the first result must come from before the query delivers. |
4220
+ | `localUpdates` | `"immediate"` \| `"deferred"` | `"immediate"` | With `"immediate"`, your own local writes appear in the subscription while still waiting for the tier to confirm the initial snapshot. This only takes effect after the subscription has settled at least once. With `"deferred"`, all delivery is held until the tier confirms. |
4221
+ | `propagation` | `"full"` \| `"local-only"` | `"full"` | With `"full"`, the subscription is sent to upstream servers, which push matching data back. With `"local-only"`, only local storage is queried&hairsp;—&hairsp;no server communication. |
3841
4222
 
3842
4223
  These options apply to:
3843
4224
 
@@ -4087,6 +4468,66 @@ const session = useSession(); // ShallowRef<{ user_id: string } | null>
4087
4468
  const session = getSession(); // { user_id: string } | null
4088
4469
  ```
4089
4470
 
4471
+ ===PAGE:reference/inspector===
4472
+ TITLE:Inspector
4473
+ DESCRIPTION:Standalone admin client for exploring Jazz sync servers, schemas, permissions, and live queries.
4474
+
4475
+ The [Jazz Inspector](https://v2.inspector.jazz.tools/) is a standalone client for inspecting a Jazz
4476
+ app through any reachable sync server. It is not tied to Jazz Cloud: if you have a server URL, app
4477
+ ID, and admin credential, you can connect to that app's sync server directly.
4478
+
4479
+ The inspector uses `adminSecret`, not an end-user session token. On the sync connection, that
4480
+ authenticates the client as the backend, so normal permission policies are bypassed. Treat it like
4481
+ production infrastructure access and never expose it to end users.
4482
+
4483
+ ## Connecting
4484
+
4485
+ Open [v2.inspector.jazz.tools](https://v2.inspector.jazz.tools/) and enter:
4486
+
4487
+ - **Server URL**&hairsp;—&hairsp;base URL of the sync server
4488
+ - **App ID**&hairsp;—&hairsp;Jazz app namespace to inspect
4489
+ - **Admin secret**&hairsp;—&hairsp;app admin credential
4490
+ - **Env**&hairsp;—&hairsp;logical environment such as `dev`, `staging`, or `prod`
4491
+ - **Branch**&hairsp;—&hairsp;logical branch, usually `main`
4492
+
4493
+ After connecting, choose the published schema hash you want to inspect. The inspector stores the
4494
+ connection locally so you can reopen it without re-entering everything each time.
4495
+
4496
+ ## Features
4497
+
4498
+ ### Data Explorer
4499
+
4500
+ Browse every table in the selected schema, inspect rows reactively, sort columns, and add typed
4501
+ filters. Relation cells link to the referenced table, so you can follow relations without manually
4502
+ rebuilding the query.
4503
+
4504
+ The explorer also supports admin writes: edit cells inline, open a row sidebar for full-row edits,
4505
+ insert new rows, and delete existing ones.
4506
+
4507
+ ### Schema and permissions view
4508
+
4509
+ Each table includes a schema view showing the stored structural schema for that table. In standalone
4510
+ mode, the same page also shows the currently published sync-server permissions for that table, which
4511
+ is useful when you want to confirm what policy bundle the server is enforcing.
4512
+
4513
+ ### Live Query
4514
+
4515
+ The Live Query tab shows active server-managed subscriptions grouped by query on the connected sync
4516
+ server. You can inspect the table, propagation mode, branches, and compiled query JSON, then jump
4517
+ straight into the matching table view in Data Explorer.
4518
+
4519
+ ### Schema switching
4520
+
4521
+ If an app has multiple published schema hashes, the inspector lets you switch between them without
4522
+ reconnecting. This is useful when checking migrations, comparing stored shapes, or debugging data
4523
+ that still lives on older schema branches.
4524
+
4525
+ ## DevTools panel
4526
+
4527
+ The same inspector UI also exists as a browser DevTools panel for local debugging. The hosted
4528
+ client at [v2.inspector.jazz.tools](https://v2.inspector.jazz.tools/) is the easiest way to inspect
4529
+ a remote or self-hosted sync server directly.
4530
+
4090
4531
  ===PAGE:reference/internals===
4091
4532
  TITLE:Advanced Internals
4092
4533
  DESCRIPTION:"How Jazz works under the hood: raw tables, row histories, sync, the query pipeline, and the browser architecture."
@@ -4338,14 +4779,14 @@ uses that catalogue state to resolve schema context on demand.
4338
4779
 
4339
4780
  Jazz separates two durability questions:
4340
4781
 
4341
- | Signal | Gates | Question it answers |
4342
- | ----------------------- | ------------------------ | ------------------------------------------ |
4343
- | `QuerySettled` | First read delivery | "Has the query result settled at tier T?" |
4344
- | Write tier confirmation | Durable write completion | "Has this write been confirmed at tier T?" |
4782
+ | Signal | Gates | Question it answers |
4783
+ | ----------------------- | ------------------------------------ | ------------------------------------------ |
4784
+ | `QuerySettled` | First read delivery | "Has the query result settled at tier T?" |
4785
+ | Write tier confirmation | `.wait({ tier })` promise completion | "Has this write been confirmed at tier T?" |
4345
4786
 
4346
4787
  Both use the same tier lattice (`local` < `edge` < `global`), but they answer different
4347
4788
  questions. A query's first callback is held until `QuerySettled` reaches the requested tier. A
4348
- durable write promise resolves when the requested tier confirms the write.
4789
+ `.wait({ tier })` promise resolves when the requested tier confirms the write.
4349
4790
 
4350
4791
  The read durability tier only gates the **first** delivery of a subscription. After the initial
4351
4792
  snapshot arrives at the requested tier, later updates are delivered as they reach the local node.
@@ -4361,7 +4802,7 @@ exposes the Jazz docs as tools any MCP-compatible AI assistant can call during a
4361
4802
 
4362
4803
  The docs served are always matched to the version of `jazz-tools` you install, so your
4363
4804
  assistant is reading documentation for the exact API you have available. To use a different
4364
- version's docs, specify a version in the npx command (e.g. `npx jazz-tools@2.0.0 mcp`).
4805
+ version's docs, specify a version tag instead (e.g. `pnpm dlx jazz-tools@2.0.0 mcp`).
4365
4806
 
4366
4807
  Node 22.13 or later is recommended for the best search results. Earlier versions fall back to
4367
4808
  basic keyword search.
@@ -4453,7 +4894,7 @@ get_doc(slug: string)
4453
4894
  ```
4454
4895
 
4455
4896
  Slugs match the URL path under `/docs/` — for example `schemas/defining-tables`, `reading/queries`, or
4456
- `quickstarts/client`. Use `list_pages` to discover available slugs.
4897
+ `install/client`. Use `list_pages` to discover available slugs.
4457
4898
 
4458
4899
  ===PAGE:reference/where-operators===
4459
4900
  TITLE:WHERE Operators
@@ -4704,34 +5145,34 @@ Traditional migration systems run a linear sequence and require peers to converg
4704
5145
  1. If this is the first migration you are creating, run:
4705
5146
 
4706
5147
  ```bash
4707
- npx jazz-tools@alpha migrations create
5148
+ pnpm dlx jazz-tools@alpha migrations create
4708
5149
  ```
4709
5150
 
4710
5151
  This creates an initial snapshot of your schema in `migrations/snapshots/`. No migration file is created yet because there is no previous schema to diff against.
4711
5152
 
4712
5153
  2. **Edit `schema.ts`**&hairsp;—&hairsp;change the data shape as needed.
4713
- 3. **Validate locally**&hairsp;—&hairsp;optionally run `npx jazz-tools@alpha validate` to catch authoring errors
4714
- before connecting.
5154
+ 3. **Validate locally**&hairsp;—&hairsp;optionally run `pnpm dlx jazz-tools@alpha validate` to ensure policies
5155
+ are valid before they are deployed. `deploy` does not run these checks.
4715
5156
  4. **Create a migration stub for the updated schema**&hairsp;—&hairsp;run:
4716
5157
 
4717
5158
  ```bash
4718
- npx jazz-tools@alpha migrations create --name <your-migration-name>
5159
+ pnpm dlx jazz-tools@alpha migrations create --name <your-migration-name>
4719
5160
  ```
4720
5161
 
4721
5162
  By default, Jazz diffs the latest committed snapshot in `migrations/snapshots/` against the
4722
5163
  current schema and writes a stub migration file into `migrations/`. It also saves a snapshot of the generated schema.
4723
5164
 
4724
- 5. **Review and customise**&hairsp;—&hairsp; the migration, if needed (see below).
5165
+ 5. **Review and customise**&hairsp;—&hairsp;the migration, if needed (see below).
4725
5166
  6. **Publish**&hairsp;—&hairsp;push the migration to the server:
4726
5167
 
4727
5168
  ```bash
4728
- npx jazz-tools@alpha migrations push <appId> <fromHash> <toHash>
5169
+ pnpm dlx jazz-tools@alpha migrations push <appId> <fromHash> <toHash>
4729
5170
  ```
4730
5171
 
4731
5172
  If you also want to publish the current schema, the migration and permissions in one step, you can run:
4732
5173
 
4733
5174
  ```bash
4734
- npx jazz-tools@alpha deploy <appId>
5175
+ pnpm dlx jazz-tools@alpha deploy <appId>
4735
5176
  ```
4736
5177
 
4737
5178
  `deploy` publishes the current schema if the server does not already know it, checks whether the
@@ -4739,7 +5180,7 @@ Traditional migration systems run a linear sequence and require peers to converg
4739
5180
  if needed, and then publishes the current permissions.
4740
5181
 
4741
5182
  Permission-only changes in `permissions.ts` do not need migrations, but they do still require
4742
- `npx jazz-tools@alpha deploy <appId>`. See [Permissions](/docs/auth/permissions) for details.
5183
+ `pnpm dlx jazz-tools@alpha deploy <appId>`. See [Permissions](/docs/auth/permissions) for details.
4743
5184
 
4744
5185
  ## Generated stub
4745
5186
 
@@ -4878,8 +5319,8 @@ The Jazz server will detect when there are rows that are not reachable from the
4878
5319
  In order to do so, you'll need to **create the migration using explicit to/from schema hashes**:
4879
5320
 
4880
5321
  ```bash
4881
- npx jazz-tools@alpha migrations create <appId> --fromHash <fromHash>
4882
- npx jazz-tools@alpha migrations create <appId> --fromHash <fromHash> --toHash <toHash>
5322
+ pnpm dlx jazz-tools@alpha migrations create <appId> --fromHash <fromHash>
5323
+ pnpm dlx jazz-tools@alpha migrations create <appId> --fromHash <fromHash> --toHash <toHash>
4883
5324
  ```
4884
5325
 
4885
5326
  `--toHash` defaults to the current local schema. When a requested hash is not already saved locally, Jazz resolves it from the
@@ -4887,13 +5328,13 @@ server and saves a snapshot in `migrations/snapshots/`.
4887
5328
 
4888
5329
  ## Exporting the compiled schema
4889
5330
 
4890
- `npx jazz-tools@alpha schema export` prints the compiled structural schema as JSON to stdout. It
5331
+ `pnpm dlx jazz-tools@alpha schema export` prints the compiled structural schema as JSON to stdout. It
4891
5332
  also saves a snapshot of the schema in the local snapshot directory.
4892
5333
 
4893
5334
  ```bash
4894
- npx jazz-tools@alpha schema export
4895
- npx jazz-tools@alpha schema export --schema-dir ./packages/app
4896
- npx jazz-tools@alpha schema export <appId> --schema-hash <hash> --server-url http://localhost:4200 --admin-secret <secret>
5335
+ pnpm dlx jazz-tools@alpha schema export
5336
+ pnpm dlx jazz-tools@alpha schema export --schema-dir ./packages/app
5337
+ pnpm dlx jazz-tools@alpha schema export <appId> --schema-hash <hash> --server-url http://localhost:4200 --admin-secret <secret>
4897
5338
  ```
4898
5339
 
4899
5340
  Without `--schema-hash`, Jazz exports the current local `schema.ts`. With `--schema-hash`, it
@@ -5003,14 +5444,13 @@ policies.
5003
5444
 
5004
5445
  const file = await db.createFileFromBlob(app, blob, { tier: "edge" });
5005
5446
 
5006
- return db.insert(
5007
- app.uploads,
5008
- {
5447
+ return db
5448
+ .insert(app.uploads, {
5009
5449
  owner_id: EXAMPLE_OWNER_ID,
5010
5450
  label: "Profile photo",
5011
5451
  fileId: file.id,
5012
- },
5013
- ).wait({ tier: "edge" });
5452
+ })
5453
+ .wait({ tier: "edge" });
5014
5454
  }
5015
5455
  ```
5016
5456
 
@@ -5084,14 +5524,13 @@ Returns the file row; store its id on your own table.
5084
5524
  mimeType: "application/octet-stream",
5085
5525
  });
5086
5526
 
5087
- return db.insert(
5088
- app.uploads,
5089
- {
5527
+ return db
5528
+ .insert(app.uploads, {
5090
5529
  owner_id: EXAMPLE_OWNER_ID,
5091
5530
  label: "Camera import",
5092
5531
  fileId: file.id,
5093
- }
5094
- ).wait({ tier: "edge" });
5532
+ })
5533
+ .wait({ tier: "edge" });
5095
5534
  }
5096
5535
  ```
5097
5536
 
@@ -5377,7 +5816,7 @@ pub async fn write_todo_crud(client: &JazzClient, existing_id: ObjectId) -> jazz
5377
5816
 
5378
5817
  ### Partial updates and nullable fields
5379
5818
 
5380
- `update(...)` only modify the keys you pass.
5819
+ `update(...)` only modifies the keys you pass.
5381
5820
  Omitted fields are left unchanged; explicitly passing `undefined` also leaves a field unchanged.
5382
5821
  To clear a nullable column in TypeScript, pass `null`.
5383
5822
  Required fields cannot be set to `null`.
@@ -5408,23 +5847,22 @@ pub async fn clear_nullable_fields(
5408
5847
 
5409
5848
  When using `insert(...).wait({ tier })`, `update(...).wait({ tier })`, or `delete(...).wait({ tier })`, the tier controls how far the mutation must propagate before the promise resolves: locally on the client (`local`), the nearest edge server (`edge`), or the global core (`global`).
5410
5849
 
5411
- | Tier | Resolves when |
5412
- | -------- | ----------------------------------- |
5413
- | `local` | Persisted to local OPFS |
5414
- | `edge` | Acknowledged by nearest sync server |
5415
- | `global` | Propagated to global core |
5850
+ | Tier | Resolves when | Default for |
5851
+ | -------- | ----------------------------------- | -------------- |
5852
+ | `local` | Persisted to local OPFS | Browser/client |
5853
+ | `edge` | Acknowledged by nearest sync server | Backend/server |
5854
+ | `global` | Propagated to global core | — |
5416
5855
 
5417
5856
  ```ts
5418
5857
 
5419
- const { id } = await db.insert(
5420
- app.todos,
5421
- {
5858
+ const { id } = await db
5859
+ .insert(app.todos, {
5422
5860
  title: "Write docs with durability tier",
5423
5861
  done: false,
5424
5862
  owner_id: EXAMPLE_OWNER_ID,
5425
5863
  projectId: EXAMPLE_PROJECT_ID,
5426
- },
5427
- ).wait({ tier: "edge" });
5864
+ })
5865
+ .wait({ tier: "edge" });
5428
5866
 
5429
5867
  await db.update(app.todos, id, { done: true }).wait({ tier: "global" });
5430
5868
  await db.delete(app.todos, id).wait({ tier: "global" });
@@ -5452,9 +5890,7 @@ See [Durability Tiers](/docs/reference/durability-tiers) for the full reference,
5452
5890
 
5453
5891
  Need to clear local data during development? See [How do I reset browser storage?](/docs/faq#reset-browser-storage)
5454
5892
 
5455
- ## Write handles
5456
-
5457
- Write handles let you wait for a write to persisted up to a specific durability tier, and also access the value (in the case of inserts).
5893
+ `wait({ tier })` resolves when the batch reaches the requested durability tier. If the batch is rejected, it rejects with `PersistedWriteRejectedError` instead of hanging.
5458
5894
 
5459
5895
  ```ts
5460
5896
  const pending = db.insert(app.todos, {
@@ -5474,7 +5910,13 @@ try {
5474
5910
  }
5475
5911
  ```
5476
5912
 
5477
- `wait({ tier })` resolves when the batch reaches the requested durability tier. If the batch is rejected, it rejects with `PersistedWriteRejectedError` instead of hanging.
5913
+ You can also set a global `onMutationError` handler that will be notified anytime a write that was not explicitly awaited fails:
5914
+
5915
+ ```ts
5916
+ db.onMutationError((error) => {
5917
+ console.error("DB mutation failed: ", error);
5918
+ });
5919
+ ```
5478
5920
 
5479
5921
  ## Explicit batches
5480
5922
 
@@ -5507,4 +5949,4 @@ batch.insert(app.todos, { title: "Grouped direct write", done: false });
5507
5949
  batch.update(app.todos, todoId, { done: true });
5508
5950
 
5509
5951
  console.log(batch.batchId());
5510
- ```
5952
+ ```
Binary file
Binary file
Binary file
Binary file
@@ -353,29 +353,5 @@ describe("packaged docs index", () => {
353
353
  expect(txt).not.toContain("allowSelfSigned");
354
354
  expect(txt).not.toContain("jazz-server --jwks-url https://your-app.example.com/api/auth/jwks");
355
355
  });
356
- it("ships current auth docs in docs-index.db", () => {
357
- const db = new DatabaseSync(join(packageBinDir, "docs-index.db"));
358
- try {
359
- const localFirstPage = db
360
- .prepare("SELECT body FROM pages WHERE slug = 'auth/local-first-auth'")
361
- .get();
362
- const serverSetupPage = db
363
- .prepare("SELECT body FROM pages WHERE slug = 'getting-started/server-setup'")
364
- .get();
365
- const quickstartPage = db
366
- .prepare("SELECT body FROM pages WHERE slug = 'quickstarts/typescript-server'")
367
- .get();
368
- const authProviderPage = db
369
- .prepare("SELECT body FROM pages WHERE slug = 'recipes/auth-provider-integration'")
370
- .get();
371
- expect(localFirstPage?.body).toContain("jazz-tools server --allow-local-first-auth");
372
- expect(serverSetupPage?.body).toContain("--allow-local-first-auth");
373
- expect(quickstartPage?.body).toContain('allowLocalFirstAuth: process.env.JAZZ_ALLOW_LOCAL_FIRST_AUTH !== "false"');
374
- expect(authProviderPage?.body).toContain("jazz-tools server --jwks-url https://your-app.example.com/api/auth/jwks");
375
- }
376
- finally {
377
- db.close();
378
- }
379
- });
380
356
  });
381
357
  //# sourceMappingURL=build-index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-index.test.js","sourceRoot":"","sources":["../../src/mcp/build-index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-index.test.js","sourceRoot":"","sources":["../../src/mcp/build-index.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jazz-tools",
3
- "version": "2.0.0-alpha.38",
3
+ "version": "2.0.0-alpha.39",
4
4
  "description": "Jazz TypeScript SDK, React/Vue/Svelte bindings, and CLI tools",
5
5
  "bin": {
6
6
  "jazz-tools": "bin/jazz-tools.js"
@@ -109,8 +109,8 @@
109
109
  "json-schema-to-ts": "^3.1.1",
110
110
  "pluralize-esm": "^9.0.5",
111
111
  "web-streams-polyfill": "^4.2.0",
112
- "jazz-rn": "2.0.0-alpha.38",
113
- "jazz-wasm": "2.0.0-alpha.38"
112
+ "jazz-rn": "2.0.0-alpha.39",
113
+ "jazz-wasm": "2.0.0-alpha.39"
114
114
  },
115
115
  "devDependencies": {
116
116
  "@better-auth/test-utils": "^1.5.5",
@@ -172,7 +172,7 @@
172
172
  }
173
173
  },
174
174
  "optionalDependencies": {
175
- "jazz-napi": "2.0.0-alpha.38"
175
+ "jazz-napi": "2.0.0-alpha.39"
176
176
  },
177
177
  "engines": {
178
178
  "node": ">=20"