React 19 · Vite · Rust ホスト

MurasakiNext.js の開発体験を、デスクトップへ。

$ pnpm create murasaki@latest my-app
Next.js の開発体験をデスクトップへネイティブウィンドウネイティブメニューメモリは Electron の約 1/5React 19Vite HMR軽量な Rust ホストRust 不要MIT ライセンス

ネイティブアプリ。×Web の開発体験。

01 · ネイティブの証明

Web の開発体験を、OS のウィンドウで。

Murasaki は OS 標準の WebView をネイティブウィンドウに組み込みます。タイトルバーやアプリケーションメニュー、コンテキストメニューは OS の機能として動作します。

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 /> },
    ],
  },
])

このコードが、このメニューになります。macOS では NSMenu、Windows では HMENU。

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

メニューを操作できます。View → Reload も試してみてください。

01

ネイティブウィンドウ

wry を通じて OS の WebView を表示します。ブラウザのタブや iframe ではありません。

02

ネイティブメニューバー

React 側の宣言から OS のアプリケーションメニューを構築します。

03

スコープ付きコンテキストメニュー

useContextMenu(items) で NSMenu / HMENU / GtkMenu を宣言し、対象をウィンドウ全体または特定の要素に限定できます。

02 · なぜ作ったか

ファイルベースルーティング、Server Actions、React 19 を使ってデスクトップアプリを構築。Electron Chromium ではなく OS 標準の WebView を使い、Rust を書かずに開発できます。

03 · 今すぐ使える機能

開発から配布まで、ひとつのフレームワークで

ネイティブコードや IPC の配線をアプリごとに書かずに、デスクトップ固有の機能を React から利用できます。

ファイルベースルーティング

src/app/**/page.tsx、レイアウト、動的セグメント。Next.js に近いファイル構成で画面を追加できます。

Server Actions

'use server' と defineAction / useAction を使い、Node.js 側の処理を型付きで呼び出せます。

API Routes

src/api/**/route.ts にローカル HTTP エンドポイントを定義できます。別のローカルサーバーを用意する必要はありません。

ネイティブウィンドウ & メニュー

OS のウィンドウ、アプリケーションメニュー、コンテキストメニューを宣言的に構成できます。

UI キット

@murasakijs/ui は、Murasaki アプリ向けのアクセシブルなコンポーネントライブラリです。

署名済み配布

macOS はコード署名・公証、Windows は Authenticode、Linux は GPG 署名に対応した配布パッケージを生成します。

04 · 試してみる

右クリックしてみて。

右クリック、またはドラッグして描いてみてください

Murasaki アプリでは NSMenu / HMENU が開きます。この Web ページ上のメニューはデモ用の HTML です。

05 · vs Electron / Tauri

Murasaki を選ぶ理由

React / Next.js の知識を活かしながら、Rust や IPC の実装を最小限にして軽量なデスクトップアプリを作りたい開発者に適しています。

Electron

Murasaki

約 1/5

Electron に対するアイドル時メモリ使用量の目安

* Electron/Tauri でよく引用されるおおよその目安であり、実測ベンチマークではありません。

01 · UI ランタイム

Murasaki

OS WebView (wry)

Electron

Chromium を同梱

Tauri

OS WebView

02 · 言語

Murasaki

TypeScript / React

Electron

TypeScript / React

Tauri

TypeScript + Rust

03 · 開発体験

Murasaki

Next.js に近い構成(Vite HMR)

Electron

手動で構成

Tauri

手動で構成

04 · メモリ(アイドル時)

Murasaki

Electron の約 1/5*

Electron

基準値

Tauri

小さい傾向

05 · Server Actions

Murasaki

defineAction / useAction

Electron

手動 IPC

Tauri

手動 IPC / コマンド

06 · 実行できるサンプル

売り文句ではなく、動くアプリで。

標準スキャフォールドに加え、実際の要件から設計した3つの独立したアプリを、それぞれ CLI の1コマンドで起動できます。

開発者プレビュー · CLI

標準スキャフォールドを、そのまま実行。

create-murasaki が生成するアプリです。ネイティブメニュー、ファイルベースルーティング、Server Actions、API Routes、同梱された Node.js ランタイムを確認できます。

macOS 開発者プレビュー
pnpm dlx murasaki@latest demo
ビルド詳細とチェックサム

macOS CLI が CPU に合うビルドを選び、公開済みの SHA-256 と ad-hoc コード署名を検証した後、隔離属性を解除して起動します。

3つのアプリ。3つの方向性。

各 macOS 開発者プレビューは、CPU に合うビルドを選択し、公開済みの SHA-256 と ad-hoc 署名を検証してから隔離属性を解除し、起動します。ソースも確認できますが、公証済みの一般利用者向けダウンロードとしては案内しません。

Papelle desktop app interface

Papelle

ブロック編集、Markdown、添付ファイル、ページ間リンク、データベース表示、任意のセルフホスト同期を備えたローカルファーストのワークスペース。

macOS 開発者プレビュー
pnpm dlx murasaki@latest demo papelle
Oscilla desktop app interface

Oscilla

REST、GraphQL、WebSocket、シナリオテスト、モック応答、通信タイムラインをまとめた API ワークベンチ。

macOS 開発者プレビュー
pnpm dlx murasaki@latest demo oscilla
Orglia desktop app interface

Orglia

CRM、プロジェクト、受発注、在庫、申請、シフト、インシデント、分析をつなぐセルフホスト型の業務アプリ。

macOS 開発者プレビュー
pnpm dlx murasaki@latest demo orglia

07 · 配布物

開発画面ではなく、配布できるアプリへ。

.app / .dmg

macOS

利用可能

.app / .dmg、arm64 / x64、コード署名・公証に対応。

.zip / .exe / .msi

Windows

利用可能

.zip ポータブル版、NSIS .exe / MSI .msi インストーラー、arm64 / x64 に対応。

.AppImage / .deb

Linux

部分対応

AppImage と .deb パッケージ(x64 / arm64)に対応。AppImage は自己更新に、murasaki installer --sign は GPG コード署名に対応します。rpm は未対応です。

1つのコマンドで配布用パッケージを生成。macOS、Windows、Linux(AppImage / .deb)に対応します。

Murasaki

アプリケーション

08 · ごあいさつ

オオムラサキに会いましょう。

ドラッグで回転 · すべてテキスト

国蝶オオムラサキ(Sasakia charonda)は Murasaki の名前の由来です。create-murasaki がターミナルに描くバナーと同じように、すべてテキストで描画しています。

09 · Changelog

何を、いつ出したか。ありのままに。

  1. v0.55.82026-08-13

    本番サーバー・自動更新・MCP のセキュリティ強化

    同梱の本番サーバーが API クライアントに内部エラーの詳細を返さなくなりました。静的ファイルは起動時に構築した許可リストから配信する方式に変わり、パストラバーサル系の不具合を構造的に排除しています。

  2. v0.55.72026-07-24

    React Aria UI 基盤

    Murasaki の標準 UI 基盤は、全面的に React Aria Components を使用するようになりました。@murasakijs/ui の公開コンポーネント名と、従来からの値ベースの props はそのまま利用できます。一方で、フォーカス管理、キーボード操作、選択、オーバーレイの挙動は、Radix UI や cmdk に依存しなくなりました。

  3. v0.55.62026-07-20

    安定性の宣言

    機能マニフェストに含まれる 26 個の機能すべてが status: stable になりました。これは単なるラベルの変更ではなく、引用された検証根拠に裏付けられた、現行リリース系列に対する互換性の約束です。OS レベルのギャップが実際に存在する箇所では、プラットフォームラベルは正直な表示のままです。

更新履歴をすべて見る

10 · 3つのコマンドで開始

作成pnpm create murasaki@latest my-app
実行pnpm dev
バンドルpnpm bundle

最初のデスクトップアプリを作りましょう。

React 19、ファイルベースルーティング、Server Actions を OS のウィンドウで。Rust を書く必要はありません。

$ pnpm create murasaki@latest my-app