Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
React 19アップデートのために必要なこと
Search
uhyo
February 25, 2025
Programming
8
2.8k
React 19アップデートのために必要なこと
2025-02-25うひょさん×Takepepeさんが語る! React19 アプデによるフロントエンド開発の今後とは
uhyo
February 25, 2025
Tweet
Share
More Decks by uhyo
See All by uhyo
AI時代、“平均値”ではいられない
uhyo
8
2.6k
意外と難しいGraphQLのスカラー型
uhyo
5
810
RSCの時代にReactとフレームワークの境界を探る
uhyo
13
4.2k
知られざるprops命名の慣習 アクション編
uhyo
12
3.2k
libsyncrpcってなに?
uhyo
0
700
Next.jsと状態管理のプラクティス
uhyo
7
15k
10ヶ月かけてstyled-components v4からv5にアップデートした話
uhyo
5
660
更新系と状態
uhyo
9
3.8k
color-scheme: light dark; を完全に理解する
uhyo
8
740
Other Decks in Programming
See All in Programming
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
300
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
260
AkarengaLT vol.38
hashimoto_kei
1
120
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
630
技術的負債の正体を知って向き合う
irof
0
260
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
980
Claude Agent SDK を使ってみよう
hyshu
0
1.4k
contribution to astral-sh/uv
shunsock
0
540
Devvox Belgium - Agentic AI Patterns
kdubois
1
150
Claude CodeによるAI駆動開発の実践 〜そこから見えてきたこれからのプログラミング〜
iriikeita
0
340
Foundation Modelsを実装日本語学習アプリを作ってみた!
hypebeans
1
130
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
410
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Documentation Writing (for coders)
carmenintech
75
5.1k
Mobile First: as difficult as doing things right
swwweet
225
10k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Git: the NoSQL Database
bkeepers
PRO
431
66k
How GitHub (no longer) Works
holman
315
140k
Typedesign – Prime Four
hannesfritz
42
2.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
353
21k
Speed Design
sergeychernyshev
32
1.2k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Transcript
React 19アップデートのために 必要なこと 2025-02-25うひょさん×Takepepeさんが語る! React19 アプデによるフロントエンド開発の今後とは
発表者紹介 uhyo 株式会社カオナビ フロントエンドエキスパート 業務でもReactのバージョンを上げるため に日々頑張っている。 2
これまでのあらすじ 2024年4月 React 19 Betaリリース 2024年5月 React 19 RC リリース
その後紆余曲折があり 2024年12月 React 19 正式版リリース! 皆さんはもうバージョン上げましたか? 3
過去のイベント・記事 4
今回のイベントでは React 19も正式版が出たということで、 そろそろアップデートについて考えたい。 アップデートは大変? 破壊的変更は? エコシステムはどうなる? など…… 5
This Talk まずはReact 19へのアップデートに必要なことを 振り返ります 6
React 19アップデートに 向けてすべきこと 7
①公式のアップグレードガイドを読もう https://react.dev/blog/2024/04/25/react-19-upgrade-guide 8
React 19の破壊的変更 React 19の破壊的変更は、古いAPIの削除が主。 React 19で消えるAPIは意外と色々ある。 React v15~18の間にdeprecatedになったAPIたち がついに引退。 9
②React 18.3に上げてみる まだ上げていない人は、一旦18.3に上げてみよう。 React 19で消えるAPIに対するwarningが追加。 アプデ前に対応すべきものを検知できる。 10
React 19で消えるAPI列挙 propTypes / defaultProps※ Legacy Context string refs Module
pattern factories createFactory ReactDOM.render / ReactDOM.hydrate ReactDOM.unmountComponentAtNode 11
React 19で消えるAPI列挙 propTypes / defaultProps※ Legacy Context string refs Module
pattern factories createFactory ReactDOM.render / ReactDOM.hydrate ReactDOM.unmountComponentAtNode 12 古い書き方 (クラスコンポーネント向けなど) Concurrent Rendering
ReactDOMのrender/hydrateに注意 React 18へのアップデートの一環で、 renderからcreateRootへの移行が推奨されていた。 (Upgrade Guideから引用) 13
ReactDOMのrender/hydrateに注意 React 18にアプデしたけどまだcreateRootにして いなかった人は、まずこちらを移行しよう。 (React 18時点でwarningになっているので多分移行しているはずだが) createRootを使うことでConcurrent Renderingが 有効になるため、ごくわずかだが挙動が変わる リスクがある。(変なReactの使い方をしていた場合など)
14
③依存ライブラリをチェック 歴史あるライブラリを使っていた場合、 先にアップデートしておいたほうがいい。 (クラスコンポーネントを中心に古いAPIが消えるため) もしメンテが止まっていたらさよなら。 15
余談: internalsのやつ SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ↓改名された↓ __CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE __SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE ライブラリがこれを使っていた場合、ライブラリ作者ではなく ユーザーが解雇されてしまうバグがReact 19で修正された。 RecoilがこれのせいでReact
19対応できなかったのは有名。 16
React 19アップデートで大変 なのは? 17
TypeScript周りが一番大変 古いAPIが消えても今どきのプロジェクトは 別に困らないが、TypeScriptの破壊的変更は 結構たいへん。 18
ランタイムの修正が必要な点 ランタイムの修正で対処すべき場合も。 「あらゆるランタイムの修正は動作確認が必要」 みたいな社内文化だと地獄を見るので、 まず社内文化を修正しよう。 19
習慣を直す必要がある点 MutableRef → RefObjectに吸収されてdeprecatedに JSX.Element → React.JSX.Element が推奨 React.VFC →
役目を終えた。 React.FC にする 他にもReact.ReactChildなどdeprecatedになった 型が存在。 20
アップデートのやり方は? 21
TypeScriptとワーニングを駆使する 修正が必要な箇所は大体tscで検知できるはず。 ただし、依存ライブラリ内は無理なので、 そこはReact 18.3のワーニングを活用しよう。 22
codemod 古いAPIなど用にcodemodがあるが、 無理に使わなくてもいい。(修正必要な箇所が少ない) 一方、TypeScript関連の修正をしてくれる types-react-codemodは有用。 とりあえずtscを動かしてみて型エラーが 多かったら使ってみよう。 23
新たなdeprecatedの対処 React 19で新たにdeprecatedになったものは 今すぐ直す必要はないが、お好みで直してもいい。 (codemodもある) 将来に向けて新たに使用しないように 習慣を更新することが重要。 • forwardRefが不要になった •
<Context.Provider> → <Context> など 24
まとめ React 19にアップデートするには、 依存ライブラリをよく確認しつつ、 TypeScriptで変更が必要な箇所を洗い出して、 types-react-codemodを活用して修正しよう。 古いコーディング習慣をReact 19対応に 更新することも忘れずに。 25