
Signals対クエリベースコンパイラ
changed_at / verified_atフィールドで担保されます。一方向の依存性追跡はメモリ消費を抑えてスケーラビリティを確保するもので、コンパイラグラフは10万ノードを超えることもあります。著者はViteのような増分開発サーバーに両アーキテクチャのハイブリッドが適しているかという開かれた問いで締めくくっています。JS frameworks, React/Vue/Svelte, and runtime updates Compiled for immediate developer deployment.

changed_at / verified_atフィールドで担保されます。一方向の依存性追跡はメモリ消費を抑えてスケーラビリティを確保するもので、コンパイラグラフは10万ノードを超えることもあります。著者はViteのような増分開発サーバーに両アーキテクチャのハイブリッドが適しているかという開かれた問いで締めくくっています。
useNavigation・useRoute・useNavigationStateフックが画面名から型を自動推論するようになり、従来の煩雑なTypeScript型注釈が不要になりました。新しいpushParams APIは画面遷移やスタックリセットなしにpropsを更新し、履歴に追記することで戻る操作で以前のパラメーターを復元します。NavigationContainerにはアプリ終了後もナビゲーター状態を復元するカスタム関数を定義できるpersistorプロパティが追加されました。
require(esm)が実験的フラグから安定(stable)状態に至るまでの経緯を振り返ります。2025年末時点で、サポートされているすべてのLTSリリースライン(v20.19.0以降、v22.12.0以降)で利用可能です。技術的な核心制約はrequire()が同期的であり続けなければならないことで、トップレベルawaitを使うモジュールはこの方法でロードできません。2024年9月に上位5,000のnpmパッケージを分析した結果、このコンテキストでトップレベルawaitが不可欠なパッケージは~0.02%のみで、ESM専用パッケージの~20%が即座に恩恵を受けられることが判明しました。この機能がなければCommonJSが配布形式の最小公分母であり続け、パッケージ作成者はデュアルパッケージ(別々のモジュールインスタンスの危険を伴う)やfaux-ESM(ESMソースをdist/でCommonJSにトランスパイル)に頼らざるを得ませんでした。v20へのバックポートはオープンなリグレッションを避けるため、119コミットから33コミットに絞り込みました。EOL版Node.jsのサポートが不要になったパッケージ作成者は、CommonJS配布を完全に廃止しpackage.jsonのexportsフィールドを簡略化できます。
rkyvシリアライゼーションを自己記述型のcborに置き換え、AST列挙型にUnknownバリアントを追加することで、既存のプラグインが将来のSWCアップグレードを経ても大半は動作し続けます。Rspack CLIでは動的にインポートされるモジュールに対してレイジーコンパイルがデフォルト有効になり、初期モジュールグラフを削減して開発サーバーの起動を高速化します。定数インライン化(optimization.inlineExportsで制御)、TypeScript列挙型のインライン化(collectTypeScriptInfo.exportedEnum)、型の再エクスポートチェックの3つの実験的機能が安定版に昇格し、対応フラグはdeprecatedになりました。Rsbuild 1.7はランタイムエラーオーバーレイ(dev.client.overlay.runtimeで有効化)とビルドごとのアセットサイズ差分レポート(performance.printFileSize.diff)を追加し、Rslib 0.19はESMライブラリ出力を安定化してプログラム的ビルド向けのJavaScript APIを導入します。プラグイン作者はビルド失敗を防ぐためにswc_core@54以降へのアップグレードが必要です。
renderのhydratable設定に追加されたcspオプション(svelte@5.46.0、PR #17338)で、Content Security Policyに対応した形で<head>に<script>ブロックをインラインで挿入します。CSPを厳格に適用するデプロイ環境での摩擦点を解消します。Svelte CLI(sv@0.11.0)はCloudflare WorkersおよびPages向けのSvelteKitプロジェクトを手動設定なしで完全に構築できるようになりました。Vercelアダプター(adapter-vercel@6.2.0 / adapter-auto@7.0.0)はNode 24ランタイムをサポートし、Svelte MCPサーバーはJavaScript APIとCLIの両方でツールを公開します(mcp@0.1.16)。language-toolsパッケージは今回のサイクルで大幅なパフォーマンス改善を受けており、エディター拡張機能のアップデートを推奨します。
<ButtonGroup>・<TabBar>・<RadioGroup>など)で真価を発揮しますが、動的なオプション一覧を扱う<Select>(propsベースのAPIの方が適切)やスロットの順序と完結性が重要な<ModalDialog>には向きません。TypeScript上の核心課題はJSXの子要素が親の型パラメーターを継承しない点で、完璧に型付けされたRadioGroup<ThemeValue>であっても各RadioGroupItemの子に型を自動伝播できず、手動アノテーションが漏れやすくなります。提案する解決策はcreateRadioGroup<T>()ファクトリー関数で、事前に型付けされた{ RadioGroup, RadioGroupItem }オブジェクトを返し、ジェネリックのデフォルトをneverにすることで呼び出し元に型引数の指定を強制します。ランタイムのオーバーヘッドはゼロですが、呼び出し箇所で親と子の型を結び付けアノテーションの負担を軽減します。トレードオフとして、コンシューマーはコンポーネントを直接インポートせずファクトリーを呼び出す必要があります。
Fabian(Coding2GO)は、React開発者が日常的に遭遇するものの、言語の基礎なしにReactを学ぶと混乱しやすいJavaScriptパターンを7つ解説します。オブジェクト(波括弧、プロパティ名の一致)と配列(角括弧、useStateの戻り値に使用)の分割代入、スプレッド演算子(...)による元の配列やオブジェクトを変更しない新規作成(不変なstate更新に必須)、そしてmap・filter・find・includesによるデータのUI変換と検索を取り上げます。三項演算子と論理&&演算子でインライン条件レンダリングを実現し、オプショナルチェイニング(?.)はnullになり得る値へのアクセス時のクラッシュを防ぎ、nullish合体演算子(??)はnull/undefinedの場合のみフォールバックを提供します。ESMのimport/exportは複数ファイルのコンポーネントアーキテクチャを繋ぎ、Promiseとasync/awaitが非同期データ取得を担います。
Marvin HagemeisterはUI反応性で使われるSignalsと、rust-analyzerなど現代LSPが採用するクエリベースのコンパイラアーキテクチャを構造的に比較します。両システムは遅延評価とキャッシュされた中間結果という同じ核心原則を共有しますが、変更の伝播モデルが決定的に異なります。Signalsはプッシュ-プルメカニズムを採用しており、ソース値が変わるとアクティブなサブスクリプションに沿ってダーティフラグを伝播し、Effectが新しい値をプルして画面を同期します。一方、クエリベースのコンパイラは外部から明示的に問い合わせるまで再実行されず、正確性はグローバルなリビジョンカウンターとノードごとのchanged_at / verified_atフィールドで担保されます。一方向の依存性追跡はメモリ消費を抑えてスケーラビリティを確保するもので、コンパイラグラフは10万ノードを超えることもあります。著者はViteのような増分開発サーバーに両アーキテクチャのハイブリッドが適しているかという開かれた問いで締めくくっています。

Fabian(Coding2GO)は、React開発者が日常的に遭遇するものの、言語の基礎なしにReactを学ぶと混乱しやすいJavaScriptパターンを7つ解説します。オブジェクト(波括弧、プロパティ名の一致)と配列(角括弧、useStateの戻り値に使用)の分割代入、スプレッド演算子(...)による元の配列やオブジェクトを変更しない新規作成(不変なstate更新に必須)、そしてmap・filter・find・includesによるデータのUI変換と検索を取り上げます。三項演算子と論理&&演算子でインライン条件レンダリングを実現し、オプショナルチェイニング(?.)はnullになり得る値へのアクセス時のクラッシュを防ぎ、nullish合体演算子(??)はnull/undefinedの場合のみフォールバックを提供します。ESMのimport/exportは複数ファイルのコンポーネントアーキテクチャを繋ぎ、Promiseとasync/awaitが非同期データ取得を担います。
React Native Rewindニュースレター(#25)は、Reactの新たな脆弱性を2件報告しています。高深刻度のサービス拒否(Denial of Service)と中深刻度のコード露出(Code Exposure)で、いずれもissue #24で取り上げたCritical Server ComponentsのCVEとは別物です。記事の中心はアルファ段階のReact Navigation 8.0で、ネイティブのボトムナビゲーターがデフォルトになり、JavaScriptベースのタブを使う場合は明示的な指定が必要です。この変更は主にiOSのLiquid Glassが背景にあります。useNavigation・useRoute・useNavigationStateフックが画面名から型を自動推論するようになり、従来の煩雑なTypeScript型注釈が不要になりました。新しいpushParams APIは画面遷移やスタックリセットなしにpropsを更新し、履歴に追記することで戻る操作で以前のパラメーターを復元します。NavigationContainerにはアプリ終了後もナビゲーター状態を復元するカスタム関数を定義できるpersistorプロパティが追加されました。
Node.jsコントリビューターのJoyee Cheungは、自身が復活させたrequire(esm)が実験的フラグから安定(stable)状態に至るまでの経緯を振り返ります。2025年末時点で、サポートされているすべてのLTSリリースライン(v20.19.0以降、v22.12.0以降)で利用可能です。技術的な核心制約はrequire()が同期的であり続けなければならないことで、トップレベルawaitを使うモジュールはこの方法でロードできません。2024年9月に上位5,000のnpmパッケージを分析した結果、このコンテキストでトップレベルawaitが不可欠なパッケージは~0.02%のみで、ESM専用パッケージの~20%が即座に恩恵を受けられることが判明しました。この機能がなければCommonJSが配布形式の最小公分母であり続け、パッケージ作成者はデュアルパッケージ(別々のモジュールインスタンスの危険を伴う)やfaux-ESM(ESMソースをdist/でCommonJSにトランスパイル)に頼らざるを得ませんでした。v20へのバックポートはオープンなリグレッションを避けるため、119コミットから33コミットに絞り込みました。EOL版Node.jsのサポートが不要になったパッケージ作成者は、CommonJS配布を完全に廃止しpackage.jsonのexportsフィールドを簡略化できます。
2025年12月31日にリリースされたRspack 1.7は、Rspack 2.0に向けた1.xシリーズ最後のマイナーリリースです。最大の改善点はSWC Wasm プラグインの互換性で、バージョンに依存するrkyvシリアライゼーションを自己記述型のcborに置き換え、AST列挙型にUnknownバリアントを追加することで、既存のプラグインが将来のSWCアップグレードを経ても大半は動作し続けます。Rspack CLIでは動的にインポートされるモジュールに対してレイジーコンパイルがデフォルト有効になり、初期モジュールグラフを削減して開発サーバーの起動を高速化します。定数インライン化(optimization.inlineExportsで制御)、TypeScript列挙型のインライン化(collectTypeScriptInfo.exportedEnum)、型の再エクスポートチェックの3つの実験的機能が安定版に昇格し、対応フラグはdeprecatedになりました。Rsbuild 1.7はランタイムエラーオーバーレイ(dev.client.overlay.runtimeで有効化)とビルドごとのアセットサイズ差分レポート(performance.printFileSize.diff)を追加し、Rslib 0.19はESMライブラリ出力を安定化してプログラム的ビルド向けのJavaScript APIを導入します。プラグイン作者はビルド失敗を防ぐためにswc_core@54以降へのアップグレードが必要です。
Dani Sandovalの2026年1月Svelte月次アップデートは、2025年12月に出荷されたエコシステムの変更をまとめています。開発者への影響が最も大きいのは、renderのhydratable設定に追加されたcspオプション(svelte@5.46.0、PR #17338)で、Content Security Policyに対応した形で<head>に<script>ブロックをインラインで挿入します。CSPを厳格に適用するデプロイ環境での摩擦点を解消します。Svelte CLI(sv@0.11.0)はCloudflare WorkersおよびPages向けのSvelteKitプロジェクトを手動設定なしで完全に構築できるようになりました。Vercelアダプター(adapter-vercel@6.2.0 / adapter-auto@7.0.0)はNode 24ランタイムをサポートし、Svelte MCPサーバーはJavaScript APIとCLIの両方でツールを公開します(mcp@0.1.16)。language-toolsパッケージは今回のサイクルで大幅なパフォーマンス改善を受けており、エディター拡張機能のアップデートを推奨します。
TkDodoの記事(デザインシステムシリーズ第3回)は、コンパウンドコンポーネントパターンが誤用されることが多いと指摘します。このパターンは子コンポーネントのレイアウトをユーザーが自由に制御する必要がある場合(<ButtonGroup>・<TabBar>・<RadioGroup>など)で真価を発揮しますが、動的なオプション一覧を扱う<Select>(propsベースのAPIの方が適切)やスロットの順序と完結性が重要な<ModalDialog>には向きません。TypeScript上の核心課題はJSXの子要素が親の型パラメーターを継承しない点で、完璧に型付けされたRadioGroup<ThemeValue>であっても各RadioGroupItemの子に型を自動伝播できず、手動アノテーションが漏れやすくなります。提案する解決策はcreateRadioGroup<T>()ファクトリー関数で、事前に型付けされた{ RadioGroup, RadioGroupItem }オブジェクトを返し、ジェネリックのデフォルトをneverにすることで呼び出し元に型引数の指定を強制します。ランタイムのオーバーヘッドはゼロですが、呼び出し箇所で親と子の型を結び付けアノテーションの負担を軽減します。トレードオフとして、コンシューマーはコンポーネントを直接インポートせずファクトリーを呼び出す必要があります。
2026年最初のISO週のJavaScriptエコシステムは、基礎を見つめ直す落ち着いた雰囲気で始まりました。注目すべきはMarvin Hagemeisterが年末年始に書き上げた考察で、UIレンダリングにおけるSignalsと、現代のLSPを支えるクエリベースコンパイラのアーキテクチャが、同じリアクティブな核の上に成り立っていることを示しています。無効化とメモ化における両者の設計判断の違いが特に示唆に富みます。
今週のプラットフォーム面のマイルストーンはNode.jsです。Joyee Cheungがrequire(esm)のstable化とすべてのサポート対象LTSラインでのフラグ解除を報告し、10年来のESM/CJS相互運用の課題に区切りを付けました。ツール側も続きます。Rspack 1.7は2.0を見据えてSWC Wasmプラグイン互換性を安定化させた、1.x系最後のマイナーリリースです。
ただし祝福ばかりではありません。React Native Rewindは、12月のRSCアドバイザリとは別の新たなReact脆弱性2件(高深刻度のDoSと中深刻度のコード漏えい)を報告しています。React採用チームは休暇明け前に必ず確認すべき項目です。Svelteの1月アップデート、TkDodoの型安全なCompound Components、React前提のJavaScript復習動画が、静かながら中身の濃い一週間を締めくくります。