本文へスキップ

React 19.3公開、View TransitionsとFragment Refsが安定版に

React 19.3が2026年9月9日にリリースされました。View Transitions(ビュートランジション)とFragment Refsが安定版になり、このリリースに破壊的変更はありません。

著者

3 分で読めます

英語の原文から機械翻訳したものです。原文はClaire Whitmoreが事実確認と編集を行いました。内容に相違がある場合は英語版が優先されます。 編集方針

react.devに掲載されたReact 19.3のリリース記事。View Transitionsのセクションを開いた状態。

数字で見る

pull requests behind the View Transitions work
47
pull requests behind Fragment Refs
26
contributors to the release
52

React 19.3が公開されました。Reactチームは2026年9月9日にリリースを公開し、長らく実験的だった二つの機能を安定版に昇格させました。View TransitionsとFragment Refsです。GitHubのリリースノートは52人のコントリビューターを挙げており、View Transitionsだけで47件、Fragment Refsで26件のプルリクエストが背後にあります。

破壊的変更はありません。ここにある機能はどれも、使うかどうかを自分で選ぶものです。

View Transitionsと、実際に発火する条件

新しい<ViewTransition>コンポーネントは、要素が出現、退出、移動、あるいはサイズ変更する際にアニメーションさせます。JavaScriptでアニメーションするのではなく、ブラウザのView Transition APIを通じて行います。

人がつまずくルールは、どの更新がアニメーションするかです。Reactのドキュメントは明確です。「Transitionとしてマークされていない更新は、緊急のものとしてUIに即座に反映されることを意図しているため、アニメーションを引き起こしません」。アニメーションを起こすものは三つあります。startTransition内のstate更新、Suspenseによる表示、useDeferredValueからの更新です。

つまり、コンポーネントを<ViewTransition>で包んでから普通にsetStateを呼んでも、アニメーションはまったく起きません。それは意図された動作であり、バグではありません。何も動かないときに最初に確認すべき点です。

This Week In Reactは、付随するAPIであるaddTransitionTypeに触れています。これを使うと「アニメーションを、それを引き起こすコードから直接カスタマイズ」できます。同じコンポーネントでも、変更の原因によって異なるアニメーションが必要になることが多いため、これは重要です。

プラットフォーム上の制限の一つを、Reactチームは率直に述べています。「現在、<ViewTransition>はDOMでのみ動作します。React Nativeやその他のプラットフォームへの対応に取り組んでいます」。

Fragment Refsはラッパーのdivをなくす

Fragment Refsを使うと、<Fragment>にrefを付け、その中にあるDOMノードの集まりを一つの単位として操作できます。

これが解決する問題はおなじみのものです。複数の兄弟要素へのハンドルが必要なとき、通常はrefを付けるためのラッパーの<div>を追加します。そのラッパーが、周囲のスタイリングやレイアウトに干渉します。GridやFlexの子要素がよくある犠牲者です。

GitHubのリリースノートはこの変更を、「コンポーザブルなプラットフォーム動作をサポートするための<Fragment />へのRef」の追加と説明しています。This Week In Reactはその成果を、「これまで困難だった新しいコンポジションパターン」を解き放つものと位置づけています。実用的な用途は、グループ全体でのイベントリスニングとフォーカス管理です。

小さな変更

変更内容
独立したTransitionTransitionは「単一のレンダーに絡め取られるのではなく独立してレンダーされるため、遅いTransitionが無関係なTransitionを足止めすることはなくなる」
react-domのbrowser()「サーバーレンダリング中はエラーになり、ブラウザで解決されるusable」を返し、Suspenseを発生させることでサブツリーをサーバーレンダリングの対象外にする
Trusted TypesのサポートTrusted Typesを要求するContent-Security-Policyと連携できるようにし、DOMベースのXSSを防ぐ
Server ComponentsでのContext<Context>を'use client'モジュールから直接レンダーでき、別途プロバイダーのラッパーコンポーネントを用意する必要がない

use(browser())はuseの通常のルールに従います。Reactのドキュメントによれば、「条件文の中や早期returnの後でも呼び出せる」とあり、これは珍しく、そして意図的なものです。

開発者にとっての意味

アニメーションのためではなく、リリース自体の価値でアップグレードしてください。破壊的変更がないため、19.3はごく普通のバージョンアップであり、二つの目玉機能は追加的なものです。

View Transitionsを採用するなら、CSSではなくTransitionのルールに時間を割いてください。初期採用で生じる混乱の大半は、Transitionとしてマークされなかったために静かにアニメーションしない更新から来るでしょう。何かを包む前に、state更新が実際にどこにあるのかを点検してください。

ブラウザ対応の前提も確認してください。これはReact独自の実装ではなくブラウザAPIに依存しているので、下限はユーザーのブラウザが備えているものになります。Chromeが2週間ごとのリリースサイクルに移行した今、その下限は以前より速く動いていますが、アニメーションを保証と見なすことは依然としてできません。アニメーションなしへと劣化する拡張として扱ってください。

Fragment Refsは、静かに効果を発揮する可能性が最も高い変更です。コードベースに、refを持つためだけに存在するラッパーの<div>があるなら、その一つひとつが削除の候補です。それらを取り除けば、レイアウトとは無関係だったレイアウト用の回避策も片付きます。

React Nativeのチームは、今回のリリースの目玉機能から何も得られません。View Transitionsは現時点でDOM専用であり、Reactチームは日程を示さずに他のプラットフォームへの対応を約束しています。

出典

  1. React 19.3 - React
  2. Release 19.3.0 - GitHub
  3. This Week In React #296 - This Week In React

関連記事

木の机の上に置かれた閉じた銀色のノートパソコン。天板にはNode.js、Python、Bunのロゴステッカーが貼られ、横に黒いキーボード、観葉植物、コーヒーカップがあります。
プログラミング

HTTP2Shell:Brotliの脆弱性がPython、Bun、Envoyにも波及

Brotliデコーダーの脆弱性CVE-2026-111497は、HTTP2Shellと呼ばれるようになりました。深刻度スコアは9.2で、Pythonのrequestsやhttpxを支えるパッケージ、Bun、Envoy、Istioにも及びます。

HFS 3.2.1のGitHubリリースページ。7月13日にリリースされたもので、セキュリティ修正についてHorizon3.aiのZach Hanley氏とAnthropic Researchの貢献が記されています。
プログラミング

Rejetto HFS CVE-2026-61500、解説公開の翌日に悪用が始まる

HFS(HTTPファイルサーバー)3.0.0から3.2.0は、ログインの署名にMath.random()を使っています。AnthropicのMythosが見つけた欠陥です。攻撃は解説公開の翌日、10月3日に始まりました。3.2.1で修正されています。

GitHub Copilotのチャット欄でモデル選択メニューを開き、Copilot Fusionをオンにして、Standard、High、MaxのうちMaxのエフォートレベルを選んだ画面。
開発ツール

Tools This Week:2026年10月30日 - Copilot Fusion、Node.js 27

今週の開発者ツール5本を紹介します。GitHub Copilot Fusion(フュージョン)、Mistral Large 4のオープンウェイト、Android Studio Rabbit 2、OpenSSL 4.1.0、最初のNode.js 27アルファ版です。