Introduction
A realtime-first framework for Cloudflare. Write a function, read it in a component, and it stays current.
HighX is a TypeScript framework for building applications on Cloudflare where the UI stays in sync by default.
You write typed functions on the server. Your components read them. When the data changes — from any user, in any tab — the new result is pushed to everyone watching it.
export const listNotes = query({
name: "notes.list",
args: emptyArgs,
returns: noteRows,
handler: (ctx) => ctx.db.query("notes").withIndex("byCreatedAt").order("desc").take(20),
});const notes = useQuery(api.notes.list, {});
// Someone else adds a note. This component re-renders. That is all.Why it matters
Keeping a screen current normally costs you a REST layer, a cache, a set of invalidation keys, and a polling interval that is always either too slow or too expensive. HighX removes all four:
| You don't write | Because |
|---|---|
refetch / invalidateQueries | The server knows which queries a write affected |
| Cache keys | The query and its arguments are the key |
| Polling | Changes are pushed over one WebSocket |
| A REST or GraphQL layer | The typed client API is generated from your functions |
| Reconnect handling | The client resumes from a cursor, or replaces with a snapshot |
Data lives in one Durable Object per tenant, so a customer's data is its own
SQLite database — isolation is physical, not a WHERE clause.
Is it for you
Good fit: dashboards, collaborative editors, operations consoles, shared inboxes and queues — anything where several people look at the same data at once, and that data partitions cleanly per customer, team, or workspace.
Poor fit: a single global dataset every user writes to, or transactions that must span tenants. Tenant isolation is the design, and working against it will not be pleasant.