比較
この表は、@lazarv/react-serverを他の人気のあるReactフレームワークおよびルーティングソリューションと比較しています。フルスタック機能、アーキテクチャ、ルーティング、型安全性、検索パラメータ、スクロール復元、開発者体験を網羅しています。
この比較は、ドキュメントに記載されている機能セットを要約したものです。カスタムのユーザーランドソリューションではなく、ファーストクラスの組み込みサポートに焦点を当てています。一部の行はコアアーキテクチャを、その他の行は利便性やルーターのエルゴノミクスを説明しているため、この表は単一のスコアではなく、トレードオフのマップとしてお読みください。
この比較は
@lazarv/react-serverチームによって管理されています。不正確な点を見つけた場合は、issueを開いてください — 公平で正確な内容を目指しています。
凡例:
- ✅ — ドキュメント化され、フレームワークの意図されたモデルの一部であるファーストクラスの組み込みサポート
- 🟡 — 部分的なサポート、重要な制限事項、またはユースケースの限られたサブセットでのみ存在するサポート
- 🔶 — ユーザーランドの構成、コミュニティプラグイン、または手動セットアップで可能だが、ファーストクラスの組み込み機能ではない
- 🛑 — 意味のある組み込みサポートなし
| @lazarv/react-server | Next.js | TanStack Start | React Router | Waku | |
|---|---|---|---|---|---|
| React Server Components | ✅ | ✅ | 🛑 | 🟡 | ✅ |
| サーバー関数(アクション) | ✅ | ✅ | ✅ | 🟡 | ✅ |
| SSR | ✅ | ✅ | ✅ | ✅ | ✅ |
| ストリーミングSSR | ✅ | ✅ | ✅ | ✅ | ✅ |
| APIルート | ✅ | ✅ | ✅ | ✅ | ✅ |
| API / ルートミドルウェア | ✅ | ✅ | ✅ | ✅ | 🟡 |
| サーバー関数ミドルウェア | 🟡 | 🛑 | ✅ | 🛑 | 🛑 |
| 静的サイト生成 | ✅ | ✅ | 🟡 | 🟡 | ✅ |
| 部分的プリレンダリング(PPR) | ✅ | ✅ | 🛑 | 🛑 | 🛑 |
| レスポンスキャッシュ(TTL) | ✅ | ✅ | 🛑 | 🛑 | 🛑 |
| リダイレクト(サーバー) | ✅ | ✅ | ✅ | ✅ | 🟡 |
| リライト(サーバー) | ✅ | ✅ | 🛑 | 🛑 | 🛑 |
| リロード / 無効化 | ✅ | ✅ | ✅ | ✅ | 🛑 |
| @lazarv/react-server | Next.js | TanStack Start | React Router | Waku | |
|---|---|---|---|---|---|
| オープンランタイム(ベンダーロックインなし) | ✅ | 🟡 Vercel向けに最適化 | ✅ | ✅ | ✅ |
| Viteベース | ✅ | 🛑 | ✅ | ✅ | ✅ |
| 複数のデプロイターゲット | ✅ | 🟡 | ✅ | ✅ | ✅ |
| マイクロフロントエンド / リモートコンポーネント | ✅ | 🔶 | 🛑 | 🛑 | 🛑 |
| MCPサーバー統合 | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| ワーカー / マルチスレッドレンダリング | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| クラスターモード | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| アダプターベースのデプロイ | ✅ | 🟡 | ✅ | ✅ | ✅ |
| @lazarv/react-server | Next.js | TanStack Router | React Router | Waku | |
|---|---|---|---|---|---|
| ネスト / レイアウトルート | ✅ | ✅ | ✅ | ✅ | ✅ |
| コードベースのルート | ✅ | 🛑 | ✅ | ✅ | 🛑 |
| ファイルベースのルート | ✅ | ✅ | ✅ | ✅ | ✅ |
| 仮想 / プログラムルート | ✅ | 🛑 | ✅ | ✅ | 🛑 |
| ランク付きルートマッチング | ✅ | ✅ | ✅ | ✅ | 🛑 |
| Suspenseルートトランジション | ✅ | ✅ | ✅ | ✅ | 🟡 |
| Suspenseルート要素 | ✅ | ✅ | ✅ | ✅ | 🟡 |
| エラーバウンダリ要素 | ✅ | ✅ | ✅ | ✅ | ✅ |
| ローディング / ペンディング要素 | ✅ | ✅ | ✅ | ✅ | 🟡 |
| クライアント専用ルート | ✅ | 🛑 | ✅ | ✅ | 🛑 |
| パラレルルート / アウトレット | ✅ | ✅ | 🛑 | 🛑 | 🟡 |
| ルートプリフェッチ | ✅ | ✅ | ✅ | ✅ | 🟡 |
| 自動プリフェッチ | ✅ | ✅ | ✅ | ✅ | 🛑 |
| アクティブリンクのカスタマイズ | ✅ | ✅ | ✅ | ✅ | 🛑 |
| ナビゲーションガード / ブロッカー | ✅ | 🛑 | ✅ | 🟡 | 🛑 |
<Form>コンポーネント | ✅ | ✅ | 🛑 | ✅ | 🛑 |
| 遅延 / ストリーミングプリミティブ | ✅ | ✅ | ✅ | ✅ | 🟡 |
| @lazarv/react-server | Next.js | TanStack Router | React Router | Waku | |
|---|---|---|---|---|---|
| 型安全なルートパス | ✅ | 🟡 | ✅ | 🟡 | 🛑 |
| 型安全なパスパラメータ | ✅ | 🛑 | ✅ | ✅ | 🟡 |
| 型安全なナビゲーション | ✅ | 🟡 | ✅ | 🟡 | 🛑 |
| 型安全な検索パラメータ | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
| パスパラメータバリデーション | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
| パスパラメータの変換 / パース | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
| 型付きLinkコンポーネント | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
| 型付きフック(useParams, useSearchParams) | ✅ | 🛑 | ✅ | 🟡 | 🛑 |
| ルート型の自動生成(ファイルルーター) | ✅ | 🟡 | ✅ | 🛑 | 🛑 |
| ブランド付きアウトレット型 | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| マルチライブラリスキーマサポート(Zod, ArkType, Valibot) | ✅ | 🛑 | 🟡 | 🛑 | 🛑 |
| 軽量パース関数(スキーマライブラリ不要) | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| @lazarv/react-server | Next.js | TanStack Router | React Router | Waku | |
|---|---|---|---|---|---|
| 基本的な検索パラメータ | ✅ | ✅ | ✅ | ✅ | 🟡 |
| 検索パラメータフック | ✅ | ✅ | ✅ | ✅ | 🛑 |
| 型付き検索パラメータ | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
| 検索パラメータのスキーマバリデーション | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
<Link> / useNavigateの検索API(文字列ではなくオブジェクト) | ✅ | 🟡 | ✅ | 🟡 | 🛑 |
関数型検索アップデーター(prev => next) | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
| 検索パラメータ変換(エンコード/デコード境界) | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
| ルートスコープの検索変換 | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| カスタム検索パース/シリアライゼーション | ✅ | 🛑 | ✅ | 🔶 | 🛑 |
| @lazarv/react-server | Next.js | TanStack Router | React Router | Waku | |
|---|---|---|---|---|---|
| ウィンドウスクロール復元 | ✅ | 🟡 | ✅ | ✅ | 🟡 |
| 要素 / コンテナスクロール復元 | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
| 非同期コンテンツのスクロール復元 | ✅ | 🛑 | ✅ | 🛑 | 🛑 |
| ルートごとのスクロールカスタマイズ | ✅ | 🛑 | 🟡 | 🛑 | 🛑 |
| フラッシュなし復元(ハイドレーション前スクリプト) | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
prefers-reduced-motion対応 | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| ハッシュ / アンカースクロール | ✅ | ✅ | ✅ | ✅ | 🛑 |
| 設定レベルで有効化(コード不要) | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| クエリのみの変更でスクロール維持 | ✅ | 🛑 | 🟡 | 🛑 | 🛑 |
| @lazarv/react-server | Next.js | TanStack Router | React Router | Waku | |
|---|---|---|---|---|---|
| 型付きリソースディスクリプタ | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| スキーマバリデーション付きリソースキー | ✅ | 🛑 | 🟡 | 🛑 | 🛑 |
Suspense統合.use()フック | ✅ | 🛑 | ✅ | 🟡 | 🛑 |
| リソース無効化(キーごと) | ✅ | 🟡 | ✅ | 🛑 | 🛑 |
| リソースコレクション | ✅ | 🛑 | 🛑 | 🛑 | 🛑 |
| ルート-リソースバインディング(プリフェッチ) | ✅ | 🛑 | ✅ | ✅ | 🛑 |
| ルーターローダー(データ取得) | ✅ RSC + リソース | 🟡 | ✅ | ✅ | 🟡 |
| SWR / Stale-While-Revalidateキャッシュ | ✅ "use cache" | ✅ | ✅ | 🛑 | 🛑 |
| サーバー&クライアントローダー | ✅ | 🟡 | ✅ | ✅ | 🛑 |
| @lazarv/react-server | Next.js | TanStack Router | React Router | Waku | |
|---|---|---|---|---|---|
| ゼロコンフィグのファイルルーター | ✅ | ✅ | 🟡 | 🟡 | ✅ |
| MDXページ | ✅ | 🔶 | 🛑 | 🛑 | 🛑 |
| 仮想ルートモジュール | ✅ | 🛑 | 🟡 | 🟡 | 🛑 |
| ルートスコープのローディング / エラー / フォールバックファイル | ✅ | ✅ | 🛑 | 🛑 | 🛑 |
| ルートDevtools | 🛑 | 🛑 | ✅ | 🟡 | 🛑 |
| ルートマスキング | 🛑 | 🛑 | ✅ | 🛑 | 🛑 |
| ルートレベルの型付き依存関係 | ✅ 型安全なリソース | 🛑 | ✅ 型安全なルートコンテキスト + ローダー | 🛑 | 🛑 |
| ルートのマウント / アンマウントイベント | 🛑 | 🛑 | ✅ | 🛑 | 🛑 |
@lazarv/react-serverは完全なReact Server Componentsランタイムであり、単なるルーターではありません。ルーティングシステムはRSCストリーミング、サーバー関数、Viteビルドパイプラインと深く統合されています。これにより、型付きルート、クライアント専用ルート、サーバーサイドバリデーションなどの機能が、グルーコードなしでエンドツーエンドで動作します。
主なアーキテクチャの違い
- RSCネイティブ: RSCサポートを後付けするルーターとは異なり、
@lazarv/react-serverはReact Server Componentsのために一から構築されています。すべてのルートでサーバーコンポーネントとクライアントコンポーネントを自由に混在させることができます。 - クライアント専用ルート: ファイルシステムルーターで
"use client"を持つページは自動的にクライアント専用ルートになります — ナビゲーションはサーバーを完全にスキップします。設定は不要で、Reactの<Activity>コンポーネントによりコンポーネントの状態はナビゲーション間で保持されます。 - スキーマ非依存のバリデーション: ルートパラメータと検索パラメータは、任意のスキーマライブラリ(Zod、ArkType、Valibot)または軽量パース関数でバリデーションできます — ランタイムがバリデーション戦略を自動的に検出します。
- RSC + 型付きリソース:
@lazarv/react-serverは2つの補完的なデータ取得アプローチを提供します:async/awaitによるReact Server Components(RSCをローダーとして)と、型付きリソース —.use()(Suspense)、.query()(命令型)、.prefetch()、.invalidate()を備えたスキーマバリデーション済みの参照識別データディスクリプタです。リソースはキャッシュランタイムとして"use cache"を使用します — カスタムキャッシュレイヤーやSWRのボイラープレートは不要です。ルート-リソースバインディングにより、ナビゲーション時の並列プリフェッチが可能になります。 - ルートレベルの依存関係: TanStack Routerはルートコンテキストを、依存関係(認証、DBクライアントなど)をルートツリーに渡すためのファーストクラスの型付きプリミティブとして公開しています。
@lazarv/react-serverは同じ問題領域を型安全なリソース、リクエストコンテキスト、ネイティブモジュールでモデル化しています — リソースがすでにスキーマバリデーション済みのルートスコープデータを完全な型安全性で提供するため、別のルートコンテキストバッグは不要です。 - Devtoolsはまだありません: ルートDevtoolsは計画中です。現在のトレードオフは、型付きルートシステムがコンパイル時の安全性を提供し、ほとんどのルーティングエラーをブラウザに到達する前にキャッチすることです。
- アウトレットとパラレルルート:
@lazarv/react-serverは名前付きアウトレット(@sidebar、@content)を使用し、レイアウトに型付きプロップとしてレンダリングします。これはNext.jsのパラレルルートと機能的に類似していますが、より強い型付けを備えています — 各アウトレットはブランド付きReact要素であり、誤ってアウトレットを入れ替えることを防ぎます。 - Waku: WakuはVite上に構築されたもう一つのRSCネイティブフレームワークですが、意図的にミニマルなアプローチを取っています。基本的なファイルベースのルーティングとレイアウト、RSCサポートを提供しますが、型付きルーティングシステム、検索パラメータ処理、スクロール復元、ミドルウェア、その他の高度なルーティング機能は備えていません。Wakuの
Linkコンポーネントは基本的なscrollとprefetchOnEnter/prefetchOnViewプロップをサポートしていますが、ルーターAPIのほとんどはまだunstable_マークが付いています。Wakuは高度なルーティングを必要としないシンプルなRSCアプリケーションに適しています。