Repository navigation
docs: Zero 1.12 release notes - #335
Merged
Merged
Conversation
Adds the 1.12 release notes and the docs for what ships with it: aggregates, groupBy, distinct and JSON path filters in ZQL (restoring what was reverted until the features ship), and the drain, heapz and per-replica slot config options.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
🟡 Changes recommended
Active documentation issues remain: the release charts lack independently verifiable benchmark evidence, and the ZQL documentation mis-scopes and incompletely documents the new JSON-path aggregate API.
3 open issues
What changed in this PR
Adds draft Zero 1.12 release documentation covering new query APIs, operational configuration, performance results, fixes, security updates, upgrade guidance, and breaking changes.
Changes:
- Adds the Zero 1.12 release notes and lists them in the release-notes index.
- Documents JSON path filters, aggregates,
distinct(), andgroupBy()in ZQL. - Documents new zero-cache configuration options for draining, affinity cookies, heap snapshots, and replication slots.
| File | Description |
|---|---|
| contents/docs/zql.mdx | Documents JSON path filters and aggregate, distinct, and grouped query APIs. |
| contents/docs/zero-cache-config.mdx | Documents new zero-cache lifecycle, affinity-cookie, heap-snapshot, and replication-slot configuration options. |
| contents/docs/release-notes/index.mdx | Adds Zero 1.12 as the latest entry in the release-notes index. |
| contents/docs/release-notes/1.12.mdx | Adds the Zero 1.12 release notes, including features, performance results, fixes, security information, upgrade guidance, and breaking changes. |
Review effort: Lite
Comment on lines
+72
to
+74
| When a client connects or adds a query, `zero-cache` has to hydrate it: run it against the replica and send the results. In Zero 1.12 this takes about **1.2x less CPU**, and about **1.8x less** for queries with `whereExists`, which are common because permissions use them. We measured 100 client groups on one sync worker, each hydrating its user's top issues with their latest comments. ([6563d5751](https://github.com/rocicorp/mono/commit/6563d5751), [70c771950](https://github.com/rocicorp/mono/commit/70c771950), [c2882cba0](https://github.com/rocicorp/mono/commit/c2882cba0), [5a5fb1af1](https://github.com/rocicorp/mono/commit/5a5fb1af1), [c9c34d145](https://github.com/rocicorp/mono/commit/c9c34d145), [f7233246c](https://github.com/rocicorp/mono/commit/f7233246c), [ae794cc0e](https://github.com/rocicorp/mono/commit/ae794cc0e)) | ||
|
|
||
| <BenchmarkComparisonChart |
| ) | ||
| ``` | ||
|
|
||
| `json` can only be used inside a callback, as the first argument to `cmp`. It works with all the comparison operators, and it can be combined with `and`, `or`, `not`, and `exists` like any other `cmp`. |
|
|
||
| Zero computes aggregates on the server and syncs only the result, so counting thousands of comments doesn't download them. The value stays up to date as rows change. `where()`, `start()`, and `limit()` apply before the aggregate, just like in SQL, so they have to come before it: `zql.issue.orderBy('created', 'desc').limit(10).avg('numVotes')` averages the ten newest issues. | ||
|
|
||
| `sum()` and `avg()` take numeric columns, while `min()` and `max()` also accept string columns. Over no rows, `count()` returns `0` and the others return `null`. |
This was referenced Nov 12, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Adds the Zero 1.12 release notes, plus the docs for what ships with 1.12.
What's in it
release-notes/1.12.mdxand an index entry. The notes cover:groupBy/distinctand JSON path filters.Commit links point to
rocicorp/mono, in the same style as the 1.11.5 notes.zql.mdx: aggregates,distinct,groupByand JSON path filters. This restores the docs that revert(zql): remove JSON path filter docs until the feature ships #330 and Revert "docs(zql): document aggregates" #331 reverted until the features ship.zero-cache-config.mdx:ZERO_PRE_DRAIN_DELAY_MS,ZERO_AFFINITY_COOKIE_NAME,ZERO_ENABLE_HEAPZandZERO_UPSTREAM_PG_REPLICATION_SLOT_PER_REPLICA.Performance numbers
All numbers compare
zero/v1.11.0with the 1.12 release branch,maint/zero/v1.12. They are medians across alternating runs on an M5 Pro.apps/zero-throughputwith 600 clients, 100 writes/s and one sync worker, 10 runs per ref. The sync worker uses 2.11 cores on 1.11 (range 1.50 to 2.25) and 1.11 cores on 1.12 (range 1.06 to 1.12). p99 lag also dropped, but its ranges overlap, so the note doesn't claim it.Still open (why this is a draft)