Lark is the realtime data store tuned for speed and simplicity. Web apps, mobile apps, and multiplayer games. Get started in 5 minutes, scale to hundreds of thousands, all without breaking the bank.
Get in touchThese checkboxes sync in realtime across all visitors. Check one, someone across the world sees it instantly -- in just a few dozen lines of code.
import { LarkDatabase } from '@lark-sh/client';
const db = new LarkDatabase('landing-page/checkboxes', {
anonymous: true
});
// Subscribe to realtime updates
db.ref('boxes').on('value', (snapshot) => {
const boxes = snapshot.val() || {};
// Update each checkbox element
for (let i = 0; i < 100; i++) {
const el = document.getElementById(`box-${i}`);
el.classList.toggle('checked', !!boxes[i]);
}
});
// Toggle a checkbox on click
async function toggle(id) {
const ref = db.ref(`boxes/${id}`);
const snap = await ref.once();
await ref.set(!snap.val());
}
import { useEffect, useState } from 'react';
import { LarkDatabase } from '@lark-sh/client';
const db = new LarkDatabase('landing-page/checkboxes', {
anonymous: true
});
function Checkboxes() {
const [boxes, setBoxes] = useState({});
useEffect(() => {
return db.ref('boxes').on('value', snap => {
setBoxes(snap.val() || {});
});
}, []);
const toggle = async (id) => {
const ref = db.ref(`boxes/${id}`);
const snap = await ref.once();
await ref.set(!snap.val());
};
return (
<div className="grid">
{Array(100).fill(0).map((_, i) => (
<div
key={i}
className={boxes[i] ? 'checked' : ''}
onClick={() => toggle(i)}
/>
))}
div>
);
}
Connecting...
Every data store on Lark is just JSON. Write to it and watch all of your connected clients get the updates. It's easy to reason about, but powerful enough to back any app. And our dashboard lets you view and edit the data in real-time -- super useful for debugging and seeing what's happening behind the scenes -- without needing to write SQL.
With Lark, you can spin up data stores on demand, each following the rules you've set for your project. Making a multiplayer game? Use one per room. Making a web app? How about one per user, or one per project. They're created on-demand, so your apps and games scale up as fast as your audience.
Unlike traditional realtime databases, Lark also features
If you've used other realtime databases like Firebase, you know that pricing gets out of hand quickly. We've designed Lark from the ground up to keep costs low and predictable, so we can enable you build amazing apps and games without sweating your hosting bill.
JSON is the lingua franca of the web, and Lark speaks it natively. Use our JavaScript client with vanilla JS, React, Vue, or whatever you're building with. The API is Firebase-compatible, so if you've used Firebase Realtime Database before, you already know how Lark works.
Building with React Native and Expo? Lark's JavaScript client works out of the box. The same realtime sync that powers your web app works identically on iOS and Android -- one codebase, same data, instant updates everywhere.
Lark's Unity client uses KCP over UDP for low-latency sync. Volatile fields handle frequent updates for player positions and hand tracking. Ephemeral data stores mean game rooms spin up instantly and clean themselves up when everyone leaves.
Lark ships with an MCP server that plugs directly into AI coding assistants like Claude Code. Your AI can set up data stores, write security rules, query data, and push updates -- all from inside your editor.