Delightful Multiplayer Editing with Phoenix
I’m a backend-focused developer working at Felt, where we’re building a real-time, collaborative mapmaking app. (Think Figma meets maps.) I fell in love with Elixir in 2019, when I used it to build a massively multiplayer game server for the X-Plane flight simulator, and I’ve been working with Elixir ever since.
This talk distills the lessons we’ve learned at Felt while building a highly collaborative, “multiplayer” editing tool on top of Phoenix and React. Phoenix Channels are our (not so) secret weapon for delivering low-latency collaboration, but Channels alone aren’t enough to guarantee a delightful experience for our users.
This talk will discuss a number of areas of where our initial ideas didn’t cut it, and what we had to do instead to improve the user experience. Topics will include:
- Minimizing time to first render
- Using optimistic client-side changes for zero-latency local editing
- Reducing latency when broadcasting changes
- Preventing data loss when the client goes offline
- Reducing blocking work within the Channel process