Dexie Logo

The smarter way to use

Works with any JavaScript framework. Start local, add sync when ready. No complicated setup, no learning curve - just natural, intuitive code.
Works with your favorite framework:
React
React
Vue
Vue
Svelte
Svelte
Angular
Angular
Vanilla JS
Vanilla JS
Dexie Cloud
Dexie Cloud
React
React Example
import { useLiveQuery } from "dexie-react-hooks";
import { db } from "./db";

export function TaskList() {
  const tasks = useLiveQuery(
    () => db.tasks.orderBy("created").toArray()
  );

  return (
    <ul>
      {tasks?.map(task => 
        <li key={task.id}>{task.title}</li>
      )}
    </ul>
  );
}

Perfect integration with React hooks and state management

What is Dexie.js?

The Smarter Way to Use IndexedDB

The Smarter IndexedDB

Dexie is a lightweight API over IndexedDB that removes callback complexity and exposes a promise/async-friendly API.

  • Less code, better error handling
  • Higher readability
  • Promise-based operations

Built-in Reactivity

liveQuery() keeps UI in sync with DB in real-time – components update when relevant records change, even across multiple tabs.

  • Real-time UI updates
  • Cross-tab synchronization
  • Automatic re-rendering

Performance & Modeling

Indexes, transactions, and clear schema definition make it fast to query and safe to write – without wrestling with IndexedDB's raw API.

  • Optimized querying with indexes
  • Transaction safety
  • Clear schema definition

What is Dexie Cloud?

Offline-First Sync Without the Complexity

Local-First Without Backend Building

Add two-way sync, user auth, and access control on top of Dexie – without having to develop and maintain your own sync API.

  • No backend development needed
  • Built-in sync infrastructure
  • Focus on your app, not plumbing

Security & Permissions

Data is private by default; share selectively via 'realms', roles, and members with fine-grained access control.

  • Private by default
  • Flexible sharing with realms
  • Role-based permissions

Developer Experience

Start free with OTP login out-of-the-box, scale up as users grow; manage seats in Cloud Manager with transparent pricing.

  • Free tier for getting started
  • Built-in authentication
  • Simple scaling model

Deployment Flexibility

Run as SaaS or self-hosted (Node.js + PostgreSQL) when you need full control over your infrastructure.

  • SaaS for simplicity
  • Self-hosted option available
  • Full infrastructure control
  • Full source code access available

Why choose Dexie?

Three powerful advantages that make IndexedDB development a breeze
Reactive

Dexie 4 integrates better with front-end frameworks. Query the db without boilerplate and let your components mirror the database in real time.

Easy to learn

Dexie was written to be straightforward and easy to learn. If you've ever had to work with native IndexedDB then you'll certainly appreciate Dexie's concise API.

Easy to sync

With only a few lines of extra code, you can build a consistent, authenticated and access controlled local-first app!


From local to global in 4 steps

Start local, add reactivity and scale with sync and collaboration
1Declare your database
const db = new Dexie('MyDatabase');

// Declare tables, IDs and indexes
db.version(1).stores({
  friends: '++id, name, age'
});
2Then run some queries
// Find some old friends
const oldFriends = await db.friends
  .where('age').above(75)
  .toArray();

// or make a new one
await db.friends.add({
  name: 'Camilla',
  age: 25,
  street: 'East 13:th Street',
  picture: await getBlob('camilla.png')
});
3Live Queries
import { useLiveQuery } from "dexie-react-hooks";

function FriendList() {
  const friends = useLiveQuery(
    () => db.friends
      .where("age")
      .between(18, 65)
      .toArray()
  );

  return (
    <ul>
      {friends?.map(friend =>
        <li key={friend.id}>
          {friend.name}, {friend.age}
        </li>
      )}
    </ul>
  );
}
4Sync
import dexieCloud from "dexie-cloud-addon";

const db = new Dexie('SyncedDB', {
  addons: [dexieCloud]
});

db.version(1).stores({
  friends: '@id, name, age' // '@' for global ID
});

db.cloud.configure({
  databaseUrl: "https://yourdatabase.dexie.cloud",
  requireAuth: true
});

// Now it syncs automatically! 🚀

Local Storage

Queries

Reactivity

Global Sync


Kickstart with templates

From local storage to global sync - choose your path
Dexie Cloud Vanilla

The simplest possible Dexie Cloud application, built with vanilla JavaScript. It is a great starting point for building your own Dexie Cloud application.

  • Any JavaScript framework
  • Lightweight and simple
  • Perfect for chrome extensions
  • Works with fake-indexeddb
  • Build-in authentication
Dexie Cloud Starter

Dexie Cloud Starter is a fully functional showcase application. Inspired by the popular MyMind app, it demonstrates how to build a collaborative note-taking application using Dexie Cloud.

  • NextJS and TypeScript
  • Offline storage and sync
  • Conflict-free rich text editing
  • Tiptap and Y.js
  • Image upload and storage
  • Collaborative editing and awareness
  • Full text search in notes
  • Full sharing support
Sveltekit Dexie-boilerplate

An example of a Dexie Cloud application built with Svelte. It is a great starting point for building your own Dexie Cloud application using Svelte.

  • Svelte framework
  • Build-in authentication

Ready to build offline-first apps? Start with Dexie.js for local storage, add Dexie Cloud when you need sync, auth, and collaboration. No backend required.

© 2014-2025 Awarica AB

Made with love for great people.

Read Terms & Conditions and Privacy Policy.