Chris Nicholas's Avatar

Chris Nicholas

@chrisnicholas.dev

Developer experience @liveblocks.io • Interactive articles on chrisnicholas.dev

268
Followers
291
Following
354
Posts
01.11.2024
Joined
Posts Following

Latest posts by Chris Nicholas @chrisnicholas.dev

Video thumbnail

Integrate presence and contextual commenting in 5 minutes.

We've released new React components, making it even quicker to build your collaborative app. Add realtime cursors, live avatars, and use new pinned comments in canvases or table libraries like ag-grid.com

Blog post ↓

10.03.2026 16:38 👍 3 🔁 3 💬 1 📌 0

Shout-out to @marcbouchenoire.com for building these tidy components!

10.03.2026 16:39 👍 2 🔁 0 💬 0 📌 0
Preview
New React components for adding realtime presence and contextual commenting to your app | Liveblocks blog Introducing a new set of ready-made React components, designed to help you start integrating realtime collaboration and commenting into your product.

lblcks.io/Sxcofa0

10.03.2026 16:39 👍 1 🔁 0 💬 1 📌 0
Video thumbnail

We've just released new React components!

Build a collaborative app with @liveblocks.io using customisable avatar stack, cursors, and commenting components. We've written a blog post that takes you through what they are, and how to use them.

Link ↓

10.03.2026 16:39 👍 2 🔁 0 💬 1 📌 0
Post image

And a decoders ↔ zod comparison, you can see how easy it is to read!

02.03.2026 17:09 👍 3 🔁 0 💬 1 📌 0
Decoding error:
{
  id: 123,
  name: "Alison Roberts",
  createdAt: "not-a-date",
             ^^^^^^^^^^^^ Must be Date
  tags: ["foo", "bar"],
}

Decoding error: { id: 123, name: "Alison Roberts", createdAt: "not-a-date", ^^^^^^^^^^^^ Must be Date tags: ["foo", "bar"], }

$ npm install decoders

decoders.cc

---

Here's an example of one of those error messages.

02.03.2026 17:09 👍 2 🔁 0 💬 1 📌 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

Fantastic!

26.02.2026 18:31 👍 1 🔁 0 💬 0 📌 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
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.

Also, learn more about why we open-sourced it.

lblcks.io/Vvvviny

26.02.2026 16:58 👍 1 🔁 0 💬 0 📌 0
Preview
Fumadocs The React.js documentation framework.

Shout-out to Fumadocs, which made this all possible so quickly. A fantastic project.

www.fumadocs.dev/

26.02.2026 16:58 👍 1 🔁 0 💬 1 📌 0
Preview
Zen Router | An opinionated HTTP router compatible with Cloudflare Workers, Node.js, Bun, Deno. An opinionated HTTP router with typed path params, built-in body validation, and a clean auth model.

Here's the docs for it.

lblcks.io/lRRIHF0

26.02.2026 16:58 👍 1 🔁 0 💬 1 📌 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
Which rich text editor framework should you choose in 2025? | Liveblocks blog Looking to integrate a WYSIWYG editor into your JavaScript app? This comparison dives into the best frameworks available, including Tiptap, Lexical, BlockNote, and Slate.

lblcks.io/UkXxf2o

25.02.2026 16:21 👍 2 🔁 0 💬 0 📌 0
Video thumbnail

Article: Which JavaScript rich-text editor is best?

Tiptap, BlockNote, Lexical, more—a deep-dive into all the options. Our team's uniquely positioned to give guidance on this, as we've used them all at work. Written last year, still up to date!

Link ↓

25.02.2026 16:21 👍 2 🔁 1 💬 1 📌 0
Preview
Next.js Starter Kit | Kickstart your Next.js collaborative app Kickstart your collaborative application with the Liveblocks Starter Kit for Next.js.

It's open source, so feel free to have a play with it!

Live demo → nextjs-starter-kit.liveblocks.app
Learn more → lblcks.io/FE9SNj1

lblcks.io/61zbuXa

24.02.2026 16:16 👍 4 🔁 0 💬 0 📌 0
Video thumbnail

Also, check out the multiplayer apps it features—Tiptap, tldraw, BlockNote, and a custom starting point for your own whiteboard.

24.02.2026 16:16 👍 2 🔁 0 💬 1 📌 0
Video thumbnail

In a new addition to the @liveblocks.io starter kit, it now fully supports multiple workspaces, each which its own inbox.

You can see how they're different when you switch.

24.02.2026 16:16 👍 2 🔁 0 💬 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
Video thumbnail

Build multi-tenant collaborative apps with Organizations.

When building with Liveblocks, you can define a user's organization, and all resources will be automatically compartmentalized—rooms, threads, notification, etc.

Below, you can see a different inbox in each workspace.

24.02.2026 16:15 👍 2 🔁 2 💬 1 📌 0
Preview
Open sourcing the Liveblocks sync engine and dev server | Liveblocks blog We’ve open sourced our server stack. Starting today, you can run and test your multiplayer applications with a Liveblocks server locally.

In future, we'll be opening up even more of our product—Comments, Notifications, AI Agents. The dev server doesn't support these yet, but they will be coming. Very excited to see where this goes!

Learn more in our blog post.

lblcks.io/nys2qqB

18.02.2026 16:53 👍 1 🔁 0 💬 0 📌 0
Video thumbnail

You need to make a couple edits to your app to connect to the dev server, but we provide an AI prompt that will make all these changes for you, setting up an environment variable toggle.

You can use this to set up automated CI or E2E testing.

18.02.2026 16:53 👍 2 🔁 0 💬 1 📌 0
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

Such a strange day for you 😂.

All your work on this has been amazing!

18.02.2026 15:24 👍 1 🔁 0 💬 0 📌 0
Preview
Open sourcing the Liveblocks sync engine and dev server | Liveblocks blog We’ve open sourced our server stack. Starting today, you can run and test your multiplayer applications with a Liveblocks server locally.

My plan for today: announce that we're open sourcing the Liveblocks server! 🎉

The internet's plan for today: continvoucly morging my mentions 😂

Anyway, here's what I actually wanted to share today:

18.02.2026 15:11 👍 13 🔁 4 💬 2 📌 1
Preview
Open sourcing the Liveblocks sync engine and dev server | Liveblocks blog We’ve open sourced our server stack. Starting today, you can run and test your multiplayer applications with a Liveblocks server locally.

We've open sourced our sync engine and dev server.

Starting today, you can run and test your multiplayer applications locally using our new server package and CLI. Additionally, this marks a shift towards an open-source Liveblocks.

lblcks.io/nys2qqB

18.02.2026 15:06 👍 5 🔁 2 💬 0 📌 0
Preview
Concepts | Liveblocks Liveblocks is the collaboration layer for your product. This page introduces the core concepts behind Liveblocks so you understand how everything fits together.

Try it for yourself.

lblcks.io/AP9Tv8a

13.02.2026 17:14 👍 1 🔁 0 💬 0 📌 0
Video thumbnail

Liveblocks docs now support markdown—just add `.md` to any URL.

Agents can also request markdown using the `text/markdown` header.

Result? The homepage goes from 327kb → 6kb.

13.02.2026 17:14 👍 1 🔁 0 💬 1 📌 0
Post image

I just asked it clone X, and it nailed it first try!

11.02.2026 15:47 👍 1 🔁 0 💬 0 📌 0
Preview
Magic Patterns AI design tool to go from idea to production - prompt ideas to life, use your existing styles, and collaborate with your team.

magicpatterns.com

11.02.2026 15:47 👍 1 🔁 0 💬 1 📌 0