2025-10-18 –, Alan Turing
NeoBoard is an open source real-time collaborative whiteboard built on the Matrix protocol. It functions both as a widget within chat-focused Matrix clients like Element Web, and as a standalone web app that acts as a lightweight, whiteboard-centric Matrix client
In this talk, we’ll share how we migrated NeoBoard’s real-time collaboration feature from a peer-to-peer WebRTC implementation to MatrixRTC with a LiveKit backend, a shift that was key to scaling to hundreds of concurrent users. We’ll cover the challenges we faced, the lessons we learned, and the architectural decisions that made the transition smooth. We’ll also touch on what’s still missing and what’s next for both NeoBoard and MatrixRTC.
NeoBoard’s use of the Matrix protocol provides a replicated data store for CRDT-based events exchanged between all users collaborating in a whiteboard session. These custom events encapsulate shape and drawing data and are shared via the room timeline, enabling clients to reconstruct a consistent, persistent view of the board over time, even across network disconnections or when joining later. However, while this model ensures eventual consistency, it falls short for real-time interactions that require low-latency feedback, such as live cursor movement or simultaneous drawing. For these use cases, a dedicated real-time transport layer is essential.
Using WebRTC, we initially added a real-time layer to NeoBoard that enabled low-latency peer-to-peer communication between users. However, this relied on a full-mesh topology, where each client maintains direct data channels with every other participant. This architecture quickly becomes unsustainable as the number of users grows, due to quadratic bandwidth and connection overhead. Additionally, WebRTC depends on ICE negotiation using STUN and TURN servers to establish connectivity across NATs and firewalls, which is often unreliable and can introduce additional latency and server load. The resulting variability in connection quality and resource usage made it difficult to deliver a consistent experience at scale.
Given the success of Element Call's adoption of MatrixRTC and LiveKit, we decided to move forward with an alternative real-time data layer based on these technologies that, given enough backend resources, can scale indefinitely.
In this talk, we’ll cover:
- The architecture and design of NeoBoard’s real-time layer
- An overview of relevant MatrixRTC spec proposals and their role in our migration
- Implementing MatrixRTC with a LiveKit backend, including:
- Session membership management
- RTC focus handling
- Infrastructure considerations and requirements
- Live demo
- Key challenges and what’s next
Matrix specialist and software engineer working at Nordeck, building products and services built on Matrix.