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
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuka O’oka
June 23, 2025
Programming
1.4k
3
Share
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
Remix Tokyo Meetup 第5回 『Bring Your Own Talk』で LT した資料。
Yuka O’oka
June 23, 2025
More Decks by Yuka O’oka
See All by Yuka O’oka
React 使いじゃなくても知っておきたい教養としての React
oukayuka
22
6.6k
React は次の10年を生き残れるか:3つのトレンドから考える
oukayuka
49
19k
Reactのトレンドよくわからん
oukayuka
17
9.6k
とある個人開発 PWA の SEO 奮戦記
oukayuka
8
3.1k
Recomposeとは何だったのか、またはHooksが開けたパンドラの箱についての考察 / Recompose Funeral March
oukayuka
3
6k
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
oukayuka
0
380
Other Decks in Programming
See All in Programming
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
340
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
140
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
170
おれのAgentic Coding 2026/03
tsukasagr
1
140
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
6
3.1k
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
830
Java 21/25 Virtual Threads 소개
debop
0
330
Running Swift without an OS
kishikawakatsumi
0
380
まかせられるPM・まかせられないPM / DevTech GUILD Meetup
yusukemukoyama
0
110
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
350
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
530
Offline should be the norm: building local-first apps with CRDTs & Kotlin Multiplatform
renaudmathieu
0
140
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
790
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
480
Game over? The fight for quality and originality in the time of robots
wayneb77
1
160
Evolving SEO for Evolving Search Engines
ryanjones
0
170
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
250
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
97
30 Presentation Tips
portentint
PRO
1
270
Transcript
େԬ༝Ղʢ͘ΔΈׂΓॻʣ དྷͨΔ͖ʹඋ͑ͯ 3FBDU ৽ػೳͱ 3FBDU3PVUFSݻ༗ػೳͷ औࣺબͱ͢Γ߹ΘͤΛߟ͑Δ
ࣗݾհ େԬ༝Ղ !PVLBZVLB ৽ਓͱઌഐͷରܗࣜͰΘ͔Γֶ͘͢Δ 3FBDUڭຊʰΓ͋ΫτʂʱγϦʔζͷ࡞ऀɻ ݱͷΤϯδχΞͷޱίϛͰධΛݺͼɺ γϦʔζྦྷܭച্ ෦Λಥഁʂ ࠷৽3FBDU ʹରԠɺ3FBDU3PVUFS
/FYUKTʹΑΔ࡞ྫΛ๛ʹܝࡌͨ͠ վగ ൛ΛʹϦϦʔεɻ IUUQTPVLBZVLBCPPUIQN Ͱൢചதʂ ˞3FNJY5PLZP ϝϯόʔʹߍਖ਼ʹ͝ڠྗ͍͖ͨͩ·ͨ͠ 🙇
3FBDU3PVUFS34$1SFWJFX w ͷ 34$ ରԠ͕ϓϨϏϡʔஈ֊ʹ w 34$'SPN-PBEFST w 4FSWFS$PNQPOFOU3PVUFTʢ4$3ʣ w
4FSWFS'VODUJPOT ʹಉ࣌ରԠ w 7JUF ͷ 34$ αϙʔτͪ ʢ҆ఆ൛ϦϦʔεW ͱͯ͠ޙʙॳ಄͝Ζʁʣ IUUQTSFNJYSVOCMPHSTDQSFWJFX
34$'SPN-PBEFST w loader() action() ͔ΒϨϯμ ϦϯάࡁΈͷ4FSWFS$PNQPOFOUT Λ3PVUF$PNQPOFOUʹͤΔ w ैདྷͷ
loader() action() ͔ΒฦͤΔ ͷσʔλͷΈͩͬͨͷ͕ɺ+49 ཁૉ ฦͤΔΑ͏ʹͳͬͨ w $MJFOU$PNQPOFOUTͷதʹ4FSWFS $PNQPOFOUT͕ຒΊࠐ·ΕΔ
4FSWFS$PNQPOFOU3PVUFTʢ4$3ʣ w 3PVUF$PNQPOFOUΛσϑΥϧτ ΤΫεϙʔτ͢ΔͷͰͳ͘ɺ ServerComponentͱ͍͏໊લͰΤΫ εϙʔτ͢Δͱ4FSWFS$PNQPOFOU ʹͳΔ w ͦͷϧʔτʹ͓͚ΔίϯϙʔωϯτπϦʔͰ4FSWFS$PNQPOFOUT͕ σϑΥϧτͱͳΓɺ$MJFOU$PNQPOFOUΛఆٛ͢Δʹ“use
client” σΟϨΫςΟϒ͕ඞཁʹͳΔ w 4$3 Ͱैདྷͱಉ༷ʹloader() action() ͕ఆٛՄೳ
4FSWFS'VODUJPOT w “use server” σΟϨΫςΟϒ͖ͭͷ ؔαʔόͰ࣮ߦ͞ΕΔ ➔ ैདྷ loader()
action() ͷΈ w 4FSWFS'VODUJPOT͕ݺͼग़͞ΕΔͱɺ ࣗಈతʹͦͷϧʔτΛSFWBMJEBUFͨ͠ ͏͑Ͱ6*͕ߋ৽͞ΕΔ ➔loader() ͷ࠶࣮ߦɺ34$πϦʔͷ ετϦʔϛϯά
Ͱ͜ΕΒͬͯ 33 ݻ༗ͷػೳͱڝ߹͢ΔͷͰʁ w loader()㲗4FSWFS$PNQPOFOUT w action()㲗4FSWFS'VODUJPOT IUUQTYDPNSZBO fl PSFODFTUBUVT
⋮
ͦͷଞ 3FBDU ຊମͱඃͬͯΔػೳকདྷతʹඇਪʹ IUUQTSFNJYSVOCMPHSSHPWFSOBODF
ࠓޙΛݟਾ͑ͯɺࣗͳΓͷઓུΛߟ͑ͨ কདྷͷ ٕज़తෛ࠴ %9 ӡ༻ίετ
3PVUF-PBEFSʼ34$ ௨ৗͷ 8FC ΞϓϦέʔγϣϯͰ 34$ ͕ 3PVUF-PBEFS ʹରͯ͠໌֬ͳ༏Ґੑ Λ࣋ͭέʔεݶఆతͳͨΊɺ-PBEFS ϑΝʔετͷઃܭʹ͢Δ
✅όϯυϧαΠζ͕ݮΒͤΔ ➔ͦ͜·ͰΧϦΧϦʹνϡʔχϯά͢Δඞཁੑ͋Δʁ ➔ॏྔڃͷσʔλՃܥMJCMPBEFSͰ͏ͷͰԸܙͳ͠ ✅ίϯϙʔωϯτͷ$PNQPTBCJMJUZ্͕ ➔8FCΞϓϦͰσʔλΛίϯϙʔωϯτʹด͡ࠐΊͯऴΘΓ ʹͳΔέʔεك ✅QSPQTͷόέπϦϨʔΛͳͤ͘Δ ➔దʹωετͨ͠ϧʔτͱuseRouteLoaderData()Λ͑ QSPQESJMMJOHൃੜ͠ͳ͍ 🚫ΩϟογϡઓུͷෳࡶԽ ➔/ ΥʔλʔϑΥʔϧ͕ൃੜ͍͢͠ 🚫ςελϏϦςΟͷԼ ➔୯ମɾ݁߹ςετ͕ࠔɻελΠϧΨΠυԽ͢Δʹ͍ ͍ͪͪ௨৴ϞοΫ͕ඞཁ 🚫3FNJY༝དྷͷγϯϓϧ͕ࣦ͞ΘΕΔ ➔ϧʔτϨϕϧʹσʔλϩδοΫΛू͠ɺίϯϙʔωϯ τΛडಈతʹอͭ͜ͱͰઃܭ͕γϯϓϧʹͳ͍ͬͯͨ
3PVUF"DUJPO㱡4FSWFS'VODUJPO w 4FSWFS'VODUJPOT 3PVUF"DUJPO ͷશͯͷػೳΛஔ͖͑Մೳ w ϧʔςΟϯάʹີ݁߹Ͱͳ͍ͨΊɺ࠶ར༻ੑ͕ߴ·Δ w loader()ˠ34$ͷΓସ͑ͱҟͳΓɺίϯϙʔωϯτઃܭΛ
େ͖͘ม͑Δඞཁ͕ͳ͍ 3FTPVSDF3PVUFTͷΈaction()Λ͍ɺଞͷ߹4FSWFS 'VODUJPOΛ͏ W Ҏ߱
'FUDIFSʻVTF"DUJPO4UBUFͦͷଞ w কདྷతʹ useFetcher() ഇࢭͷํʹ͔͍ͦ͏ IUUQTSFNJYSVOCMPHSSHPWFSOBODF w ͦͦ 'FUDIFS ༷͕ෳࡶͰɺίʔυͷՄಡੑΛԼ͛Δ
w 4FSWFS'VODUJPOT ͱͷ૬ੑ͕ෆ໌ ΞΫγϣϯͱͷ௨৴ʹ useActionState() Λܦ༝ͯ͠ϑΥʔϜͷ BDUJPO ϓϩύςΟΛ͍ɺָ؍త6*ʹ useOptimistic() Λ͏ W Ҏ߱
NFUB 㱡NFUB UJUMF w ެࣜυΩϡϝϯτͰ͍ͭͷ·ʹ͔ <meta> ͷ༻͕ਪ͞Εͯͨ w meta() ͷෳݺͼग़͠Ϛʔδ͞ΕΔ͕ɺ<meta>
<title> ୯७ʹλά͕ཏྻ͞ΕΔ ➔)5.-ͷ༷ͱͯ͠UJUMFͷॏෳهड़ҧɺNFUBಈ࡞อূ֎ ࠓޙ <meta> ͱ <title> Λ͏͕ɺॏෳ͠ͳ͍Α͏ʹҙ͖͢ ➔W ͰඇਪɺW Ͱআͷ ɹ༧ఆΒ͍͠ ࠓ͔Β
None