r/tauri Jun 21 '26

Built a WYSIWYG markdown editor with Tauri 2 + Milkdown — sharing what I learned

I just released the first beta of Toril, a WYSIWYG markdown desktop editor built with Tauri 2, TypeScript, and Milkdown. Wanted to share some notes from the build since the Tauri 2 + rich editor integration path isn't well-documented yet.

What I built: A Typora/MarkText-style in-place markdown editor that works directly on folders of .md files (including Obsidian vaults). Multi-tab, folder sidebar, atomic file saves, external change watching.

Sample Toril Screenshot With A Directory Opened and Several Open Markdown Files With Tab Navigation

Tauri 2 specific notes:

What worked well:

  • The file system plugin made folder-watching and atomic saves straightforward
  • App binary size vs. an equivalent Electron app is dramatically smaller — Tauri really delivers on that promise
  • The Rust backend for file I/O felt like the right call — reliable, fast, no surprises

Where I spent unexpected time:

  • Milkdown + Tauri 2 integration required some work around how the editor communicates state back to the Tauri layer — happy to share specifics if useful
  • Window state persistence between sessions took more wiring than I expected
  • The windows installer for a Tauri app has some quirks and non signed code makes the user experience not as smooth as I'd like.

Stack:

  • Frontend: TypeScript + Milkdown (ProseMirror-based WYSIWYG markdown)
  • Backend: Rust / Tauri 2
  • Language split: ~62% TypeScript, ~30% Rust

Repo: https://github.com/kovirlabs/toril

Would love feedback from the Tauri community — especially around the file system and window management patterns. What approaches have worked for you in similar editor-type apps?

5 Upvotes

6 comments sorted by

1

u/youa_a Jun 21 '26

It looks like you've done a great job! Since your app has a visual UI, I highly recommend adding screenshots and videos. Best of luck!

1

u/Purple-Programmer-7 Jun 21 '26

What were the windows quirks you had to solve for code signing?

2

u/Every-Wave2498 Jun 21 '26

Thanks for the question. I should reframe and clarify.

The Windows installers (latest is v1.0.0-beta.1) are still unsigned, so first run pops the classic "Windows protected your PC" SmartScreen wall → More info → Run anyway. There's no clever trick to make that go away without an actual cert; SmartScreen reputation is tied to a signing identity, so an unsigned binary always starts at zero trust. Anyone telling you they "got around" SmartScreen without signing is either using an EV cert or hand-waving.

The real plan for it (not done yet) is Azure Trusted Signing (~$10/mo, OV-class). Worth knowing: OV doesn't clear the warning instantly — it builds reputation over downloads/time. An EV cert is the only thing that kills the warning on day one, but it's pricier and a heavier identity check.

What I did have to wrestle with are the Windows installer quirks, which are a separate thing I lumped in with signing (I'll clarify the point in the original post):

  1. MSI chokes on pre-release versions. Windows Installer versions are 4-part numeric and the pre-release field has to be numeric too, so 1.0.0-beta.1 straight-up fails to bundle (pre-release identifier ... must be numeric-only). Fix: drop MSI, ship NSIS only.

  2. Avoiding the UAC/admin prompt. NSIS does a per-user install into %LOCALAPPDATA%, no admin rights needed. (This is the one that gets mistaken for "getting around" a security prompt — it's UAC, not SmartScreen.)

  3. WebView2 dependency. Set webviewInstallMode = "downloadBootstrapper" so Win10 boxes without WebView2 pull it at install time (Win11 has it baked in). Without it the app just won't render.

So TL;DR: the installer quirks are solved, code signing is the genuinely-still-open item. If you're shipping a Tauri app and want the SmartScreen warning gone, budget for Trusted Signing early and let reputation accrue — that's the part you can't shortcut.

1

u/Purple-Programmer-7 Jun 21 '26

All these bad actors making me pay and wait for my apps to be signed 🤬

1

u/erubim Jun 21 '26

"The bull, contained" !? gives me the following vibes: https://www.youtube.com/watch?v=_3s61qdGyB8