top of page


21 NOVEMBER, 2026
BANGALORE


( SPEAKER )
Mayur Mahajan
Developer Relations Engineer, AppFlowy
AppFlowy
I'm Mayur, a Developer Relations Engineer at AppFlowy, the self-hosted Notion alternative built with Flutter and Rust. I've worked with Flutter for three years and have been contributing to AppFlowy and the appflowy_editor package, with occasional contributions to the bloc package and other open-source projects.
Off the clock I run a YouTube channel about self-hosting, tech, and programming.
Lightning talk
Building Realtime Collaborative Flutter Apps with CRDTs
Two users open the same document at the same time. It says "hello." One inserts a character at the start. The other deletes the "e." What happens next?
Whether you're building a docs app, a design tool, or some internal dashboard your team lives in, realtime collaboration has stopped being a feature and started being an expectation.
This session walks through how collaborative editing actually works in AppFlowy, the self-hosted Notion alternative built with Flutter and Rust: edits land in local BLoC state, persist to SQLite for local-first access, and cross into an on-device Rust core via dart:ffi, where yrs (the Rust implementation of the Yjs CRDT) merges them before syncing with other clients.
Key takeaways:
- Why concurrent edits can't just be sent and applied
- When you actually need a CRDT, and when Operational Transformation or Timestamps are good enough
- How to represent offline-first state in a BLoC architecture that syncs later
- Why everyone converging on the same document doesn't mean the document still makes sense
bottom of page