Rust + WebAssembly
Shared document semantics
Rust owns commands, validation, anchors and history. WebAssembly brings that engine to the browser, with a thin adapter for DOM rendering and platform input.
edit.ac · Open source · SDK in development
A Rust-powered document engine, WebAssembly for the browser, and an architecture designed for responsive editing and collaboration. Embed the experience your product needs.
The architecture
Task descriptions, comments, notes and longer documents share the same demands: responsive input, dependable saves and content that can grow. edit.ac is designed around those demands, from the document store to the rendering boundary.
Rust + WebAssembly
Rust owns commands, validation, anchors and history. WebAssembly brings that engine to the browser, with a thin adapter for DOM rendering and platform input.
Incremental editing
Compact patches let adapters update changed content. The design keeps whole-document serialization and framework rerenders out of ordinary editing.
Local-first foundation
One Yrs-backed collaborative state underpins local editing, recovery and synchronization. Offline work and collaboration use the same document model.
Optional modules
The architecture separates the core from menus, tables, math and other extensions, so each product can choose the capabilities it needs.
Designed for performance
Each edit has a focused job. The engine and its adapters are designed to bound that work as the document grows.
Resolve the affected range and validate the command before changing the collaborative store. Keep expensive parsing outside the mutation phase.
Commit the edit, emit a compact patch and update the affected DOM or native spans. Scoped subscriptions keep application updates focused.
Send update bytes to storage and synchronization adapters. Ordinary typing should not wait for a network request or a full document export.
One engine, platform input
The shared engine keeps document rules consistent while each adapter handles its platform's input, selection and rendering. This is the direction for the SDK; platform availability follows qualified releases.
The browser design pairs a WebAssembly engine with a framework-independent adapter and a thin React wrapper. Native browser input and composition remain part of the editing experience.
The original brief calls for iOS and Android adapters using native text controls without a WebView. Native SDKs remain planned, with platform qualification tracked separately.
The headless engine provides a foundation for nonvisual consumers. The agent contract lets applications prepare and inspect proposed changes before applying them.
Keep local work
The local-first design carries edits through saves, restarts and reconnects. Your application owns storage and transport; the engine supplies the shared document semantics.
An update journal and checkpoints form the recovery path. Unsynced updates are retained, and persistence failures are explicit in the host contract.
Yrs-backed state and a version-pinned Yjs interoperability contract give collaboration a common foundation. Stable anchors identify positions as concurrent edits arrive.
Connect persistence and sync through host adapters. The hosting guide describes application responsibilities for identity, authorization, storage and remote commits.
Content that fits your product
The design brings Markdown and structured content into the shared engine, with optional extensions for richer interactions. Explore their contracts as you plan your integration.
A shared Rust parser and serializer are planned for formatted paste, typing shortcuts and explicit literal paste, with a documented CommonMark/GFM profile.
Typed nodes, marks and commands pair with platform rendering hooks. Planned modules include slash commands, mentions, block reorder and math.
Import and export have separate contracts. Check supported directions, conversion reports and fidelity limits when planning how content moves into or out of your product.
Choose your integration surface and check the compatibility boundaries. The migration path must account for document schemas, extension behavior and stored content.
Measure the whole experience
The brief sets engineering targets for the complete editing experience. Those targets guide development; they are not published benchmark results or claims of superiority over other editors.
Measure JavaScript, WASM and essential CSS together, including decompression, compilation and document restoration. Optional modules have their own costs.
Separate a fast first viewport from the first accepted edit. Track cold and warm starts, typing latency, Markdown paste and long-document activation.
Use reproducible documents and optimized baselines with equivalent collaboration and persistence. Track tail latency, memory and repeated mount/edit/destroy cycles.
Explore the SDK
Start with the integration contracts, then follow the development evidence for the capabilities your product needs.
Understand the web, native and terminal surfaces, lifecycle and services your application owns.
Plan save, recovery and reconnect behavior before adding collaboration.
Prepare and inspect document changes through your application's MCP, then apply them with a stable request identity.
Explore extension contracts for content, commands and the UI your product needs.
edit.ac is open source under Apache-2.0 and the SDK is in development. There is no qualified public editor release yet. Installation tutorials and a public playground will follow release qualification; the docs are ready for planning your integration.