# PRNext 0.1.18: ページ状態の保持とより強力な運用ランタイム

PRNext 0.1.18-alpha は、ページ、ビルド、デプロイメントの間で発生する動作を改善します。フォーム状態をそのままにしてページに戻り、実際のナビゲーションを優先して、より多くのコンパイル作業を再利用できます。サーバーでは、共有キャッシュとリソース制限により、各リクエストに対して許可される作業をより詳細に制御できます。

このリリースでは、プロジェクト作成コマンド、アプリケーションにインストールされる TypeScript 7 コンパイラーのサポート、および公式 React コンパイラーとのオプションの統合も追加されています。以下のセクションでは、ユースケースごとの変更点について説明し、その後に変更ログとアプリケーションのチェックについて説明します。

## 実行できるプロジェクトから始める

prnext create コマンドは、ファイル、開発スクリプト、構成を備えた最小限の App Router アプリケーションを準備します。 TypeScript がデフォルトです。 --js は JavaScript プロジェクトを作成します。その結果、開発、実稼働ビルド、およびアプリケーションの提供の一貫した開始点が得られます。

作成では、欠落しているディレクトリまたは完全に空のディレクトリのみが受け入れられます。既存のプロジェクトを置き換えることを拒否します。 --no-install オプションは、独自のパッケージ マネージャーを使用してワークスペースにプロジェクトを追加する場合を含め、依存関係のインストールやネットワークへのアクセスを行わずにファイルを書き込みます。

```sh
npx @thomas.f/prnext create my-app
cd my-app
npm run dev
```

これらのコマンドには PRNext 0.1.18-alpha 以降が必要です。

## 最初からやり直さずにページに戻る

App Router では、PRNext は React アクティビティを通じて非アクティブなブランチを保持します。同じマウントされたレイアウトの下で承認された宛先に戻ると、選択したフィルター、部分的に完成したフォーム、または開いたパネルなどのコンポーネントの状態を復元できます。枝が非表示になっている間はエフェクトが停止します。

デフォルトの予算は、2 分間の 4 つの非アクティブなブランチであり、関連するレイアウト全体で共有されます。これは入場制限と時間制限であり、RAM を保証するものではありません。 NavigationCache 設定を使用すると、保持期間を調整したり、無効にしたりできます。

保持された状態は、データの鮮度と承認の対象となります。サーバー アクション、router.refresh()、および観察された ID 変更により、非アクティブなブランチが無効になります。保持された目的地を表示する前に、前後のナビゲーションで新しいフライトを要求します。カスタム認証の後、アプリケーションは適切な更新をトリガーする必要があります。ドキュメントを完全にリロードしても、メモリ内にのみ保持されているドラフトは保存されません。

## クリックを優先して接続切断から回復する

ホバー、キーボード フォーカス、タッチによってトリガーされるプリフェッチは、ビューポート スキャンよりも優先されます。実際のナビゲーションは推測的な作業よりも優先されます。キューと同時プリフェッチには制限があります。データセーバー、低速接続、隠しタブにより推測が制限されます。 prefetch={false} のリンクは、ホバー時またはフォーカス時にプリフェッチをトリガーしません。

トランスポートが原因でアプリ ナビゲーションの GET が失敗した場合、PRNext は 30 秒の予算と最大 3 回の試行内で回復できます。現在のページとそのマウント状態は、リカバリ中も表示されたままになります。新しいナビゲーションでは古い試行がキャンセルされ、再接続では、保存されたプライベート応答を使用する代わりに、現在の Cookie を使用して新しいデータが要求されます。

リカバリでは、サーバー アクションや別の POST が自動的に再生されることはありません。突然変異は、応答が失われた場合でも完了している可能性があります。アプリケーションは、別のアクションを提供する前に結果を確認する責任を負います。これは永続的なオフライン サポートではありません。オプションの useOffline フックを使用すると、アプリケーションは独自の接続インジケーターを表示できます。

## 完全応答フォールバックを使用してフライト変更を送信する

アプリのナビゲーションは、ストリーミング差分フライトをネゴシエートできます。ブラウザーに再利用可能なベースがある場合、PRNext は正確な新しい応答を再構築するために必要な差分を送信します。保持されるベースは制限されており、デプロイメントと認証コンテキストの両方に関連付けられています。

ベースが欠落している、期限切れである、または互換性がない場合は、完全なフライト応答が生成されます。デルタが無効な場合、そのナビゲーション GET についてはデルタなしで 1 回の再試行が許可されます。アクションはリプレイされません。目標は、コンテンツが再利用をサポートしている場合に、ナビゲーションをキャッシュ ヒットに依存させずにバイトの繰り返しを回避することです。

バッファーと保持塩基には明示的な制限があります。 HTML とストリームの処理により、不必要な集約バイナリ コピーも回避されます。サーバー応答には、引き続き React レンダリング、アプリケーション コード、およびデータ アクセスが含まれます。差動トランスポートは、すべてのページで同じ改善を約束するものではありません。

## React コンパイラを有効にし、その実際の決定を検査します

actCompiler オプションは、バンドルされている公式 React コンパイラーを有効にします。デフォルトでは無効になっています。この変換は、開発および運用中のアプリケーション ブラウザ コンポーネントとアプリケーション クライアント コンポーネントの分離されたサーバー レンダリング グラフをターゲットとしています。サーバー コンポーネント、サーバー アクション モジュール、npm 依存関係、および Pages サーバー グラフは、この変換の外部に残ります。

CompilationMode: アノテーションと use memo ディレクティブを使用して、コンパイラを段階的に採用できます。 use no memo ディレクティブは、個別の機能を除外します。 prnext コンパイラ レポートは、観察された関数、最適化またはスキップの決定、およびコンパイラの理由を特定します。また、キャッシュされた変換の再利用も区別されます。これらはコンパイル上の決定であり、インターフェイス速度の測定ではありません。

対象となる JavaScript グラフは、バイナリ メタデータおよびコンテンツ アドレス指定された BLOB として保存されます。チェックサムは検証されます。欠落しているエントリ、破損しているエントリ、または同時に削除されたエントリは、通常のキャッシュ ミスとなり、再構築されます。実稼働ビルドでは、パブリック インターフェイスを維持しながら、ローカル CSS モジュールとアニメーション名を短縮し、内部エクスポートを圧縮し、共有チャンクを再利用できます。

## アプリケーションにインストールされている TypeScript を使用します

PRNext は、プラットフォームの依存関係を持つアプリケーションにインストールされると、公式のネイティブ実行可能ファイルを通じて TypeScript 7 をサポートします。実稼働チェック、prnext typecheck、および開発診断では、そのコンパイラが使用されます。 PRNext はビルド中にコンパイラーをダウンロードしません。 TypeScript 5 および 6 は、コンパイラ API の統合を保持します。

チェックではアプリケーション JavaScript は発行されず、増分コンパイラの状態が所有されている一時ディレクトリに保持されます。新しいソース ファイルと構成の変更により、対応する監視の生成が再開されます。型付きルートの生成はネイティブ TypeScript もサポートしており、構成を更新するときに JSONC コメントを保持します。各プロジェクトでは、TypeScript 7 独自の言語と構成の変更を考慮する必要があります。

## 適格なキャッシュ エントリをプロセス間で共有する

アプリケーションが複数のワーカーまたはインスタンスにわたって実行される場合、ローカル キャッシュだけでは十分ではありません。 PRNext は、対象となる共有結果用にオプションの Redis アダプターを追加します。キャッシュ コンポーネント ハンドラーは、キャッシュ結果の使用をサポートします。別個の createRedisIncrementalCache アダプターは、ネイティブ HTML と ISR、fetch、unstable_cache をカバーします。

これらのストレージの役割は明示的です。1 つのアダプターを有効にしても、すべてのキャッシュが自動的に置き換えられるわけではありません。 Redis はオプションのアプリケーション依存関係のままです。通常のプロジェクトおよび新規コマンドで作成したプロジェクトでは必要ありません。

共有再生成では、リースを使用して作業を調整し、無効化または期限切れ後に古いプロデューサーが公開されないようにします。モデルはタグとバイナリ値を保持します。目的は、アプリケーション データの適格性と分離ルールを維持しながら、プロセス全体で一貫した調整を行うことです。

## 展開全体で開いているタブの一貫性を維持する

すべての運用成果物にはデプロイメント ID があります。 PRNext は、年齢、世代数、およびサイズの制限内で、以前の世代からの不変資産を保持できます。すでに開いているタブは、次のデプロイメントから任意の置換を受け取る代わりに、そのコードに属するリソースのロードを完了できます。

保持は適格な資産に適用されます。これは、古いパーソナライズされた応答を提供したり、アクションを再生したりすることを正当化するものではありません。 PRNext の前のプロキシとキャッシュは、展開プロトコルで必要なヘッダーとバリエーションを保持する必要があります。

htmlOnly オプションでは、完全に静的で非対話型のアプリ ページも選択されます。プロダクション HTML は、ブートストラップ スクリプトやフライト ペイロードなしで、スタイル、フォント、メタデータを保持します。クライアント コンポーネント、サーバー アクション、インタラクティブ リンク、および互換性のないレンダリング機能は、選択されたルートでは拒否されます。これらのページのいずれかに入ると、通常のドキュメント ナビゲーションが実行されます。これは明示的なモードであり、他のページから JavaScript を削除しません。

## 承認された作業をバインドし、リクエストを終了させます

ランタイムはリクエスト受付、待機キュー、応答バジェットを強化するため、負荷によって無制限の作業が発生することはありません。スケジュールはルートを考慮して、最も忙しいストリームの外側にリクエストを受け入れる余地を残します。ランタイム プロファイルは、環境内に表示される CPU とメモリ制限をより適切に考慮します。

HTTP ストリームの終了を関連するすべての作業の終了として扱うことなく、ワーカーを停止または置き換えることができます。キャッシュ ファイナライザーと追跡された応答後のタスクはドレインに含まれます。ブロックされたプロセスはシャットダウン境界を保持し、ワーカーの回復は、すでにデータが変更されている可能性のあるリクエストを再実行しません。

アイドル状態のワーカーを退職すると、次のリクエストでウェイクアップ コストが発生し、アクティビティ期間の間に保持されるリソースが削減される可能性があります。ネイティブ プロセスとその他のサービスはそのまま残ります。このランタイム メカニズムは、ホスティング プロバイダーでスリープしているアプリケーション全体とは別のものです。利点はトラフィックとアプリケーションの動作によって異なります。このリリースは、RAM の一般的な削減を約束するものではありません。

## 実際に実行およびロードされたコードを検査する

インストルメンテーション フックは、サポートされているノード、RSC、およびエッジ環境での登録とリクエスト エラーのレポートをサポートします。オプションの OTLP HTTP JSON エクスポートは、ネイティブ HTTP、ノード、RSC およびフェッチ ステージをアプリケーションの OpenTelemetry コンテキストと関連付けます。エクスポート キューは制限されており、テレメトリの失敗によってアプリケーションの応答は変わりません。

初期の JavaScript 分析には、ハイドレーション中に待機されるインポートと、サーバー レンダリングによって実際に使用される動的チャンクが含まれます。レポートでは、サンプリングされたパス、圧縮固有のサイズ、不完全なカバレッジを区別します。スタイルは、関連するルートとより密接に関連付けられます。これにより、すべてのプロジェクト アセットの合計を初期ペイロードとして扱うことなく、特定のページが何をロードするかを検査できます。

## 0.1.18 変更ログ

ナビゲーションは、制限されたアプリ ブランチの保持、接続喪失後の GET リカバリ、インタラクションファーストのプリフェッチ、および差分フライト トランスポートを統合します。ナビゲーションおよびプリフェッチ ステージはオプションのままです。navigation()、prefetch()、および ensureStatic は、プライベート コンテンツを別のユーザーが再利用できるようにすることなく、キャッシュ コンポーネントを使用して適格なフェーズを定義します。

コンパイルでは、React コンパイラーとその決定レポート、ネイティブ TypeScript 7、および適格なグラフ用のバイナリ ストレージが追加されます。ビルドではローカル CSS 識別子を短縮し、共有チャンクを再利用します。オンデマンド コンパイルでは、ミドルウェアと書き換え後に宛先を具体化し、必要な並列ブランチを保持し、無関係なルートをコールドのままにすることができます。

実稼働環境では、Redis アダプター、デプロイメント ID、制限された資産保持、および htmlOnly ルートが追加されます。並列プリレンダリングとファイナライザーはより慎重に調整されます。入場、キュー、応答バッファー、ワーカーのライフサイクルはより強力に制御されます。 Web レンダラーはデフォルトのままです。オプションのノード パスは、同じアプリケーションでの比較をサポートします。

信頼性に関する修正には、結合されたファイル システム通知後のソース サブディレクトリの検出、メタデータ ヘルパーの解決、およびネイティブ TypeScript 診断の更新が含まれます。ナビゲーション テストは対話型ページを待機しますが、ワーカー テストは有効な低速起動とシャットダウン境界の超過を区別します。新しいジェネレーターは、最小限の App Router アプリケーション用のスクリプトとファイルを準備します。

## アプリケーションでの検証と採用

この記事では、ソース コミット 05a9ccd について説明します。完全な検証は Linux、macOS、Windows に渡され、Rust ランタイム、単体テスト、型、統合、ブラウザーがカバーされます。 6 つのプラットフォームすべてのアーカイブは、同じコミットから構築されます。 12 の分離インストールで両方の依存関係レイアウトをチェックし、18 のライフサイクル シナリオで Node.js 22, 24 および 26. をカバーします。

Next.js の互換性は部分的なままであり、このリリースはアルファ版のままです。ルート、データ アクセス、フォーム、サーバー アクションを確認し、実稼働アプリケーションを構築して実行します。 React コンパイラー、Redis、ステージング ナビゲーション、および htmlOnly を個別に採用して、プロジェクト内でそれらの効果を観察できるようにします。

パッケージを更新した後、アプリケーションを再構築して再起動します。実際のオプションを見つけるには、インストールされたバージョンにバンドルされているガイドを使用してください。別のソース スナップショットに関連付けられたパフォーマンス結果は、このコミットの新しいベンチマークではありません。ゲインを一般化する前に、アプリケーションの CPU、RAM、およびウェイクアップ時間を測定します。

## Sources

[PRNext : changements depuis v0.1.17-alpha / Changes since v0.1.17-alpha](https://github.com/Lorkydey/PRNext/compare/v0.1.17-alpha...05a9ccd20e86a20698b4a37bdf6a6baa3411ceaf)

[Changelog du code documenté / Changelog for the documented source](https://github.com/Lorkydey/PRNext/blob/05a9ccd20e86a20698b4a37bdf6a6baa3411ceaf/CHANGELOG.md)

[Guides de compatibilité / Compatibility guides](https://github.com/Lorkydey/PRNext/blob/05a9ccd20e86a20698b4a37bdf6a6baa3411ceaf/packages/prnext/docs/ai/compatibility.md)

[Validation multiplateforme / Cross-platform validation](https://github.com/Lorkydey/PRNext/actions/runs/40980719114)

発行済み: 2026-10-30

修正済み: 2026-10-30

著者: PRNext

---

言語: ja

Canonical: https://prnext.dev/ja/blog/prnext-0-1-18-navigation-build-production

Index: https://prnext.dev/llms.txt
