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
【2023】SWR vs TanStack Query
Search
ytaisei
September 25, 2023
Technology
1
1.6k
【2023】SWR vs TanStack Query
We Are JavaScripters! @42ndにて登壇した際の資料。
2023年度におけるSWRとTanStack Queryの比較を行いました。
ytaisei
September 25, 2023
Tweet
Share
More Decks by ytaisei
See All by ytaisei
TanStackで効率的なルーティングとデータ取得を実現
ytaisei
6
810
TanStack Routerで型安全かつ効率的なルーティングを実現
ytaisei
4
1.1k
BunがCommonJSをサポートする理由
ytaisei
2
160
TanStack Router SPA開発の選択肢になるか(+TanStack Query)
ytaisei
2
870
React Queryは非同期の状態管理ライブラリだ
ytaisei
3
1.6k
アウトプットが与える影響 〜価値を最大化するための学習サイクル〜
ytaisei
2
1.7k
OpenAPIコード生成ライブラリを 『Orval』に移行した理由
ytaisei
1
3.1k
Other Decks in Technology
See All in Technology
Git 研修 Basic【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
310
ペパボのオブザーバビリティ研修2024 説明資料
kesompochy
0
1.1k
地理情報とAPIのトレンド
nagix
0
160
Scaling Technical Excellence at 104: Evolution in AWS and Developer Empowerment
scotthsieh825
1
160
AWSでRAGを作る法方
sonoda_mj
1
140
AI研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
130
Azure OpenAI Service Dev Day / LLMでできる!使える!生成AIエージェント
masahiro_nishimi
3
800
20240725 LLMによるDXのビジョンと、今何からやるべきか @Azure OpenAI Service Dev Day
nrryuya
3
1.2k
Git 研修 Advanced【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
200
開発生産性をむしろ向上させる セキュリティパートナーの作り方 / Dev Productivity Con 2024
flatt_security
0
380
[I/O Extended Android 2024] What`s new in Android 2024
kyeongwan
0
220
クラウド利用者の「責任」をどう果たす?AWSセキュリティ対策のススメ #AWSSummit
hiashisan
0
280
Featured
See All Featured
How to name files
jennybc
67
96k
Gamification - CAS2011
davidbonilla
78
4.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
129
32k
Adopting Sorbet at Scale
ufuk
71
8.8k
YesSQL, Process and Tooling at Scale
rocio
166
14k
The World Runs on Bad Software
bkeepers
PRO
63
11k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Visualization
eitanlees
139
14k
Build your cross-platform service in a week with App Engine
jlugia
227
17k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
121
18k
Become a Pro
speakerdeck
PRO
15
4.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
29
2.5k
Transcript
早稲田大学4年 安井大晟 【2023】 SWR vs TanStack Query
01 自己紹介 Table of contents 04 キャッシュの比較 02 interfaceの比較 05
03 機能面の比較 まとめ
自己紹介 01
2019年:早稲田大学教育学部入学(元教員志望) 2021年:42Tokyo入学 2022年:エンジニアを目指し休学 2023年:フロントエンドでキャリアをスタート 安井大晟(たいせー)
interfaceの比較 02
TanStack Query SWR
TanStack Query SWR • キャッシュ識別のためのkey • データ取得のための非同期関数
機能面の比較 03
TanStack Query
SWR
SWR 扱える非同期の状態が圧倒的に違う
とはいえ数が多いことの辛さもある...
メジャーバージョンアップでの破壊的変更
onSuccess系オプションの廃止😩 注意)useMutationは廃止されない
staleTimeが関係している 前提:staleTimeをInfinityに設定した場合 1. useQueryでデータを取得 → キャッシュに保存 2. 再度useQueryが呼ばれるが、キャッシュが存在するのでデータを返却 3. キャッシュがfreshなのでqueryFnが呼ばれない
4. 結果的にonSuccess系オプションが発火しない
staleTimeが関係している 前提:staleTimeをInfinityに設定した場合 1. useQueryでデータを取得 → キャッシュに保存 2. 再度useQueryが呼ばれるが、キャッシュが存在するのでデータを返却 3. キャッシュがfreshなのでqueryFnが呼ばれない
4. 結果的にonSuccess系オプションが発火しない キャッシュがfreshの時と、そうでない時で 結果に差分が生まれてしまう。 例)onSuccessで setStateやデータ変換をしていた場合は ...
useQueryでonSuccess系のオプション使っ てるコードよく見る😢
TanStack Queryの豊富な機能は大きなメリットだが、メ ジャーバージョンアップでの破壊的変更に 追従していく覚悟は必要
キャッシュの比較 04
TanStack Queryのキャッシュ管理 • staleTime ◦ キャッシュをstale(古くなったとみなす) 状態にするまでの期間 ◦ デフォルト:0 •
cacheTime ◦ キャッシュをガベージコレクション(メモリ領域の開放)するまでの 時間 ◦ デフォルト:5分
TanStack Queryのキャッシュ管理 • staleTime ◦ キャッシュをstale(古くなったとみなす) 状態にするまでの期間 ◦ デフォルト:0 •
cacheTime ◦ キャッシュをガベージコレクション(メモリ領域の開放)するまでの 時間 ◦ デフォルト:5分 キャッシュの生存期間を厳密に指定できる (SWRには無い)
まとめ 05
SWR vs TanStack Query SWR • 必要最小限の状態を提供 • シンプルな設計 TanStack
Query • 豊富な非同期の状態を処理ができる • キャッシュの管理も柔軟
補足:SWR2.0からMutation HooksとDev Toolが 追加されている!
SWR vs TanStack Query 「とりあえずGlobal State管理(Redux)からサーバの状態を剥がしたい」 「アプリケーション設計がマッチしていてシンプルに非同期の状態を扱いたい」 SWRが良さそう 「より厳密なキャッシュ管理や複雑な非同期の状態を扱いたい」 TanStack
Queryが良さそう
THANKS! ご清聴ありがとうございました!