# What changed in dexie

> 45 changes in dexie 4 from its official release notes, upgrade guides and advisories: 1 breaking, 15 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/npm/dexie/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## dexie 4

### Breaking changes

- Deleting a dotted key whose intermediate path is missing now does nothing instead of creating empty intermediate objects. (4.4.3) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.3)

### New APIs and options

- Adds Facebook, LinkedIn, and Discord provider types. (4.4.6) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.6)
- The string offloading option is renamed from maxStringLength; the old name remains a backward-compatible alias. (4.4.3) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.3)
- Configure `blobMode: 'lazy'` to download blobs on-demand instead of eagerly after sync; the default is 'eager'. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
- An observable reports blob download progress. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
- Sets the string offloading threshold; the default is 32768 characters. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
- Adds a type for the /auth-providers endpoint response. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)
- Configure whether social/OAuth authentication is enabled; it defaults to true, and setting it to false always uses the OTP flow. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)
- Fetches available authentication providers from the server. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)
- Login can specify an OAuth provider; without one, users see a provider selection dialog when providers are configured. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)
- LoginHints accepts the Dexie Cloud authorization code from an OAuth callback. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)
- Adds a type for OAuth provider metadata. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)
- Set a custom OAuth callback redirect URI; it defaults to window.location.href for web SPAs. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)
- LoginHints accepts an optional redirect path for the OAuth redirect URI. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)
- Adds an experimental React hook for Suspense integration that suspends until data is available. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)
- Adds an experimental React hook for Suspense integration. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)

### Performance

- Uses IndexedDB 3.0 getAll(options) for key range queries, reducing overhead for collection operations. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
- Dexie Cloud offloads long strings to blob storage during sync while retaining full strings in local IndexedDB and resolving them as regular strings on read. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)

### Behavior and default changes

- Anonymous users can download offloaded blobs; previously, they could not. (4.4.2) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.2)
- Blob and File objects are always offloaded regardless of size. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
- Dexie Cloud automatically offloads large binary data to cloud blob storage during sync; BlobRefs resolve to original types on first read. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
- The default login GUI adds provider selection and branded provider buttons when OAuth providers are available, with fallback to OTP when none are configured. (4.3.0) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.3.0)

### Fixes and other changes

- Filtered chunked exports no longer produce invalid JSON when a later chunk contains no rows matching the active filter. (4.4.6) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.6)
- Tables new to a client are detected by comparing declared and persisted cloud schemas, marked for initial synchronization, and retain pending sync state until the server acknowledges completion. (4.4.6) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.6)
- Multiple updating-hook subscribers now reliably receive the record modifications object when using the minified production build. (4.4.6) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.6)
- Opening a database no longer fails when a primary key or index is named after an inherited Object property such as constructor, toString, or valueOf. (4.4.5) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.5)
- If the server rejects a locally unexpired refresh token, login falls back to the regular fetchTokens authentication path; OAuth redirect errors still propagate normally. (4.4.5) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.5)
- The TypeScript definition for Dexie.transaction() now includes the missing table4 parameter, aligning it with the other table parameters. (4.4.4) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.4)
- In cloned cache mode, query results are now deeply cloned on read, isolating them from in-place consumer mutations so subsequent live-queries can detect changes. (4.4.4) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.4)
- Blob writebacks now use BlobSavingQueue.saveBlobs() to open a Dexie read-write transaction in a fresh JS task, preventing PSD context loss after async fetch. (4.4.3) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.3)
- In immutable cache mode, sortBy() sorts on a copy rather than mutating a frozen array, avoiding a TypeError. (4.4.3) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.3)
- Applying a server-side $logins update now guards against empty changeSpec objects after key deletion, preventing an inline primary key from being overwritten with undefined. (4.4.3) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.3)
- Pending blobs are downloaded in chunks with a query limit, keeping memory usage bounded. (4.4.3) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.3)
- Blob fetch requests use cache: no-store to avoid browser caching of raw blob responses and double-storing them. (4.4.3) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.3)
- A request for a blob whose download has started but is not yet persisted reuses the existing download promise instead of starting another download. (4.4.3) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.3)
- Hot module replacement no longer breaks the Y.js awareness connection in development environments. (4.4.2) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.2)
- The primary key is stripped from changeSpecs in update mutations, preventing sync failures in certain edge cases. (4.4.2) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.2)
- Queries using anyOf(), each(), or ignore-case queries no longer fail on tables containing blobs, large binary data, or very long strings. (4.4.2) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.2)
- Calling this in a Service Worker context no longer crashes. (4.4.2) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.2)
- Logout preserves syncState, avoiding an unwanted loading spinner on re-login. (4.4.2) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.2)
- Server updates over websocket are no longer intermittently ignored. (4.4.2) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.2)
- Dexie.connections uses FinalizationRegistry, and Dexie enforces maxConnections. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
- Fixes rare circumstances where liveQuery could fail to emit values. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
- Avoids direct React.use access for React versions earlier than 19. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
- Fixes UTF-8 corruption for non-ASCII strings during import. (4.4.1) — [release notes](https://github.com/dexie/Dexie.js/releases/tag/v4.4.1)
