Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
React 19時代のコンポーネント設計ベストプラクティス
Search
uhyo
February 18, 2026
Technology
11k
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
Reactの設計論
uhyo
25
15k
型があると何が嬉しいか
uhyo
3
150
Baseline対応のDOMの型定義を作った
uhyo
3
970
AIのReact習熟度を測る
uhyo
2
1.1k
React、まだ楽しくて草
uhyo
7
5.1k
TypeScript 7.0の現在地と備え方
uhyo
6
3.8k
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
uhyo
1
120
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
3
1.2k
ECMAScript仕様の最新動向: プロセスの変化と仕様のトレンド
uhyo
3
980
Other Decks in Technology
See All in Technology
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
470
なぜAI任せのゲームは面白くならないのか?
hirohasuyoutube
0
260
PQC移行の今 -- IETF からみた現在地
satokan
4
590
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
180
AI coding 整合正規方法
philipz
0
560
「大丈夫そう?」をObservabilityで確かめる
mrmtsu
0
220
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
170
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
520
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
200
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
2
660
Kiro Meetup #8 Kiro アップデート (2026/3/21〜2026/9/24)
katzueno
1
300
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
130
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
How to Ace a Technical Interview
jacobian
280
24k
Become a Pro
speakerdeck
PRO
31
6.3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
390
Typedesign – Prime Four
hannesfritz
42
3.2k
Designing Experiences People Love
moore
143
24k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
380
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
We Are The Robots
honzajavorek
0
380
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
290
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