I'm currently building a web tool that requires live data updates since multiple users will edit the same information simultaneously. I've previously utilized Liveblocks with good results but I'm exploring other options including velt.dev, along with the possibility of creating a custom solution using WebSockets or Server-Sent Events (SSE). For anyone who's developed similar collaborative tools, I have a few questions:
1. What tools do you use for live updates or collaboration?
2. How do you decide between using a managed service versus building your own solution?
3. Any lessons learned or tips you wish you had known from the start?
I'd appreciate sharing what has worked for you or what pitfalls to avoid!
6 Answers
If you require instant updates, custom WebSockets are the way to go. They can manage latency down to a couple of hundred milliseconds max. If you’re okay with a slight delay, then an AJAX call every 30 seconds is a viable option.
There are numerous paths to explore! My colleagues mostly create custom solutions using UDP-based WebRTC. Managed services might not cater to unique domain states, and relying on them could lead to problems down the line, especially concerning auth and session management. Just keep in mind that whatever stack you choose parallels a client-server game structure, which can streamline your learning process.
I typically go with WebSockets using socket.io, but honestly, it can get a bit tedious to work with. I'm looking for better alternatives too, so I’d love to hear what others have to say!
Many people I know seem to use Microsoft’s SignalR, and I’ve found it to be quite trustworthy. However, I’m unsure about its support outside of C#. It works fine for local setups, though!
I've used the JS SDK with good results too, even in local environments. Just a heads up!
For a reliable real-time solution, you’d want something that allows flexibility in development. Liveblocks has some costs associated, but check out my app, [www.sticky.today](http://www.sticky.today), which supports real-time collaboration via Convex. There's a helpful case study on how to build real-time syncs with it as well!
That sounds interesting! I'll definitely have to check out Convex for my project.
I think it's effective to run a network service that manages WebSockets internally within a worker. This allows your app to subscribe to messages and process them accordingly. It might seem a bit mundane, but it's a reliable pattern that’s easy to test and maintain since everything stays decoupled.

That’s true, but for most projects, basic WebSockets should be sufficient. Scaling to millions of users isn't usually a concern at the start.