Ref callbackとcleanup functions
Ref callback、React v19で追加されたクリーンアップ関数、useEffectとの違いについて。また特にクリーンアップ関数を使ったRef callbackの実装例。
入力して検索を開始
37 posts
Ref callback、React v19で追加されたクリーンアップ関数、useEffectとの違いについて。また特にクリーンアップ関数を使ったRef callbackの実装例。
React v19ではグローバルなJSX名前空間が削除されたため、これを利用している場合に型の変更が必要になる。
個人的には出来る限りスコープ外の関数としてコンポーネントを切り出すべきだと考えている。パフォーマンス、コードとしての質、将来性の観点から説明を行った
React v19でstyleタグと@scopeを使って、いくつかのCSS-in-JSライブラリのようにclassNameを指定せずにスタイルのカプセル化が出来るのかを検証した。
React Routerを利用している環境で、一度エラーが表示された後に、パスパラメーターが異なるURLに遷移しても、ErrorBoundaryによって表示されたエラーが画面から消えないと相談を受けた。その理由と対応策について書いた。
公式ドキュメントを十分に読んでいないと理解が難しいと思われるParallel routesが404になる理由やdefault.jsの意味について、タブの実装を例に書いた。
React公式ドキュメントを見ながらReact 19の新機能を見る会を主催した際のメモです。多くは最低限このくらいの理解はしておいた方がいいという内容を事前に羅列しておいたものですが、一部その場で話題になった内容も含まれています。
ESLintで特定のpropsを禁止にしたい場合の設定方法について説明する。
ESLintで特定の要素の利用を禁止したい場合の設定方法について説明する。
ESLint v9がリリースされたが、ESLint pluginのESLint v9対応が出来ていないpluginが複数あり、その対応状況を調査した。
Propsから受け取ったrefを内部的なrefとマージする方法を紹介する。
refが取れないので非制御コンポーネントに出来ないという相談を受けたので、非制御コンポーネントとrefの関係について説明した
useRefでステートを管理する是非について質問を受けたので、個人的な意見をまとめた。
useEventの後継として提案されているuseEffectEventについてのメモ。
data-属性やaria-属性などは、型定義がJSXに含まれていなくても型エラーになりません。この理由や型エラーになるケースについて紹介します。
ReactコンポーネントをJSX形式ではなく、ただの関数として呼ぶとバグの原因になる場合がある。これが原因のバグの相談を度々受けるので、問題になる例と対策をまとめた。
React v18.2.0時点ではexperimentalなuseFormStatusを利用すると、重複送信を防ぐボタンを簡単に実装できる。
reactwg/server-componentsのDiscussionsで公開された`Why do Client Components get SSR'd to HTML? `のRSCの説明が分かりやすい。
React Router v6に移行する際に気を付けるべき点や、移行時に受けた質問をまとめました。
ReactのRouterライブラリなどでパスの書き間違いを防ぎたいと聞かれたので、いくつかの方法を提示した際のメモ。
ページにフォーカスを戻すと入力要素に入力していた内容が吹き飛ぶ場合があるという相談を受けたため、その調査と対応についてまとめた。
Playwrightを利用したE2Eテストで稀に要素が取得できなくなり失敗すると相談を受けた際の対応についてまとめた。
Reactの状態管理ライブラリであるJotai、Recoil、Redux、Zustandについて比較した雑感。
React Router v6でパスパラメータが変更された際も再レンダリングをトリガーする方法を紹介する。
Prism.jsを利用していると対応言語に書かれているがハイライトされない言語がいくつかあった。これはprism-react-rendererからprismjs本来の機能を使うように移行した際のメモです。
Reactのイベント型について書いた。React.MouseEvent、React.ChangeEvent、React.SyntheticEvent、NativeのEvent型、React.XXXEventHandlerなどについて、どれを使うべきか。
ReactのFunction Componentの型は、歴史的な理由などにより様々な記述ができる。React.FunctionComponent、React.FC、React.VFC、(props: SomeComponentProps): JSX.Elementなどがある。
Reactのpropsをunion typeにする方法をいくつか紹介する。ただし、これらの利用やそもそもunion typeをpropsに使うこと自体が適切かどうかは慎重に検討する必要がある。
ReactとTypeScriptでHTML属性を拡張する方法について書いた。React.ComponentPropsWithoutRefやReact.ComponentPropsWithRef、React.ComponentProps、JSX.IntrinsicElements、React.DetailedHTMLProps、React.ButtonHTMLAttributes、React.HTMLProps、React.AllHTMLAttributes、React.HTMLAttributesなど。
Fire-and-forgetパターンつまりuseEffectOnceのようなコードをuseEventでどのように置き換えられるか
会社にて、ほとんどのサービスのReactのバージョンをアップグレードするイベントを開催した際のQ&Aなどをまとめました。
要素を返す前にstateを更新すると何が起きるかのクイズ。
リリースされたばかりのReact Router V6のOutletを使って、ページコンポーネントを遅延読み込みするいい感じの方法を考えた。
CSS-in-JSのstyledとcss propの記法について、styled-componentsの作者であるGlen Maddern氏による説明のメモ。
React-Routerでリダイレクトさせる際にreplaceさせないと、リダイレクトされるページの前にいたページに戻れなくなるのは当たり前だと思うが、質問があったのでまとめた。
ReactにおいてgetElementByIdやquerySelectorを避けた方が良い理由の説明。
useEffectのdepsに依存関係を入れる理由について解説する。
Vercel Labs は、コアを Zig で実装し WASM へコンパイルした Web 向けターミナルエミュレータ wterm を公開した。DOM へ描画し、ブラウザ標準の選択・コピー・検索やスクリーンリーダー連携を活かす構成である。
TanStack Start が React Server Components をサーバー所有のツリー前提にせず、取得・キャッシュ・デコード可能な Flight ストリームとして扱う方針と Composite Components を公式ブログで説明した。
Material UI 9.0 がリリースされ、Base UI ベースの NumberField と Menubar が追加され、アクセシビリティ既定・キーボード操作・テーマの CSS 変数まわりが強化された。非推奨 API の削除など破壊的変更を伴い、v7 からの移行ガイドが用意されている。
ブランドアイコン全削除、aria-hidden既定化、UMD廃止とESM・CJSのみ、lucide-reactのバンドル縮小、lucide-vue-nextの@lucide/vueへのリネーム、@lucide/angular追加、React・Vue・Svelte・Solidのコンテキストプロバイダ、フォントのコードポイント固定、lucideパッケージのshadow DOM対応。
Storybook 10.3以上のReact向け@storybook/addon-mcp、ローカルMCP URL登録、compositionによる複数Storybookの入力統合、ChromaticでのリモートMCP公開、MCP Apps経由のライブストーリー埋め込み、コンポーネント/アクセシビリティテスト実行ツール。Reshapedライブラリでの生成UI比較数値。他フレームワーク向けは年内予定。
Linux Foundation傘下の独立財団として正式にローンチ。初期メンバー8社の決定やプロジェクト管理の移行など。
WebGPUを活用したオープンソースのチャートライブラリ。100万点を超えるデータセットの60fpsレンダリングを実現。
Vercelが10年以上にわたるReactとNext.jsの最適化ノウハウをまとめたreact-best-practicesリポジトリを公開した。 8つのカテゴリー(ウォーターフォールの排除、バンドルサイズの削減など)にわたり、40以上のルールがCRITICALからLOWの重要度とともに提供されている。AIエージェント向けのスキルとしても提供されており、npx add-skill vercel-labs/agent-skillsで導入できる。 ### 参考文献
React Server Componentsの動作を視覚的にデモするためのツール「RSC Explorer」が公開。ServerとClientの通信を可視化。
Next.js 16.1がリリースされた。Turbopackファイルシステムキャッシュの安定化とツール改善が中心。
React Server Componentsの重大な脆弱性「React2Shell」(CVE-2025-55182)が公開された。CVSSスコアは10.0(Critical)。Next.jsではCVE-2025-66478として識別される。特定の条件下で、細工されたリクエストによりリモートコード実行が可能になる。
ReactとReact NativeがMetaからReact Foundationに移管される。Linux Foundation傘下の新しい組織で、Amazon、Callstack、Expo、Meta、Microsoft、Software Mansion、Vercelが創設企業メンバー。
React 19.2がリリース。コンポーネント、useEffectEventフック、cacheSignal、Performance Tracks、Partial Pre-renderingなど新機能を追加。
TanStack QueryのためのクライアントサイドデータベースTanStack DB 0.1がリリース。従来のReactアプリの状態変更が引き起こす大量の再レンダリング、フィルター処理、useMemo実行、スピナー点滅の問題について、開発者がView固有API(高速レンダリング、API乱立)か全データ読み込み後フィルター(シンプルバックエンド、低速クライアント)の二択を迫られる状況に対し、Differential dataflowによる第三の選択肢を提供。10万件ソート済みコレクションの1行更新を0.7msで処理し、正規化されたコレクションから増分結合をミリ秒レベルで実現。既存のuseQuery呼び出しをラップして段階的導入が可能。恐らくSPAアプリケーションで恩恵が大きい。 ### 参考文献
React Compilerの段階的導入ガイドが公式ドキュメントに追加。全コードベースを一度に最適化する必要がなく、小さな部分でテストしてから拡張する戦略を詳細に解説。Babel overridesによるディレクトリベース導入、"use memo"ディレクティブによるコンポーネント単位の制御、runtime gatingによるフィーチャーフラグ制御の3つのアプローチを提供。本番アプリケーションでの安定性確保、Rules of React違反の段階的修正、A/Bテストによる影響測定が可能になり、企業での実用的な採用パスを明確化。 ### 参考文献
React Labs が新しい実験的機能と開発中の機能についての最新情報を公開。View Transitions と Activity の 2 つの実験的機能が試用可能になり、その他の開発中機能の進捗も報告された。
React Compiler のリリース候補(RC)が公開。自動メモ化によるパフォーマンス最適化をビルド時に実現。optional chain や配列インデックス依存の最適化、ref-in-render 検証のデフォルト無効化、swc 対応の強化、Next.js 15.3.1 以降でのビルド高速化など。ESLint 用のルールはeslint-plugin-react-hooksに統合。 ### 参考文献
Next.js 15.3 がリリースされた。Turbopack の next build でのサポート。実験的な機能として Rspack のサポート。Client Instrumentation hook と Navigation hooks を追加。TypeScript plugin の改善により大規模な codebase でのサポートを向上など。
Material UI v7 が正式にリリースされました。
React 19.1.0 がリリース。
styled-components のコアメンテナーである quantizor 氏が、プロジェクトをメンテナンスモードに移行することを発表しました。
ByteDance が React/CSS を使って iOS/Android/Web アプリを開発できるツールキット Lynx を公開。
State of React 2024 が公開。
React Router v7.2.0 がリリース。
CRA(Create React App)が公式に非推奨となった。 Next.js や React Router などのフレームワークや、Vite や RSBuild などのビルドツールへの移行を推奨している。
React Compiler の Rust 実装が削除された。JavaScript に賭けるとのこと。
React v19 互換の react-redux v9.2.0 がリリースされた。
SWR が 10 ヶ月ぶりにアップデートされ、v2.3.0 がリリースされた。
Next.js 15.1 がリリースされた。
React v19 がリリースされた。
Million Lint の開発している React Scan が話題になっていた。
React のアニメーションライブラリである Framer Motion は、今後 Framor から独立して開発される。
React Router v7 リリース。 Remix の機能を統合し、React 18 と 19 の架け橋となるバージョン。
lucide アイコンに Framer Motion で動きを付けた React 用のアイコンセット。
React Compiler がベータリリースされた。
Vercel による React v19 の新機能について知っておいた方が良さそうなものを説明する記事が公開された。
pnpm v9.5 がリリースされました。
Suspense の仕様変更について議論を受けて、良い修正は見つかるまで React v19 のリリースを延期する予定であるという発言が React コアチームメンバーからありました。
公式による React Conf 2024 の振り返り。
Remix による React Conf のフォローアップ記事。
React Compiler が OSS として公開されました。Babel plugin として現状提供されており、IR/SSR への変換などは Rust で実装されています。
React Conf 2024 が 5 月 15 日から 16 日に掛けて開催されました。アーカイブを YouTube で確認することが出来ます。
2024 年 4 月 25 日、React v19 Beta の公開に合わせて、React v18.3 も公開されました。
色々なページが翻訳されている。
そもそも SWR の suspense 機能は experimental だが、React と SWR の開発者はデータフェッチングに Suspense を利用することを非推奨にしている。
testing-library を使った React の Flaky テストが発生する一般的なパターンと、その一般的な調査方法。
Flow v0.233.0 で、React 用の component と hook 構文が追加された。これらを function の代わりに利用することで、ref のベストプラクティスの強制や、props が深い読み取り専用であることの確認や、Hooks が React のプログラミングモデルに則しているが確認される。
useFormState の扱うアクションはそもそも form に関連しておらず、これが useFormStatus のように pending を返す場合、名前に反して form に紐づいた状態を返さない問題などがあった。また react-dom ではなく react から export するようになり、react native などでも利用できるようになった。
2024 年 3 月 11 日に、Storybook 8 がリリースされました。
Meta が React Strict DOM(RSD)を公開しました。これは Web およびネイティブ用のスタイル付き React コンポーネントの開発の改善および標準化を目的とした React DOM と StyleX の実験的な統合とのことです。
2024 年 2 月 15 日の React の記事にて、React Forget として知られていた React Compiler について触れられていました。React Compiler は既に Instagram の本番環境で動作しているそうです。
2023 年 12 月 4 日に Redux 5.0、Redux Toolkit 2.0、React Redux 9.0、Reselect 5.0 など Redux 関連パッケージのメジャーリリースが行われました。
https://vercel.com/blog/announcing-v0-generative-ui
https://www.reddit.com/r/reactjs/comments/16nnh4z/comment/k1jbr4t/
Vercel が、プロンプトから shadcn/ui と Tailwind CSS を利用した React のコードが生成する AI ツールをリリースしました。 ### 参考文献
Storybook 7.1 がリリース。Storybook は 7.0 以降小さいサイズでリリースを行なっていく方針とのことです。
Reactがカナリアリリースを導入。Experimentalチャネルとは異なり、採用の準備が整っている機能のみが含まれる。
App Routerが安定版になり、デフォルトのドキュメントに採用された。また、実験的機能としてServer Actions (alpha)が追加された。
Hooksデフォルトの新しいドキュメントサイトがリリース。豊富なサンプルや詳細な解説を追加。