Project Status
Platforms and Frameworks
- React and SolidJS are fully-supported
- Svelte and Vue have community support
- React Native is not supported yet, but is planned
Databases
- Most Postgres providers are supported
- Drizzle and Prisma have high-quality community-supported integrations
Query Language
- Filters, sorts, limits, relationships, and
exists
are supported. - Queries can have
ttl
to keep data synced across sesssions. - Zero will stay within a (configurable) client-side row limit using LRU.
- Aggregates (count, min, max, group-by) are not yet supported.
- Full-text search is not yet supported (you can sometimes simulate with
ILIKE
, though it scales linearly). - Infinite/virtual scroll is possible, but not easy or optimal.
Performance
- We do not have a query analyzer, and do not do any join reordering. It's sometimes, but not always possible to manually reorder. Because of this, some queries (especially
exists
) can be pathological. We are actively working on this. - Every query is a hybrid query. We haven't yet implemented "client-only" queries, meaning patterns like typeahead search can easily crush the server if the query is expensive.
- We have basic CLI tools to understand query performance, but we lack a full-featured inspector to understand at a glance what queries are open or slow.
- We share queries within a "client group" (e.g. all tabs in a browser), but not across groups. This means that if you have many users doing the same query, they will duplicate all that work server-side.
Miscellaneous
- We do not have a way to limit queries to only expected/allowed forms (in progress).
- We do not have a good way to support previews (in progress).
- Running Zero requires deploying it yourself to AWS or similar. Running in a multinode, zero-downtime way is possible (we do it for zbugs), but significant effort. Running single node is easier, but updating the server takes it down for a minute or so (we are working on a SaaS solution).