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
2.1k
【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 Routerを新規プロダクトで1年間運用してみた結果
ytaisei
1
110
Reactを段階的に覗いてみる
ytaisei
2
1.5k
Reactのトランジションを覗いてみる
ytaisei
1
1.9k
Deep Dive Into React 〜React Fiber Architectureについて〜
ytaisei
1
180
React19で状態管理はどう変わるか
ytaisei
2
160
TanStackで効率的なルーティングとデータ取得を実現
ytaisei
9
1.8k
TanStack Routerで型安全かつ効率的なルーティングを実現
ytaisei
4
1.8k
BunがCommonJSをサポートする理由
ytaisei
2
350
TanStack Router SPA開発の選択肢になるか(+TanStack Query)
ytaisei
2
1.4k
Other Decks in Technology
See All in Technology
AI専用のリンターを作る #yumemi_patch
bengo4com
5
2.2k
KiCadでPad on Viaの基板作ってみた
iotengineer22
0
180
生成AI時代の開発組織・技術・プロセス 〜 ログラスの挑戦と考察 〜
itohiro73
1
390
「良さそう」と「とても良い」の間には 「良さそうだがホンマか」がたくさんある / 2025.07.01 LLM品質Night
smiyawaki0820
1
450
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
6
4.7k
AWS認定を取る中で感じたこと
siromi
1
110
ハッカソン by 生成AIハッカソンvol.05
1ftseabass
PRO
0
150
開発生産性を組織全体の「生産性」へ! 部門間連携の壁を越える実践的ステップ
sudo5in5k
1
1.3k
WordPressから ヘッドレスCMSへ! Storyblokへの移行プロセス
nyata
0
350
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
110
Model Mondays S2E03: SLMs & Reasoning
nitya
0
240
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
940
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
How to train your dragon (web standard)
notwaldorf
94
6.1k
Agile that works and the tools we love
rasmusluckow
329
21k
Why Our Code Smells
bkeepers
PRO
337
57k
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! ご清聴ありがとうございました!