5 ms·
This is still a hard problem today. Some hard tech was built for this. I'm excited for a world where this is more accessible and less hardcore than something li
by freeqaz 1y ago
This is still a hard problem today. Some hard tech was built for this. I'm excited for a world where this is more accessible and less hardcore than something like CRDTs (in terms of accessibility).
How have others noticed the world shifting in the past 6 years?
- wrren 1y agoElixir's Phoenix LiveView + PubSub covers a lot of these bases out of the box.
- thruflo 1y agoPubSub and LiveView do go a long way. However, broadcast isn't sync and LiveView isn't appropriate for all applications. Phoenix recently added Phoenix.Sync [0], a sync engine library explicitly designed [1] to address this. In combination with a front-end library like TanStack DB [2] it goes much further towards giving you a Figma/Linear-style sync engine out of the box [3]. [0] https://hexdocs.pm/phoenix_sync https://hexdocs.pm/phoenix_sync [1] https://www.youtube.com/watch?v=4IWShnVuRCg https://www.youtube.com/watch?v=4IWShnVuRCg [2] https://electric-sql.com/blog/2025/07/29/local-first-sync-with-tanstack-db https://electric-sql.com/blog/2025/07/29/local-first-sync-wi... [3] https://electric-sql.com/demos/burn https://electric-sql.com/demos/burn Disclaimer: Electric founder. Linking to my own talk / post / demo.
- willmartian 1y agoA sync engine plus the always online nature of LiveView feels at odds with offline-first (which is often associated with sync engines). I wish LiveView had a better offline story.
- deleted 1y ago[deleted]
- simultsop 1y agoThere were some additional posts regarding the topic by same guy. https://hachyderm.io/@evanw https://hachyderm.io/@evanw Innovators like him, are very rare.
- asnyder 1y agoI know Liveblocks.io has been making this very easy and accessible over the last few years. They recently introduced AI, and are promoting that of course, but as I understand it multiplayer collaboration (https://liveblocks.io/multiplayer-editing https://liveblocks.io/multiplayer-editing) is their meat and potatoes. Not affiliated with Liveblocks, just aware of its existence.
- ctnicholas 1y agoI work at Liveblocks—yes! Our founders were inspired by Figma and wanted to make it possible for others to build apps like this more easily. We provide our own sync engine, Storage, which is aimed at this use case.
- danielvaughn 1y agoThere are now a few sync engines that tackle this problem. Rocicorp Zero, Electric SQL, and one or two others. By no means a crowded space, but there are options now. edit: links https://zero.rocicorp.dev/ https://electric-sql.com/
- reb 1y agoHave you had a chance to use either of these yet? Electric looks like an obvious mature choice — curious if you think Zero's approach is compelling enough to be worth trying in alpha
- danielvaughn 1y agoHaven't used either of them. I met the guy behind Zero and he's super smart. He had been working on Replicache for a long time before he started this thing. That being said, I haven't tried them, so can't really give an educated opinion. But I feel pretty confident in the domain expertise on the Zero team.
- andrewmcwatters 1y agoAll the fundamentals have existed for at least 26 years. So, no, not really. It's also really weird to use video game terminology and ignore the fact that all of the approaches used in this article have in fact, been done by major game engines, are readily documented in game development circles, etc. It reads like an undergrad discovering game development for the first time. None of this is novel. It wasn't even novel for a web or desktop application to use.
- partdavid 1y agoCan you say more about which prior art you think overlaps here? We have a similar use case to Figma and are implementing a similar solution. I'm not particularly concerned whether the path we're following is novel but I am particularly concerned with whether there are gotchas along it that we should be watching out for, so if there are more mature solutions, we'd be interested.
- Rohansi 1y agoMultiplayer video games are the big one. There's no reason why you couldn't apply the same kind of synchronization to a web app. You'll just need to decide on an approach because not all games do it the same way. Most likely you'd want rollback netcode.
- mweidner 1y agoIndeed, Replicache works this way, using server reconciliation (one part of client-side prediction): https://doc.replicache.dev/concepts/how-it-works https://doc.replicache.dev/concepts/how-it-works
- andrewmcwatters 1y agoRead QuakeWorld 1999, client-server prediction, Counter-Strike: Source lag compensation. See also, “reconciliation.” Also, debatably the article hints towards an incorrect implementation because they specifically mention sending events instead of user input. By design, if you do this, you can create events that are supposed to eventually stop, but the user may drop packets and disconnect all the while you were processing an event that was never supposed to occur. If you poll user input and experience loss, there’s no event to misfire. This behavior manifests itself in games as a player that continues to walk forward despite having lost their connection to a server and is a indicator that a multiplayer server was implemented incorrectly.
- winrid 1y agoSharedb/racer solved this like 10yrs ago. You get synchronized snapshots, conflict resolition, diffs, change tracking..