I Shipped...

19 February 2026 (2PRs)

a sync-before-navigate guard for SvelteKit SSR

When you changed data in a Jazz app and then navigated to a server-rendered page, the server could show stale information because the changes hadn't finished syncing yet. I added an optional navigation prop to the Svelte provider that automatically waits for pending syncs to complete before letting the page transition happen, so the server always has the latest data.

a React quick start guide

I wrote a quickstart guide for React developers getting started with Jazz. It consolidates the main topics into a single reference so new users can get up and running quickly.

17 February 2026 (2PRs)

a guard that makes `.create()` fail when the user has no write access to the owner group

If you tried to create content in a Jazz group where you only had read access, it would silently succeed locally but then all the data would quietly fail to sync. I made it throw a clear error right away instead, so you know immediately that you don't have permission rather than scratching your head over why your data isn't showing up.

contextual error hints when a CoValue can't load due to sync config

When a Jazz CoValue failed to load, you'd just get a vague "unavailable" error with no clue why. I added smarter error messages that tell you the actual reason -- for example, if your sync setting is set to "never" or "signedUp", the error now says so instead of leaving you guessing.

13 February 2026 (3PRs)

remove `@manuscripts/prosemirror-recreate-steps` and replace with local implementation

Jazz uses a rich text editor library called ProseMirror for collaborative editing. One of the packages it depended on had known security vulnerabilities and was no longer maintained. I replaced it with a much simpler, locally-written version that does just what Jazz actually needs, removing the security risk and the unnecessary bloat.

remove `await` from `create` calls in code examples

I fixed some code examples in the Jazz documentation that incorrectly used await when creating data objects. Creating these objects is actually instant (not asynchronous), so the examples were misleading developers about how the API works.

autogenerate BETTER_AUTH_SECRET

Jazz is a framework for building collaborative apps. One of the example projects in the Jazz repo needed a secret key stored in a config file, but that file isn't checked into source control for security reasons. This meant the project would fail to build for anyone cloning the repo fresh. I added a script that automatically generates the missing config file so builds just work out of the box.

11 February 2026 (1PR)

add a docs index to AGENTS.md

AGENTS.md is a file that helps AI coding assistants understand a project. I added a comprehensive index of Jazz's documentation to this file, so that AI tools like Claude and Cursor can more easily find and reference the right docs when helping developers. I also wrote a script that automatically regenerates this index whenever the docs are built, so it stays up to date.

7 February 2026 (1PR)

fix `toJSON()` serialisation for `co.record`

Jazz uses special data structures called CoRecords to store collaborative data. When you tried to convert a nested CoRecord to JSON (a common data format), the result was wrong because an internal mechanism was intercepting the conversion. I fixed the serialization logic so nested data structures convert to JSON correctly, and added tests to prevent this from breaking again.

30 January 2026 (1PR)

add some skills and reference material

Jazz is a framework for building collaborative apps. I added a set of "skills" -- reference documents that AI coding assistants like Claude and Cursor can use to write better Jazz code. These cover topics like performance optimization, permissions, UI integration, and testing, so that when you ask an AI to help you build a Jazz app, it has detailed, accurate guidance to draw on.

27 January 2026 (1PR)

enable dark mode support for minimal to-do list example

Jazz is a framework for building collaborative apps. The docs site has a minimal to-do list example on its landing page, but the icon was an external image that couldn't adapt to dark mode. I inlined the SVG so it can be styled with CSS, meaning it now automatically adjusts its colours when someone has dark mode enabled on their device.

23 January 2026 (2PRs)

an example for Clerk integration with Svelte

An example app which shows how to use Svelte with Clerk as an auth provider.

a guide on how to model data in a Jazz application

It's challenging sometimes to approach Jazz when coming from a background of other, more traditional DBMSs. I wrote a guide for folks to be able to more effectively plan their apps' data requirements.

20 January 2026 (1PR)

a link validation script for our docs pages

Our docs had some outdated links. I added a script to validate the links in our docs whenever the homepage is built, and fixed all the broken links.

19 January 2026 (1PR)

a quick fix to upgrade our Svelte versions

A vulnerability was discovered in Svelte. I upgraded our versions to ensure we were not exposed to risks.

16 January 2026 (2PRs)

fix expo placeholders

Jazz apps can show low-quality placeholder images while the full-resolution version loads. On Expo (a React Native framework for mobile apps), uploaded images had broken placeholders because the image data was missing a required prefix. I added the missing data: prefix so placeholder images display correctly on mobile.

add a 512px progressive image variant

Jazz is a framework for building collaborative apps. When you upload an image, Jazz automatically creates smaller versions of it so they load faster. The existing sizes jumped from 256px straight to 1024px, which meant medium-sized images (like in a sidebar or card) had to either load a tiny version or wait for a much larger one. I added a 512px in-between size so images load more smoothly in those situations.

15 January 2026 (1PR)

aPI Reference

Jazz is a framework for building collaborative apps. I wrote a new API reference page for the docs site that gives developers a clear, concise overview of the most important functions they need to work with Jazz's core data structures, without overwhelming them with every possible option.

13 January 2026 (2PRs)

document dealing with complex getters

Jazz is a framework for building collaborative apps. When your data models reference each other in circles (like a project that has a manager who has projects), things can get confusing. I added documentation explaining how to handle these circular references cleanly, so developers don't get stuck in an infinite loop of loading nested data.

add improved docs for Suspense/Error Boundaries

Jazz is a framework for building collaborative apps. When something goes wrong while loading data, apps need a way to gracefully show an error message instead of crashing. I added documentation explaining how to use React's Suspense and Error Boundary features with Jazz, so developers know how to handle loading states and errors properly.