Skip to content

Editor

The web app’s note surface has two tabs — Preview and Edit. Preview is where the rich rendering happens; Edit is a plain CodeMirror 6 text input for writing markdown.

The viewer is a remark/rehype stack designed for Obsidian compatibility. If it renders in Obsidian, it should render here.

  • CommonMark + GFM — headings, lists, tables, fenced code blocks, strikethrough, task lists
  • Wikilinks[[Note Title]] and [[Note Title|Display Text]], rendered as links to /notes/<path>
  • Image embeds![[image.png]] resolves to the authenticated attachments API
  • Callouts — Obsidian-style > [!note], > [!warning], > [!tip], etc., via @portaljs/remark-callouts
  • KaTeX math$inline$ and $$display$$
  • Mermaid diagrams — fenced ```mermaid blocks
  • Syntax highlighting — fenced code blocks rendered with rehype-highlight
  • Frontmatter — YAML at the top of the file is parsed with gray-matter; the body renders below
  • Auto-linked headings — every heading gets a slug + anchor link

Edit mode swaps in a CodeMirror 6 input with the markdown language plugin (syntax highlighting), line wrapping, and a mobile-safe 16px font that prevents iOS Safari auto-zoom.

Save is explicit: a Save button at the top of the edit pane commits your changes (and a Revert button drops them). When your draft differs from the saved note, the Save button enables; when it matches, both buttons disable.

The web editor is intentionally a quick-capture surface: open a note, edit, save. For richer authoring — auto-save, slash menus, in-editor find/replace, wikilink and tag autocomplete — Obsidian is the right tool. The split is by design rather than by gap; Obsidian is already an exceptional editor and we sync to it natively, so the web app focuses on what’s hard to do well from Obsidian (cross-vault browse, mobile access without the Obsidian iOS app, anywhere-browser access).

The web editor goes through the same sync engine as the plugin. If another device edits the same note while you have it open, the backend rejects your write with a version conflict and the toast surfaces the failure. Reload the note and re-apply your edits.

Anything that depends on an Obsidian community plugin — Dataview queries, Templater outputs, custom canvas extensions, Excalidraw shapes, etc. — won’t execute in the web editor. The web app ships its own renderer; it can’t run plugin code from your Obsidian installation. Dataview blocks render as plain fenced code, Templater syntax stays unresolved, and so on.

Notes that depend on plugin rendering are still safe — they sync as plain markdown and look correct in Obsidian. They just don’t get the dynamic rendering when viewed in the web app.

Plugin compatibility is something we may explore in a future major version, but it isn’t on the current roadmap.

The editor is touch-friendly but small-screen-limited. For heavy editing on phones, Obsidian mobile is usually the better surface. Quick edits and search in the web app work fine.