How AFFiNE Editors Work: Page, Edgeless, and Blocks
AFFiNE no longer needs the old A0-A3 editor taxonomy alone. This 2026 guide explains Page, Edgeless, blocks, and databases through practical workspace examples.
Cursors in Editors and How We Build It in AFFiNE
This article briefly explains cursor-related concepts in editor design, and how they are implemented in AFFiNE
Using Enums in TypeScript
This article is not intended to teach you how to use enums in Typescript, but rather to discuss the problems of using them in real-world scenarios, based on our experiences and some references
Copy and Paste with Customized Clipboard
Copy and Paste are two of the most basic features for a practical editor
A Recommendation for interface-based programming
When implementing custom data structures, it is best to keep methods such as forEach, find and findLast coherent with Javascript's interface standards
Why AFFiNE Chose CRDT over OT to Build a Collaborative Editor
Discover why Affine chose CRDT over OT for superior real-time collaboration, ensuring high availability, strong fault tolerance, and easy scalability to elevate your business success