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 18, 2026
Technology
10k
20
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React 19時代のコンポーネント設計ベストプラクティス
2026-02-18 React 19、コンポーネント設計どう変わった?〜うひょさんに聞く最新 実務Tips〜
uhyo
February 18, 2026
More Decks by uhyo
See All by uhyo
型があると何が嬉しいか
uhyo
2
47
Baseline対応のDOMの型定義を作った
uhyo
3
800
AIのReact習熟度を測る
uhyo
2
880
React、まだ楽しくて草
uhyo
7
4.8k
TypeScript 7.0の現在地と備え方
uhyo
6
3.6k
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
uhyo
1
100
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
3
1.1k
ECMAScript仕様の最新動向: プロセスの変化と仕様のトレンド
uhyo
3
930
TypeScript 6.0で非推奨化されるオプションたち
uhyo
18
8.4k
Other Decks in Technology
See All in Technology
人依存からAIネイティブの体制へ:バックエンド開発の裏側【SORACOM Discovery 2026】
soracom
PRO
0
130
システム監視入門
grimoh
5
750
GMOフィナンシャルゲートが挑む、「止まらない」決済インフラ構築の裏側【SORACOM Discovery 2026】
soracom
PRO
0
110
コンポーネント名には何を含めるべきなのか? / what-should-be-included-in-component-names
airrnot1106
0
180
NetBoxを利用した作業効率化の試み_NetDevNight4
tnoha
0
350
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
440
データ活用研修 データマネジメント【MIXI 26新卒技術研修】
mixi_engineers
PRO
4
780
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
0
220
データベース研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
670
VPCセキュリティ対応の最新事情
nagisa53
1
350
AI工学特論: MLOps・継続的評価
asei
11
3k
13年運用タイトルのサーバーサイドが辿り着いた現在地 ― モンスターストライクにおける技術・組織・AI活用から得た知見
mixi_engineers
PRO
1
320
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
620
sira's awesome portfolio website redesign presentation
elsirapls
0
310
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
610
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
370
We Are The Robots
honzajavorek
0
290
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
310
Deep Space Network (abreviated)
tonyrice
0
240
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
400
Transcript
React 19時代のコンポーネント 設計ベストプラクティス 2026-02-18 React 19、コンポーネント設計どう変わった?〜うひょさんに聞く最新 実務Tips〜
発表者紹介 uhyo 株式会社カオナビ フロントエンドエキスパート 最近はReact向けのOSSを 開発するのが趣味。 2
本日のテーマ React 19がリリースされてもう1年以上。 現在のReactベストプラクティスは何なのか? 最新のReact事情はどうなっているのか? できる限りお伝えします。 3
導入 — なぜReactを使うのか
なぜReactを使うのか •フロントエンドのデファクトだから? •得意だから? •宣言的UIだから? 5
なぜReactを使うのか どんなライブラリでも、使うにあたって 明確な目的意識があるのが望ましい。 ひとつは、宣言的UI。 6
なぜReactを使うのか でも、宣言的UIライブラリも色々ある。 7
なぜReactを使うのか Reactに顕著な特徴は、 より良いUXのための、 高度に最適化されたスケジューリングにある。 (実DOM直結ではなく仮想DOMなのも、単なる歴史的経緯では なくそれを活かした機構になっている) 8
Async Reactとは
Async Reactとは React Conf 2025で、React開発メンバーによって Async Reactという講演が行われた。 10 ↓おすすめ記事紹介 https://www.youtube.com/watch?v=B_2E96URooA
Async Reactとは 非同期処理があることを前提にアプリケーション を実装し、最適なUXを目指す考え方。 React 19にはすでに、Async ReactのためのAPIが いくつも存在している。 11
例 ボタンを押したら、API呼び出しが返ってくる まで画面が変化しない…… useOptimisticによる楽観的更新でUX向上! 12
例 ページネーションで、次のページに移動したときに Suspenseフォールバックが一瞬見えてしまう…… トランジションで読み込み中の表示を改善して ちらつきを防止! 13
例 画面が切り替わったときに色々な要素が移動して、 何がどう変わったのか分かりにくい…… ViewTransitionで適切なアニメーションを入れる ことで分かりやすさを向上! (まだ安定版には含まれていません) 14
Async Reactの現状 このように、Async Resultの考え方を取り入れた 優れたUXを実現するためのAPIはすでに結構ある。 ReactチームはAsync Reactワーキンググループ を立ち上げ、Async Resultの普及を目指す。 15
Async Reactの普及 ①エコシステムのライブラリにAsync React対応 を組み込む 自慢: 自作ルーティングライブラリ FUNSTACK Routerにはトランジション を組み込みAsync
React対応しました! 16
Async Reactの普及 ② Async Reactの概念の教育・普及を促進する 今やってるこのトークも、Async Reactの普及に 貢献したいという意図を込めてやっています。 17
要するに…… 18
React 19時代のベストプラクティス Async Reactの考え方を取り入れること がベストプラクティスである といっても過言ではない。 19
React 19時代のベストプラクティス Async React用のAPIをただ使うだけではない。 汎用化し、個別の対応をせずとも 最適化されたUXを提供できること がゴールとなる。 20
具体例 21
最初の一歩: 全てをトランジションにする React 18でトランジション(useTransition)が 導入されたときから、 一部の例外を除き、全てのステート更新は トランジションであることが望ましい というのがReactチームの考えである。 22
最初の一歩: 全てをトランジションにする // 普通のステート更新はトランジションではない setFoo(123); // オプトインしてトランジションにする startTransition(() => {
setFoo(123); }); 23
トランジションの汎用化 しかし、全てのステート更新にstartTransitionを 付けて回るのは面倒くさい。汎用化すべき。 方法としては…… ①ステート管理ライブラリに組み込む ②汎用コンポーネントに組み込む ←今日はこれを紹介 24
汎用ボタンコンポーネント 従来のコンポーネント: const MyButton: FC<ButtonProps> = ({ onClick, children })
=> <button className=“…” onClick={onClick}> {children} </button>; 25
汎用ボタンコンポーネント トランジション組み込み済のコンポーネント: const MyButton: FC<ButtonProps> = ({ action, children })
=> <button className=“…” onClick={(event) => { startTransition(() => { action(event); }); }}> {children} </button>; 26
汎用ボタンコンポーネント 汎用ボタンコンポーネントにトランジションを 組み込むことで、そのボタンを介するステート 更新は自動的にトランジションになる。 これがAsync Result流! 27
汎用ボタンコンポーネント isPendingを使うのもおしゃれ。コンポーネントの責務を しっかり切りつつアプリ全体と調和するUXになる。 const [isPending, startTransition] = useTransition(); return (<button
className={…} onClick={(event) => { startTransition(() => { action(event); }); }}> {children} </button>); 28
どのように設計すべきか 29
Suspenseはもはや前提条件 Async Reactという以上、非同期処理を Reactランタイムが知らないといけない。 そのための基礎であるSuspenseは、 もはや全ての前提であり必須。 30
Suspenseはもはや前提条件 SuspenseはSuspenseバウンダリを作る。 つまり、Suspenseの中と外を区切る役目を持つ。 アプリケーション内にどのようにSuspenseを配置し、 境界を引くのか考えることがアプリケーション設計に おいて重要。 31
Suspenseはオプトアウトの手段でもある トランジションのデフォルトの挙動をオプトアウト することも、 Suspenseバウンダリの配置の仕方によって可能と なる。 これに詳しく載っています(宣伝)→ 32
トランジションを意味づける useOptimisticやuseActionStateといったAPIを 使いこなすためには、トランジションの設計が重要。 「このトランジションは何を意味していて、いつから いつまで続くのか」を設計する。 33
つまり……宣言的UI Async Reactの理想は、トランジションの「意味」を プログラマーが考えて、具体的な挙動はReactが よしなにやってくれること。 これって、宣言的UIでは? 34
まとめ 35
まとめ Reactは宣言的UIのライブラリだから、 宣言的UIの考え方で使いましょう。 Async Reactにより、従来よりも広い範囲で 宣言的UIの考え方を適用できるようになった。 React本体と、エコシステムが向いている方向 に合わせていきたい。 36