InstantDB
Visit ProjectCreate, manage, and update applications on InstantDB—the modern Firebase.
Visit ProjectCategory
Tags
What is InstantDB?
InstantDB is a modern Firebase alternative that allows developers to create, manage, and update applications with a real-time database. It handles data fetching, permission checking, offline caching, and provides optimistic updates with rollback capabilities. All queries are multiplayer by default, and the platform supports ephemeral updates like cursors and online status tracking.
How to Use InstantDB?
- Sign Up: Create an account on instantdb.com.
- Get Started: Follow the documentation to set up your project.
- Integrate SDK: Use the provided SDKs for JavaScript, React, or React Native to interact with the database.
- Write Queries: Use InstaQL, a relational query language, to fetch data in the desired shape.
- Build UI: Utilize real-time updates and multiplayer support to enhance your app's user experience.
Key Features of InstantDB
- Real-time database: Handled by sync server written in Clojure with Postgres.
- Multiplayer queries: All requests are collaborative by default.
- Offline caching: Cache recent queries with IndexedDB (web) or AsyncStorage (React Native).
- Optimistic updates: Automatic rollbacks for smooth user interactions.
- Epemeral updates: Supports real-time cursors, online status, etc.
- Relational queries: InstaQL language for easy querying.
- Permission system: Uses Google's CEL library to enforce security.
Use Cases of InstantDB
- Building collaborative apps: Seamless multiplayer experience.
- Offline-first applications: Data persists and syncs when connection resumes.
- Real-time analytics dashboards: Updated live without refreshing.
- Social platforms: Handle chat messages, feeds, and interactions in real-time.
FAQ from InstantDB
-
What frameworks does InstantDB support? InstantDB provides SDKs for JavaScript, React, and React Native.
-
Is InstantDB free? Yes, InstantDB offers a free tier with no interruptions, though paid tiers are available for larger projects.
-
How does InstantDB handle security? InstantDB uses a permission system powered by Google's CEL library to enforce security rules.
-
Can I use InstantDB offline? Yes! InstantDB persists cached data (via IndexedDB/AsyncStorage) and syncs when the connection is restored.
Get Started · Examples · Try the Demo · Docs · Discord
Instant is a modern Firebase. We make you productive by giving your frontend a real-time database. You write relational queries in the shape of the data you want and Instant handles all the data fetching, permission checking, and offline caching. When you change data, optimistic updates and rollbacks are handled for you as well. Plus, every query is multiplayer by default. We also support ephemeral updates, like cursors, or who's online. Currently we have SDKs for Javascript, React, and React Native. How does it look? Here's a barebones chat app in about 12 lines: javascript // ༼ つ ◕_◕ ༽つ Real-time Chat // ---------------------------------- // * Updates instantly // * Multiplayer // * Works offline import { init, tx, id } from "@instantdb/react"; const db = init({ appId: process.env.NEXT_PUBLIC_APP_ID, }); function Chat() { // 1. Read const { isLoading, error, data } = db.useQuery({ messages: {}, }); // 2. Write const addMessage = (message) => { db.transact(tx.messages[id()].update(message)); }; // 3. Render! return ; }
Want to see for yourself? try a demo in your browser. ## Motivation Writing modern apps is full of schleps. Most of the time you start with the server: stand up databases, caches, ORMs, and endpoints. Then you write client-side code: stores, selectors, mutators. Finally you paint a screen. If you add multiplayer you need to think about stateful servers, and if you support offline mode, you need to think about IndexedDB and transaction queues. To make things worse, whenever you add a new feature, you go through the same song and dance over and over again: add models, write endpoints, stores, selectors, and finally the UI. Could it be better? In 2021, we realized that most of the schleps we face as UI engineers are actually database problems in disguise. (We got into greater detail in this essay)
If you had a database on the client, you wouldn't need to think about stores, selectors, endpoints, or local caches: just write queries. If these queries were multiplayer by default, you wouldn't have to worry about stateful servers. And if your database supported rollback, you'd get optimistic updates for free. So we built Instant. Instant gives you a database you can use in the client, so you can focus on what’s important: building a great UX for your users, and doing it quickly. ## Architectural Overview Here's how Instant works at a high level:
Under the hood, we store all user data as triples in one big Postgres database. A multi-tenant setup lets us offer a free tier that never pauses. A sync server written in Clojure talks to Postgres. We wrote a query engine that understands datalog and InstaQL, a relational language that looks a lot like GraphQL: javascript // give me all users, their posts and comments { users: { posts: { comments: { } } } }
Taking inspiration from Asana’s WorldStore and Figma’s LiveGraph, we tail postgres’ WAL to detect novelty and invalidate relevant queries. For the frontend, we wrote a client-side triple store. The SDK handles persisting a cache of recent queries to IndexedDB on web, and AsyncStorage in React Native. All data goes through a permission system powered by Google's CEL library. ## Getting Started The easiest way to get started with Instant is by signing up on instantdb.com. You can create a functional app in 5 minutes or less. If you have any questions, you can jump in on our discord. ## Contributing You can start by joining our discord and introducing yourself. Even if you don't contribute code, we always love feedback. If you want to make changes, start by reading the client
and server
READMEs. There you'll find instructions to start Instant locally. ## YourKit We're using YourKit to help us debug Instant. They are kindly supporting Instant and other open source projects with their full-featured Java Profiler.