I Shipped...

13 February 2026 (2PRs)

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.

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.

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)

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.

an example for Clerk integration with Svelte

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

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)

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.

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.

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)

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.

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.

12 January 2026 (1PR)

serialize secretSeed as array in auth header

Jazz uses secret keys for user authentication, but these keys were being incorrectly converted when sent between the server and browser — they were being turned into an object format instead of a simple list of numbers. I fixed the conversion so the keys are sent in the right format and can be properly used on the client side for login features like passphrases and passkeys.

8 January 2026 (1PR)

first class Svelte support for Better Auth

I built a Better Auth provider for Svelte, with example project and documentation.

7 January 2026 (1PR)

add vanilla code snippets everywhere

As well as the main frameworks (React, Svelte, React Native, React Native with Expo), we now have code snippets and guides for using Jazz with vanilla JavaScript.

6 January 2026 (1PR)

documentation on how to use suspense hooks

We have the hooks useSuspenseCoState and useSuspenseAccount which integrate with React’s Suspense API to suspend component rendering until all data is successfully loaded.

This PR documents how to use them.

30 December 2025 (1PR)