Build instant apps with live SELECT queries.

import { useLiveQuery } from "@cuttlefish-sync/react";
import { db } from "./database";

function IssuesList() {
	const { data } = useLiveQuery(
		db
			.selectFrom("issues")
			.selectAll()
			.where("project_id", "=", projectId)
			.where("status", "in", ["todo", "in_progress"])
			.orderBy("updated_at", "desc"),
	);

	return <>...</>
}

Drop into your stack and adopt incrementally. You don't need to replace your backend or throw out everything you already have. Though once you start using Cuttlefish, you'll forget about fetching, caching, revalidation, and other useless plumbing. It just works.

Works with PostgreSQL using logical replication.

PostgreSQL
hosted on
Neon
Supabase
AWS
GCP
Azure
Fly.io
Render
Raleway
or, your infra

Use adapters for frameworks to make Cuttlefish feel idiomatic alongside RSC, SSR, loaders, and Server Actions.

Next.js
React Router
Remix
TanStack Start
or, your own backend

Use adapters to define queries in your favorite ORM, no need to learn a new API.

Kysely
Drizzle
Prisma
TypeORM
Sequelize
or, plain old SQL