Skip to main content
Lark is the realtime database for web apps, games, and mobile. You write data, your users see it instantly — across every connected client, lightning fast. If you’ve ever used Firebase Realtime Database, Lark will feel familiar. But Lark is built from the ground up in Rust, with the performance and features that today’s multiplayer games and collaborative apps demand.

Why Lark?

Real-time by default

Every write is broadcast to every subscriber in real time. No polling, no manual refresh. Your UI stays in sync automatically.

Reasonable pricing

We want Lark to be sustainably operated and grow with our builders. The features and performance you need at a price that makes sense.

Tiny client

The Lark JS SDK is ~20KB gzipped. Install it, connect, and start building — no heavyweight framework required.

Built for speed

Millisecond latency volatile updates and support for UDP-based transports like WebTransport and KCP for demanding real-time apps & games.

Firebase SDK compatible

Already using Firebase Realtime Database? Point your existing Firebase SDK at Lark and it just works. Change one URL.

Security rules

Declarative, path-based security rules that run on the server. Control who can read and write what, with full access to auth context and existing data.

How it works

Lark stores your data as a JSON tree. You read and write to paths in that tree, and Lark handles synchronization across all connected clients.
import { LarkDatabase } from '@lark-sh/client';

const db = new LarkDatabase('my-project/my-database', { anonymous: true });
await db.connect();

// Write data
await db.ref('players/alice').set({ name: 'Alice', score: 0 });

// Subscribe to real-time updates
db.ref('players').on('value', (snapshot) => {
  console.log('Players updated:', snapshot.val());
});

// Every connected client sees the change instantly
await db.ref('players/alice/score').set(42);
That’s it. No REST endpoints to build, no WebSocket plumbing to manage, no cache invalidation to think about.

Get started