React 19 · Vite · Rust-native

MurasakiNext.js DX for desktop apps.

$ pnpm create murasaki@latest my-app
Launch in Murasaki - Next.js DX for native desktop apps | Product Hunt
Next.js DX for desktopNative windowsNative menus~1/5 Electron memoryReact 19Vite HMRRust-nativeNo Rust requiredMIT licensed

Native apps.Web DX.

01 · Native proof

Not a browser tab. A real OS window.

Murasaki windows are native — a real title bar, a real menu bar, real OS chrome. Right-click anywhere and you get an actual native menu, not an HTML popup pretending to be one.

src/app/layout.tsx
import { useAppMenu, Action } from 'murasaki'

useAppMenu([
  { label: 'File', items: [{ role: 'close' }] },
  { role: 'editMenu' },
  {
    label: 'View',
    items: [
      { label: 'Reload', shortcut: 'command,R', action: <Action.Reload /> },
    ],
  },
])

This code becomes that menu. NSMenu on macOS, HMENU on Windows.

Murasaki App

Hello, Murasaki 🦋

The Next.js developer experience — file-based routing, server actions and native menus — in a lightweight Rust shell.

Edit src/app/page.tsx and save to reload.

DocsGitHubmurasaki_js
Try the interactive demo

Try the menus — View → Reload works.

01

Native window

A real OS window (wry) — not a browser tab, not an iframe.

02

Native menu bar

A real application menu bar, built from the same config as your app.

03

Scoped context menus

useContextMenu(items) declares a real NSMenu / HMENU / GtkMenu — global, or scoped to one element.

02 · Why it exists

Build native desktop apps with file-based routing, server actions, and React 19 in a Rust-native window, not Electron's Chromium. Without writing Rust.

03 · What ships today

Everything you need to ship a desktop app

No native code to write, no IPC to hand-wire — six things that just work out of the box.

File-based routing

src/app/**/page.tsx, layouts, and dynamic segments — the routing you already know from Next.js.

Server Actions

'use server' + defineAction / useAction — the same React 19 shape, running natively.

API Routes

Next.js-style src/api/**/route.ts HTTP endpoints, no extra server to run.

Native window & menus

A real native window, a native menu bar, and scoped native context menus — not HTML popups.

UI kit

@murasakijs/ui — a shadcn-style component library built for Murasaki apps.

Signed distribution

Portable .app bundles with optional code signing and notarization.

04 · Try it

Right-click this.

psst — right-click. drawing works too

In a real Murasaki app this pops a native NSMenu / HMENU. On a website? Still just HTML — we had to be honest somewhere.

05 · vs Electron / Tauri

Why Murasaki

Choose Murasaki if you know React/Next.js and want a small-footprint desktop app without learning Rust or hand-wiring IPC.

Electron

Murasaki

~1/5

of Electron's idle memory footprint.

* commonly-cited ballpark for Electron/Tauri — not a measured benchmark.

01 · UI runtime

Murasaki

OS WebView (wry)

Electron

Bundled Chromium

Tauri

OS WebView

02 · Language

Murasaki

TypeScript / React

Electron

TypeScript / React

Tauri

TypeScript + Rust

03 · DX

Murasaki

Next.js-style (Vite HMR)

Electron

Manual wiring

Tauri

Manual wiring

04 · Memory (idle)

Murasaki

~1/5 of Electron*

Electron

Baseline

Tauri

Small

05 · Server actions

Murasaki

defineAction / useAction

Electron

Manual IPC

Tauri

Manual IPC / commands

06 · Runnable apps

Try the result, not just the pitch.

Run the packaged default scaffold or three independent apps through the developer CLI—without presenting an unsigned build as a consumer download.

Developer preview · CLI

The default scaffold, already packaged.

The exact app created by create-murasaki, with native menus, file-based routes, Server Actions, API routes, and the bundled Node runtime.

macOS developer preview
pnpm dlx murasaki@latest demo
Build details & checksums

The macOS CLI selects the correct CPU build, verifies its published SHA256 and ad-hoc code signature, then explicitly removes quarantine before launch.

Three apps. Three directions.

These macOS developer previews run through Murasaki's CLI—no consumer download is presented as a signed app. Each command verifies the published SHA256 and ad-hoc code signature before removing quarantine and launching.

Violet Notes desktop app

Violet Notes

Local-first Markdown editing, live preview, import/export, and native menus.

macOS developer preview
pnpm dlx murasaki@latest demo violet-notes
Murasaki Focus desktop app

Murasaki Focus

Persistent timer state, keyboard controls, and a focused consumer desktop UI.

macOS developer preview
pnpm dlx murasaki@latest demo murasaki-focus
Local Signal desktop app

Local Signal

API Routes, Server Actions, the bundled Node runtime, and live request monitoring.

macOS developer preview
pnpm dlx murasaki@latest demo local-signal

07 · Artifacts

This is what you ship.

.app / .dmg

macOS

Ships today

.app / .dmg, cross-arch (arm64 & x64), with optional code signing and notarization.

.zip / .exe / .msi

Windows

Ships today

Portable .zip plus NSIS .exe and MSI .msi installers, cross-arch (arm64 & x64).

.AppImage

Linux

Roadmap

murasaki dev runs today; @murasakijs/native ships prebuilt x64/arm64 binaries. App packaging is on the roadmap.

One command → a real native installer. macOS & Windows today — Linux next.

Murasaki

Applications

08 · Say hi

Meet the Great Purple Emperor.

drag to spin · 100% text

Sasakia charonda — the great purple emperor, Japan's national butterfly, and this framework's namesake. Rendered in plain text, the same way the create-murasaki banner draws it in your terminal.

09 · Three commands

Createpnpm create murasaki@latest my-app
Runpnpm dev
Bundlepnpm bundle

Buildyourfirstnativeapp.

React 19, file-based routing, and server actions — in a real native window. No Rust required.

$ pnpm create murasaki@latest my-app