機能このページを編集.md

比較

この表は、@lazarv/react-serverを他の人気のあるReactフレームワークおよびルーティングソリューションと比較しています。フルスタック機能、アーキテクチャ、ルーティング、型安全性、検索パラメータ、スクロール復元、開発者体験を網羅しています。

この比較は、ドキュメントに記載されている機能セットを要約したものです。カスタムのユーザーランドソリューションではなく、ファーストクラスの組み込みサポートに焦点を当てています。一部の行はコアアーキテクチャを、その他の行は利便性やルーターのエルゴノミクスを説明しているため、この表は単一のスコアではなく、トレードオフのマップとしてお読みください。

この比較は@lazarv/react-serverチームによって管理されています。不正確な点を見つけた場合は、issueを開いてください — 公平で正確な内容を目指しています。

凡例:

@lazarv/react-serverNext.jsTanStack StartReact RouterWaku
React Server Components🟡🟡
サーバー関数(アクション)🟡
サーバー関数防御レイヤー
暗号化ref + hardened decoder
🟡
ID/origin/body上限
🟡
CSRF + validator
🔶
route actionモデル
🔶
auth/userland
SSR
ストリーミングSSR
APIルート
API / ルートミドルウェア🟡
サーバー関数ミドルウェア🔶
not first-class
🛑
client/server chain
🔶
not first-class
🛑
静的サイト生成🟡🟡
部分的プリレンダリング(PPR)🛑🛑🛑
レスポンスキャッシュ(TTL)🛑🛑🛑
リダイレクト(サーバー)🟡
リライト(サーバー)🛑🛑🛑
リロード / 無効化🛑
@lazarv/react-serverNext.jsTanStack StartReact RouterWaku
オープンランタイム(ベンダーロックインなし)🟡
Vercel向けに最適化
Viteベース🛑
本番HTTPレイヤー
バックプレッシャー + セキュリティ
🟡
プラットフォーム管理
🔶
ホスト/アダプター
🔶
ホスト/アダプター
🔶
ホスト/アダプター
オブザーバビリティ
OTelトレース + メトリクス

OTelスパン
🟡
手動/実験的
🟡
計測API
🔶
ユーザーランド
Hydration Islands🛑🟡
遅延Reactツリーのみ
🛑🛑
複数のデプロイターゲット🟡
マイクロフロントエンド / リモートコンポーネント🔶🛑🛑🛑
MCPサーバー統合🛑🛑🛑🛑
ワーカー / マルチスレッドレンダリング🛑🛑🛑🛑
クラスターモード🛑🛑🛑🛑
アダプターベースのデプロイ🟡
@lazarv/react-serverNext.jsTanStack RouterReact RouterWaku
ネスト / レイアウトルート
コードベースのルート🛑🛑
ファイルベースのルート
仮想 / プログラムルート🛑🛑
ランク付きルートマッチング🛑
Suspenseルートトランジション🟡
Suspenseルート要素🟡
エラーバウンダリ要素
ローディング / ペンディング要素🟡
クライアント専用ルート🛑🛑
パラレルルート / アウトレット🛑🛑🟡
ルートプリフェッチ🟡
自動プリフェッチ🛑
アクティブリンクのカスタマイズ🛑
ナビゲーションガード / ブロッカー🛑🟡🛑
<Form>コンポーネント🛑🛑
遅延 / ストリーミングプリミティブ🟡
@lazarv/react-serverNext.jsTanStack RouterReact RouterWaku
型安全なルートパス🟡🟡🛑
型安全なパスパラメータ🛑🟡
型安全なナビゲーション🟡🟡🛑
型安全な検索パラメータ🛑🛑🛑
パスパラメータバリデーション🛑🛑🛑
パスパラメータの変換 / パース🛑🛑🛑
型付きLinkコンポーネント🛑🛑🛑
型付きフック(useParams, useSearchParams)🛑🟡🛑
ルート型の自動生成(ファイルルーター)🟡🛑🛑
ブランド付きアウトレット型🛑🛑🛑🛑
マルチライブラリスキーマサポート(Zod, ArkType, Valibot)🛑🟡🛑🛑
軽量パース関数(スキーマライブラリ不要)🛑🛑🛑🛑
@lazarv/react-serverNext.jsTanStack RouterReact RouterWaku
基本的な検索パラメータ🟡
検索パラメータフック🛑
型付き検索パラメータ🛑🛑🛑
検索パラメータのスキーマバリデーション🛑🛑🛑
<Link> / useNavigateの検索API(文字列ではなくオブジェクト)🟡🟡🛑
関数型検索アップデーター(prev => next🛑🛑🛑
検索パラメータ変換(エンコード/デコード境界)🛑🛑🛑
ルートスコープの検索変換🛑🛑🛑🛑
カスタム検索パース/シリアライゼーション🛑🔶🛑
@lazarv/react-serverNext.jsTanStack RouterReact RouterWaku
ウィンドウスクロール復元🟡🟡
要素 / コンテナスクロール復元🛑🛑🛑
非同期コンテンツのスクロール復元🛑🛑🛑
ルートごとのスクロールカスタマイズ🛑🟡🛑🛑
フラッシュなし復元(ハイドレーション前スクリプト)🛑🛑🛑🛑
prefers-reduced-motion対応🛑🛑🛑🛑
ハッシュ / アンカースクロール🛑
設定レベルで有効化(コード不要)🛑🛑🛑🛑
クエリのみの変更でスクロール維持🛑🟡🛑🛑
@lazarv/react-serverNext.jsTanStack RouterReact RouterWaku
型付きリソースディスクリプタ🛑🛑🛑🛑
スキーマバリデーション付きリソースキー🛑🟡🛑🛑
Suspense統合.use()フック🛑🟡🛑
リソース無効化(キーごと)🟡🛑🛑
リソースコレクション🛑🛑🛑🛑
ルート-リソースバインディング(プリフェッチ)🛑🛑
ルーターローダー(データ取得)
RSC + リソース
🟡🟡
SWR / Stale-While-Revalidateキャッシュ
"use cache"
🛑🛑
サーバー&クライアントローダー🟡🛑
@lazarv/react-serverNext.jsTanStack RouterReact RouterWaku
ゼロコンフィグのファイルルーター🟡🟡
MDXページ🔶🛑🛑🛑
仮想ルートモジュール🛑🟡🟡🛑
ルートスコープのローディング / エラー / フォールバックファイル🛑🛑🛑
ルートDevtools🛑🛑🟡🛑
ルートマスキング🔶
URL IDモデル
🛑🛑🛑
ルートレベルの型付き依存関係
型安全なリソース
🛑
型安全なルートコンテキスト + ローダー
🛑🛑
ルートライフサイクルフック🔶
ガード + Reactライフサイクル
🛑🛑🛑

@lazarv/react-serverは完全なReact Server Componentsランタイムであり、単なるルーターではありません。ルーティングシステムはRSCストリーミング、サーバー関数、Viteビルドパイプラインと深く統合されています。これにより、型付きルート、クライアント専用ルート、サーバーサイドバリデーションなどの機能が、グルーコードなしでエンドツーエンドで動作します。

RSCサポートを後付けするルーターとは異なり、@lazarv/react-serverはReact Server Componentsのために一から構築されています。すべてのルートでサーバーコンポーネントとクライアントコンポーネントを自由に混在させることができます。

@lazarv/react-serverは、keep-alive/timeout調整、アドミッション制御、ELUベースのアダプティブバックプレッシャー、request/bodyとmultipartの上限、action POST向けCSRF origin検証、health/readinessエンドポイント、graceful shutdownを備えた本番ランタイムを持ちます。他のReactスタックでは多くの場合、これらはファーストクラスのランタイム層ではなく、ホスティングプラットフォーム、カスタムサーバー、リバースプロキシ、アダプター側に委ねられます。

@lazarv/react-serverは、アプリケーションコードを実行する前にサーバー関数呼び出しを敵対的入力として扱います。サーバー関数参照はAES-256-GCMのcapability tokenで暗号化され、key rotationをサポートし、maxRowsmaxDepthmaxBytes、string/BigInt/streamの上限などの設定可能なリソース制限と、prototype pollution、禁止されたpath walk、悪意あるthenable、偽造callableを防ぐ構造的防御を通してデコードされます。Next.jsにもsecure ID、origin check、closure encryption、body size capなどの意味のあるServer Action防御があります。TanStack StartにはCSRF middlewareとvalidatorがあります。react-serverで特徴的なのは、capability-tokenモデルとhardened RSC reply decoderを組み合わせたレイヤーが、ファーストクラスのランタイム境界になっている点です。

この比較では、TanStack Start が最も直接的なサーバー関数ミドルウェアモデルを持ちます。function middleware は、client側ロジック、server側ロジック、input validation、composition、global registration でサーバー関数を包めます。@lazarv/react-serverは現時点では TanStack 形式のファーストクラスな関数単位 middleware chain を公開していません。request middleware はサーバー関数ディスパッチの前に実行され、リクエストを短絡したり注釈付けしたりできます。一方で createFunction は、ハンドラ実行前にプロトコル層で引数ごとの parse/validate contract を提供します。関数横断のポリシーはユーザーランドの wrapper でも構成できますが、ファーストクラスのランタイムプリミティブは client/server function middleware pipeline ではなく、request middleware と contract/decoder 境界です。React Router の middleware は route action/loader リクエストを包むもので有用ですが、任意のRPCサーバー関数ではなく route action モデルに紐づくため、この行では同じくファーストクラスサポートではありません。

@lazarv/react-serverは組み込みOpenTelemetry統合を持ち、HTTPリクエスト、ミドルウェア、RSC/SSRレンダリング、サーバー関数、キャッシュ検索、サーバー起動、Vite開発フックを自動計測できます。request、render、server function、cacheの組み込みメトリクスも提供します。テレメトリ依存関係はオプションかつ遅延読み込みのため、無効時はno-op計測に解決されます。Next.jsにも公式のOpenTelemetry計測とフレームワークスパンがあります。React Routerはログやトレースに接続できるファーストクラスの計測ラッパーを提供します。TanStack Startはobservabilityパターンと手動/実験的なOpenTelemetryセットアップを文書化しており、Wakuは主にユーザーランドまたはホストプラットフォーム側に委ねるモデルです。

ファイルシステムルーターで"use client"を持つページは自動的にクライアント専用ルートになります — ナビゲーションはサーバーを完全にスキップします。設定は不要で、Reactの<Activity>コンポーネントによりコンポーネントの状態はナビゲーション間で保持されます。

ルートパラメータと検索パラメータは、任意のスキーマライブラリ(Zod、ArkType、Valibot)または軽量パース関数でバリデーションできます — ランタイムがバリデーション戦略を自動的に検出します。

@lazarv/react-serverは2つの補完的なデータ取得アプローチを提供します:async/awaitによるReact Server Components(RSCをローダーとして)と、型付きリソース.use()(Suspense)、.query()(命令型)、.prefetch().invalidate()を備えたスキーマバリデーション済みの参照識別データディスクリプタです。リソースはキャッシュランタイムとして"use cache"を使用します — カスタムキャッシュレイヤーやSWRのボイラープレートは不要です。ルート-リソースバインディングにより、ナビゲーション時の並列プリフェッチが可能になります。

TanStack Routerはルートコンテキストを、依存関係(認証、DBクライアントなど)をルートツリーに渡すためのファーストクラスの型付きプリミティブとして公開しています。@lazarv/react-serverは同じ問題領域を型安全なリソース、リクエストコンテキスト、ネイティブモジュールでモデル化しています — リソースがすでにスキーマバリデーション済みのルートスコープデータを完全な型安全性で提供するため、別のルートコンテキストバッグは不要です。

@lazarv/react-serverは統合Devtools(--devtools)を提供します。ルート検査だけでなく、RSCペイロード、キャッシュエントリ、ルート、アウトレット、リモートコンポーネント、live components、workers、server logsを単一パネルで扱います。TanStack RouterのDevtoolsはルーターに特化した優れたものですが、@lazarv/react-serverのDevtoolsはサーバーコンポーネントランタイム全体を対象にします。

@lazarv/react-serverは名前付きアウトレット(@sidebar@content)を使用し、レイアウトに型付きプロップとしてレンダリングします。これはNext.jsのパラレルルートと機能的に類似していますが、より強い型付けを備えています — 各アウトレットはブランド付きReact要素であり、誤ってアウトレットを入れ替えることを防ぎます。

@lazarv/react-serverは TanStack 形式のルートマスキングを意図的にサポートしていません。ブラウザに表示されるURL、サーバーリクエストURL、マッチしたルートツリー、RSCペイロード、ルートバリデーション、リソース、キャッシュキー、アウトレット、Devtoolsの状態は、同じナビゲーション状態を表すことを前提にしています。URLに別の見せ方が必要な場合は、隠れたクライアント専用のルートIDを作るのではなく、rewrite、redirect、ルートグループ、アウトレット、検索パラメータを使います。

@lazarv/react-serverは、クライアント側のページルートナビゲーション判断のために useNavigationGuardregisterNavigationGuard を提供します。back/forward と任意の beforeUnload 処理も含みます。内部では、ルートガード/登録コンポーネントがルート登録、アクティブ表示、ルートリソース、ローディングスケルトン、Activity による状態保持を管理します。ユーザー側の副作用は、ルーターオブジェクトの mount/unmount コールバックではなく、React effects、resources、middleware、server functions、cache invalidation に置くモデルです。

@lazarv/react-serverの Hydration Islands は初回レンダリングの境界です。サーバーHTMLをすぐに描画し、リクエストスコープの島専用ハイドレーションデータを保持し、後から独立したローカルアウトレットとしてハイドレートします。これは PAGE_ROOT をハイドレートしないページでも動作します。TanStack Start には Suspense されたReactサブツリーの deferred hydration 的な動作がありますが、そのサブツリーはページのReactツリー内に残り、独自のRSCペイロードを持つ別の島アウトレットにはなりません。Astro はこの React/RSC 比較の外では最も近いアーキテクチャです。コンポーネント単位のハイドレーションに対する本物の Islands アーキテクチャを持ちますが、RSC のローカルアウトレットモデルではありません。他のReactフレームワークでもユーザーランドでクライアントコンポーネントの遅延読み込みやJavaScriptの遅延は可能ですが、このローカルアウトレット型の島モデルをファーストクラス機能としては提供していません。

WakuはVite上に構築されたもう一つのRSCネイティブフレームワークですが、意図的にミニマルなアプローチを取っています。基本的なファイルベースのルーティングとレイアウト、RSCサポートを提供しますが、型付きルーティングシステム、検索パラメータ処理、スクロール復元、ミドルウェア、その他の高度なルーティング機能は備えていません。WakuのLinkコンポーネントは基本的なscrollprefetchOnEnter/prefetchOnViewプロップをサポートしていますが、ルーターAPIのほとんどはまだunstable_マークが付いています。Wakuは高度なルーティングを必要としないシンプルなRSCアプリケーションに適しています。