How to Paginate ClickHouse Results in TypeScript
Three pagination patterns for ClickHouse in TypeScript — offset/limit, cursor-based, and keyset. Know when each applies and how to implement them.
Insights
Deep dives, architecture notes, and product guidance from the hypequery team.
Three pagination patterns for ClickHouse in TypeScript — offset/limit, cursor-based, and keyset. Know when each applies and how to implement them.
PREWHERE filters before reading all columns, WHERE filters after. Learn when PREWHERE actually improves ClickHouse performance, when it does not matter, and how to approach it from a TypeScript app using hypequery.
A full walkthrough — schema generation, typed query endpoints, React hooks, and a polling dashboard that stays live without WebSockets.
ClickHouse has no native RLS like Postgres. Here are the three patterns for tenant isolation — and why context injection with hypequery is the right default for TypeScript teams.
Three strategies for testing ClickHouse queries in TypeScript — mocking the client, using a local Docker instance, and letting the type system catch errors before tests run.
How to use toStartOfInterval with GROUP BY and column aliases in ClickHouse. TypeScript examples using hypequery and raw SQL — DateTime bucketing for time-series analytics.
A safer ClickHouse MCP pattern: expose a small set of named analytics queries as tools instead of letting the model write arbitrary SQL.
A practical comparison of the real TypeScript options for ClickHouse: raw client, Kysely, Cube, and hypequery, with the tradeoffs each one leaves you holding.
Generate typed React hooks from the same backend query definitions that power your ClickHouse API, so components stop owning fetch glue and response types.
hypequery 0.2.0 adds a query() API for the common problem where one ClickHouse query ends up reimplemented for scripts, HTTP endpoints, and frontend consumers.