Vincent Driessen's Avatar

Vincent Driessen

@nvie.com

Simplifying things for fun and profit. Engineer at liveblocks.io. Blog at nvie.com. Also decoders.cc.

578
Followers
344
Following
183
Posts
08.11.2024
Joined
Posts Following

Latest posts by Vincent Driessen @nvie.com

CANNOT WAIT

05.03.2026 22:20 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Very kind words, @chrisnicholas.dev! ❀️

02.03.2026 17:21 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
import { array, iso8601, … } from "decoders";

const userDecoder = object({
  id: number,
  name: string,
  createdAt: optional(iso8601),
  tags: array(string),
});

import { array, iso8601, … } from "decoders"; const userDecoder = object({ id: number, name: string, createdAt: optional(iso8601), tags: array(string), });

Zod isn't the only option.

Our team uses decoders, built by the wonderful @nvie.com. We find it's:

β€’ Easier to read, as it looks like TypeScript.
β€’ Quicker to debug, with its human-readable error messages.
β€’ Lighter to ship, with tree-shaking and smaller bundles.

Learn more ↓

02.03.2026 17:09 πŸ‘ 9 πŸ” 4 πŸ’¬ 1 πŸ“Œ 0

TIL Plausible.io has a fantastic import-from-CSV feature! Just imported all my historical Gaug.es stats. It auto-imports only up to the moment Plausible was first used, so no double-counting of when I was still using both. Really well-done! πŸ‘

01.03.2026 18:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Mothlamp Problems just a little bit closer to the light and I'll have it solved

blogged about building big and beautiful things

27.02.2026 07:26 πŸ‘ 20 πŸ” 5 πŸ’¬ 1 πŸ“Œ 2

That’s great to hear, Sam! Also makes me feel old haha πŸ˜†

26.02.2026 21:56 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Gonna need to check it out, thanks for the pointer!

26.02.2026 21:55 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

What am I missing out on here?

26.02.2026 20:34 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

@stacyliveblocks.bsky.social OMG Frank! 🌭

26.02.2026 20:31 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Principles | Zen Router The design principles behind Zen Router.

Zen Router is not like most routing libraries.

It makes deliberate trade-offs to stay maintainable as codebases and teams grow.

zenrouter.liveblocks.io/docs/princip...

26.02.2026 18:54 πŸ‘ 4 πŸ” 0 πŸ’¬ 1 πŸ“Œ 1
Preview
Introducing Zen Router: our open-source type-safe router compatible with Cloudflare Workers | Liveblocks blog We’ve open sourced Zen Router: an opinionated HTTP router with typed path params, built-in body validation, and a clean model for auth. Here’s why we built it and what makes it different.

Today it powers billions of requests every month, and we're happy to open source it for everyone to use! πŸŽ‰

liveblocks.io/blog/introdu...

26.02.2026 17:56 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Screenshot of an internal GitHub pull request titled 'Switch internal API over to new router', I opened 2 years ago.

Screenshot of an internal GitHub pull request titled 'Switch internal API over to new router', I opened 2 years ago.

Two years ago I built a new router in my spare time to replace itty-router. We started adopting it gradually until it powered our entire backend.

26.02.2026 17:56 πŸ‘ 4 πŸ” 0 πŸ’¬ 3 πŸ“Œ 0
Video thumbnail

I've built a full docs site in a day with @nvie.com!

We've just open-sourced the HTTP router that's handles billions of requests per month at Liveblocks. Our team built it with Cloudflare Workers in mind, but it supports other runtimes too. Opinionated, type-safe, Zen.

Get it ↓

26.02.2026 16:58 πŸ‘ 3 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
Preview
Introducing Zen Router: our open-source type-safe router compatible with Cloudflare Workers | Liveblocks blog We’ve open sourced Zen Router: an opinionated HTTP router with typed path params, built-in body validation, and a clean model for auth. Here’s why we built it and what makes it different.

Introducing Zen Router: our open-source HTTP router.

Zen Router handles billions of requests per month at Liveblocks, and today we're open sourcing it. Initially designed for Cloudflare Workers, but also compatible with Node.js, Bun, and more.

lblcks.io/Vvvviny

26.02.2026 16:57 πŸ‘ 3 πŸ” 3 πŸ’¬ 1 πŸ“Œ 0
Video thumbnail

I've set up a whole collaborative app template for Next.js!

Along with multiplayer apps, it's got live permissions:

β€’ The document immediately appears when shared.
β€’ When edit access is given, the page auto-reloads.
β€’ The user can then make real-time changes.

Learn more ↓

24.02.2026 16:16 πŸ‘ 6 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0

Lovely post, @matthiasott.com, very well put! πŸ‘

23.02.2026 19:13 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Continvoucly Morged Value Β· Matthias Ott Web design engineer, UX designer, teacher, and speaker – helping teams build websites and digital products with a focus on CSS, accessibility, and performance.

✍️ New post: Con­tin­voucly Morged Value

Couldn't get out of my head what happened to @nvie.com’s diagram – and so I wrote down a few premature thoughts about what happens when we mistake the (AI) artifact for the work …

matthiasott.com/notes/contin...

23.02.2026 18:11 πŸ‘ 18 πŸ” 8 πŸ’¬ 2 πŸ“Œ 0

One more thing however: I’m seeing an X community and some kind of coin/token claiming to collect money on my behalf. I have absolutely nothing to do with this. It’s a scam. Please DO NOT send anyone money.​​​​​​​​​​​​​​​​

22.02.2026 22:59 πŸ‘ 1 πŸ” 1 πŸ’¬ 2 πŸ“Œ 0

One more thing however: I’m seeing an X community and some kind of coin/token claiming to collect money on my behalf. I have absolutely nothing to do with this. It’s a scam. Please DO NOT send anyone money.​​​​​​​​​​​​​​​​

22.02.2026 22:59 πŸ‘ 1 πŸ” 1 πŸ’¬ 2 πŸ“Œ 0

From my side, this has resolved the matter in a satisfactory way, and I’m totally fine with the outcome.

22.02.2026 22:59 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

2. At the same time, I’ve made the CC BY-SA license on the image more explicit on my end (it always was, but it was buried at the bottom of the article).

3. Microsoft mentioned they’ll be putting out a public statement on what happened, which I’m curious to read (as you all are I suspect).

22.02.2026 22:59 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Some updates on the morged saga:

1. Microsoft has reached out last week, apologized, and corrected the Learn page β€” it now features my original diagram with proper attribution.

22.02.2026 22:59 πŸ‘ 5 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Finally sat down and added dark mode to nvie.com. Sorry to everyone whose eyes have been blinded by it before πŸ™ˆ

22.02.2026 19:53 πŸ‘ 4 πŸ” 0 πŸ’¬ 3 πŸ“Œ 0
Preview
How to set up End-to-End (E2E) testing with Playwright | Liveblocks guide Learn how to write End-to-End (E2E) tests for your Liveblocks application using Playwright and the local dev server.

Set up E2E testing in your Liveblocks app.

We've written a step-by-step guide on how to test your multiplayer app using Playwright and our new open-source dev server.

lblcks.io/2nnRkJs

19.02.2026 15:35 πŸ‘ 5 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0

Hello to all new followers! πŸ‘‹ How are you all doing today?

19.02.2026 11:43 πŸ‘ 7 πŸ” 0 πŸ’¬ 6 πŸ“Œ 0

I’m very sorry to hear that. It’s a sad story πŸ˜•

18.02.2026 23:01 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Looks like it! You were surely ahead of the pack.

18.02.2026 22:44 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

The sad part isn't even the AI here. It's the person who generated this and uploaded it without even looking at the thing. The quality people demand of themselves is steadily diminishing. So does our appreciation of art.

18.02.2026 18:06 πŸ‘ 12 πŸ” 1 πŸ’¬ 2 πŸ“Œ 0

Kindness is underrated in professional settings.

18.02.2026 20:24 πŸ‘ 14 πŸ” 0 πŸ’¬ 0 πŸ“Œ 2
Video thumbnail

Liveblocks is going open-source!

Today we've opened up the sync engine server that powers Liveblocks Storage and Yjs on our platform. We've also built a local dev server for testing your @liveblocks.io app locally, try it in your app now:

$ npx liveblocks dev

18.02.2026 16:53 πŸ‘ 6 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0