Wrapped up @localfirstconf.com in a summery Berlin beer garden yesterday.
Always a special crowd to me because it’s where @jazz.tools got born 2 years ago.
And where else can you hang out with Martin Kleppmann, Dan Ingalls and people who only use Mistral models at the same place?
For his master's thesis, @siidorow.dev interviewed me about how @jazz.tools fits into the landscape of sync engines and local-first DBs.
Now that it's published (congrats!) I can say that it is *the* most rigorous & precisely categorized overview of our field! PDF: aaltodoc.aalto.fi/server/api/c...
For his master's thesis, @siidorow.dev interviewed me about how @jazz.tools fits into the landscape of sync engines and local-first DBs.
Now that it's published (congrats!) I can say that it is *the* most rigorous & precisely categorized overview of our field! PDF: aaltodoc.aalto.fi/server/api/c...
Building @jazz.tools v2 in public, Ep 3
Main learning: ground your LLMs in your concrete problem, build jigs, religiously optimize code iteration speed.
The last couple days were more perf work, driven by a specific target that a commercial use case gave us.
Fluid migrations are one of the most novel features of @jazz.tools v2.
Inspired by @inkandswitch.com’s Cambria paper, they re-imagine migrations:
- not a stop-the-world global mutation
- but bidirectional lenses (mappings)
- translating between a pair of schema versions
- that can be chained
One cool thing we're doing at @jazz.tools is reimagining migrations.
Instead of migrating your data, you tell clients how to read it, inspired by @inkandswitch.com's Cambria paper.
Last week I built this interactive diagram to show how it works. Check it out in our docs: jazz.tools/docs/schemas...
As promised, yapping more on @jazz.tools
After launching the v2 alpha at React Miami our focus has been polish and perf, and there is a lot to do.
Often, refactoring and nailing down semantics go hand in hand with performance.
My talk from @sync_conf 2025 is ready!
Check it out to learn how:
1) CRDTs + cryptographic permissions work
2) @jazz.tools is now a general-purpose database
3) our unique Jazz Cloud infra compares to
- traditional stacks
- other sync engines
- Durable Objects
www.youtube.com/watch?v=wils...
Jazz 0.19.0 brings our high-perf Rust core to all Jazz environments:
- Browser/workers via wasm-bindgen
- NodeJS via NAPI-RS
- *New*: ReactNative/Expo via UniFFI
In the future, we'll offer idiomatic Swift, Kotlin, Go, etc. bindings as we move API-level code into Rust as well.
For now, the new UniFFI RNCrypto is opt-in (see instructions below), but the perf improvement is so impressive that we will roll it out as the default once it has been proven in a few adopter apps.
If you are trying it in your app, ping us on Discord!
jazz.tools/docs/react-...
@anselm.io (@jazz.tools)will help us grapple with the question of when our sync systems become a full-fledged database.
Anselm's talks at Local-First Conf have always been crowd-pleasers, so he's sure to delight at Sync Conf.
People keep asking us if @jazz.tools will have vector search...
What's better than building a first class vector search feature for Jazz in maybe a couple months?
A single person right now being able to ship it as a small, very neat, very high quality library *on top of* Jazz!
vimeo.com/1111603758
Given our realisation that *actually, @jazz_tools is a database* (see QT)...
...we're hosting another meetup in SF this Wednesday!
(RSVP below!)
Thinking of Jazz as a DB begs the question: how does it fit into the stack?
bsky.app/profile/jaz...
narrative update
Jazz isn’t replacing databases and backends
Jazz isn’t local-first only
Jazz isn’t a sync engine only
Jazz is simply a *new kind* of database
🧵
We'd love to hear what you think about this new way to think about Jazz, as we adapt our homepage, docs, and most importantly as we shape our feature roadmap accordingly.
What would you expect most vs. what we have now?
narrative update
Jazz isn’t replacing databases and backends
Jazz isn’t local-first only
Jazz isn’t a sync engine only
Jazz is simply a *new kind* of database
🧵
One that’s inherently
- distributed
- high-throughput multiplayer & LLM ready
- verifiably secure
Which means Jazz will do everything a DB does
But you can use it in more places
And it’ll scale better
And offer better DX
Do more out of the box
And do the previously impossible
The wait is finally over!
It’s time for another
FUTURE OF CODING LONDON
Tuesday, July 22 @ 18:00
Kindly hosted by Granola at their office
Sponsored by @jazz.tools
RSVP here:
lu.ma/lo2medup
Demo/Talk submission here:
foc-london.notion.site/21c379f0e4c...
Two weeks after alpha-3 which foreshadowed our move to @jazz.tools for greater stability, alpha-4 gets it done!
blog.muni.town/roomy-space-...
Special shoutout to @flo-bit.dev who took the lead on this release.
Up next is bridging so Roomy & Discord (later Matrix) folk can share the same space.
My full talk from @localfirstconf.com is up!
Featuring 1y of progress on @jazz.tools
And: two big announcements + the most sketchy, yet successful demo I've ever done.
- Waffle, a Discord/Slack alternative built on Jazz
- Soul, our upcoming AI toolkit for Jazz
www.youtube.com/watch?v=e3-y...
So everything in Jazz is architected around that requirement, from the client to the distributed sync & storage infrastructure.
This is a godsend when you start doing AI stuff. The AI just is "one more collaborator" and you just dump the tokens into Jazz state as they come in.
Streamed LLM responses are the perfect example of why we didn't base @jazz.tools on an existing DB, but are building a new backend + DB from scratch.
Originally we just wanted to support Figma/Notion-like apps where we knew we had to sync 100,000s of tiny edits per second... 🧵
x.com/marbemac/st...
Sync engines are an incremental improvement to the "centralised server + client" model - the minimal possible step towards the real-time nature of apps today.
But we can do much better 🧵
Love meeting new builders online
me: “Hey Jazz supports ProseMirror now, we should build a ProseKit example or something”
*minds my own business for 3h*
@ocavue.bsky.social: “here’s the example”
"Local First is accidentally perfect for the AI age"
Great talk from @anselm.io of @jazz.tools on how AI and Local First software are the perfect partners.
@localfirstconf.com is off to a fantastic start, the number of new people is mind blowing.
For us at @jazz.tools, today was all about getting hands-on and helping people building cool stuff with Jazz - and handing out our first vibe coding certifications!
Megathread of everything we're announcing for @jazz.tools at @localfirstconf.com
It's been a hell of a year in the best sense and I can't wait to share what we've been cooking.
(And this doesn't even include our "one more thing" 🤫)
Stay tuned as I expand on details over the next couple days!
Join the @jazz.tools team at Local-First Conf!
- learn how to vibe-code apps with Jazz
- get a first glimpse of AI that “already knows how to use your app”
I love doing adopter support calls for @jazz.tools
"No you don't need to do that..."
"This extra indirection isn't necessary..."
"Yes, you can use CoValues as both UI state and the persisted source of truth - you don't need to copy back and forth"
"No you don't need to 'save' "
Discord driven development
Shoutout to @jmsv.bsky.social for the 3h suggestion-to-🚢
Shoutout to @bensleveritt@mastodon.social for the months of gruelling work in the ProseMirror mines that made this a quick win
Nothing better than telling people to edit just their package.json for a 12x perf improvement.
I still think we can do better for this particular hot path internally.
But their app’s “screen of everything” *cold start* is now bottlenecked by React & the DOM!
bsky.app/profile/jaz...
Jazz 0.13.20 released - with significant sync and rendering perf improvements
We have been focusing on performance and stability over the last month, polishing our internals, sync protocol, and subscription engine.
With this new solid foundation, we can now focus on building better primitives for deep loading values (managing errors more gracefully, pagination, etc.)
Thanks everyone for your support and feedback, these improvements have been mostly driven by your requests!
Shoutouts to @gdorsi.bsky.social
Jazz 0.13.20 released - with significant sync and rendering perf improvements
We have been focusing on performance and stability over the last month, polishing our internals, sync protocol, and subscription engine.
Now the updates should fire only when there is a change in the data. This means that even with autoload, if a value is already available we won't trigger a redundant update. This should significantly reduce re-renders and thus pressure on React, etc.
Jazz 0.13.20 released - with significant sync and rendering perf improvements
We have been focusing on performance and stability over the last month, polishing our internals, sync protocol, and subscription engine.
Now you can deeply load long lists with complex references in a reasonable amount of time (loading a list with 20k refs in around 5s) and get instant loads using a lazy-load approach (tested with lists with around 50k items, even when loading from network)
Security is the most subtle challenge in full-stack apps.
Many devs still re-invent the wheel, building access control with low-level tools like RLS (or worse, ad-hoc backend code) 😱
The security design of @jazz.tools is a godsend for vibe coders (and experienced devs!) 🧵
Very happy with how this comparison page turned out and proud to have co-sponsored it as @jazz.tools!
The fact that such a thorough, fair comparison page could be created by competing vendors and open-source projects is a testament to the spirit of collaboration in the local-first community.
Announcing the Local-First Landscape
A comprehensive guide to help developers choose the right tools for building local-first applications.
localfirst.fm/landscape
Last year @localfirstconf.com, I showed @jazz.tools to a wider audience for the first time - a humble MVP built in my spare time
I found investors, team members and our first prod user there ❤️
This year, there'll be 13 of us and so much progress to share!
Stay tuned 🎵
announcing the
Jazz
vibe coding
MICRO HACKATHON
Apr 1 • 6 PM • San Francisco
snacks, drinks & great people
win MICRO prizes like this
fully functional, programmable
TinyTV2 (with remote!)
+ more TBA
Sign up below 👇
This is a pre-announcement!
We'll do another @jazz.tools meetup in SF on Apr 1, but this time it'll be a vibe coding mini-hackathon!
Prizes and more details TBA soon!
lu.ma/1fru6ldd