| React Query | RTK-Query | |
|---|---|---|
| Platform Requirements | React | Redux |
| Supported Query Syntax | Promise, REST, GraphQL | Promise, REST, GraphQL |
| Supported Frameworks | React | Any |
| Caching Strategy | Hierarchical Key -> Value | Unique Key -> Value |
| Cache Key Strategy | JSON | JSON |
| Cache Change Detection | Deep Compare Keys (Stable Serialization) | Key Referential Equality (===) |
| Data Change Detection | Deep Comparison + Structural Sharing | Key Referential Equality (===) |
| Data Memoization | Full Structural Sharing | Identity (===) |
| Bundle Size | [![][bp-react-query]][bpl-react-query] | [![][bp-rtk-query]][bpl-rtk-query] |
| API Definition Location | Component, External Config | External Config |
| Queries | ✅ | ✅ |
| Cache Persistence | ✅ | ✅ |
| Devtools | ✅ | ✅ |
| Polling/Intervals | ✅ | ✅ |
| Parallel Queries | ✅ | ✅ |
| Dependent Queries | ✅ | ✅ |
| Paginated Queries | ✅ | ✅ |
| Infinite Queries | ✅ | 🛑 |
| Bi-directional Infinite Queries | ✅ | 🛑 |
| Infinite Query Refetching | ✅ | 🛑 |
| Lagged Query Data1 | ✅ | ✅ |
| Selectors | ✅ | ✅ |
| Initial Data | ✅ | ✅ |
| Scroll Recovery | ✅ | ✅ |
| Cache Manipulation | ✅ | ✅ |
| Outdated Query Dismissal | ✅ | ✅ |
| Render Batching & Optimization2 | ✅ | ✅ |
| Auto Garbage Collection | ✅ | ✅ |
| Mutation Hooks | ✅ | ✅ |
| Offline Mutation Support | ✅ | 🛑 |
| Prefetching APIs | ✅ | ✅ |
| Query Cancellation | ✅ | 🛑 |
| Partial Query Matching3 | ✅ | ✅ |
| Stale While Revalidate | ✅ | ✅ |
| Stale Time Configuration | ✅ | ✅ |
| Pre-usage Query/Mutation Configuration4 | ✅ | ✅ |
| Window Focus Refetching | ✅ | ✅ |
| Network Status Refetching | ✅ | ✅ |
| General Cache Dehydration/Rehydration | ✅ | ✅ |
| Offline Caching | ✅ | 🔶 |
| React Suspense | ✅ | 🛑 |
| Abstracted/Agnostic Core | ✅ | ✅ |
| Automatic Refetch after Mutation5 | 🔶 | ✅ |
| Normalized Caching6 | 🛑 | 🛑 |
| Feature | react-query | rtk-query |
|---|---|---|
| Supported Protocols | any, none included | any, REST included |
| API Definition | on use, declarative | declarative |
| Cache by | user-defined query-key | endpoint + serialized arguments |
| Invalidation Strategy + Refetching | manual by cache key | declarative, by type and/or type/id |
| **Polling ** | ✅ | ✅ |
| **Parallel queries ** | ✅ | ✅ |
| Dependent queries | ✅ | ✅ |
| Skip queries | ✅ | ✅ |
| Lagged queries | ✅ | ✅ |
| Auto garbage collection | ✅ | ✅ |
| Normalized caching | 🛑 | 🛑 |
| Infinite scrolling | ✅ | TODO |
| Prefetching | ✅ | ✅ |
| Retrying | ✅ | ✅ |
| Optimistic updates | can update cache by hand | can update cache by hand |
| Manual cache manipulation | ✅ | ✅ |
| Platforms | hooks for React | hooks for React, everywhere Redux works |
| React Query | RTK-Query | |
|---|---|---|
| Platform Requirements | React | Redux |
| Caching Strategy | Hierarchical Key -> Value | Unique Key -> Value |
| Cache Change Detection | Deep Compare Keys (Stable Serialization) | Key Referential Equality (===) |
| Data Change Detection | Deep Comparison + Structural Sharing | Key Referential Equality (===) |
| Data Memoization | Full Structural Sharing | Identity (===) |
| Bundle Size | [![][bp-react-query]][bpl-react-query] | [![][bp-rtk-query]][bpl-rtk-query] |
| API Definition Location | Component, External Config | External Config |
| Infinite Queries | ✅ | 🛑 |
| Bi-directional Infinite Queries | ✅ | 🛑 |
| Infinite Query Refetching | ✅ | 🛑 |
| Offline Mutation Support | ✅ | 🛑 |
| Query Cancellation | ✅ | 🛑 |
| Offline Caching | ✅ | 🔶 |
| React Suspense | ✅ | 🛑 |
| Automatic Refetch after Mutation5 | 🔶 | ✅ |
| Normalized Caching6 | 🛑 | 🛑 |
| Feature | react-query | rtk-query |
|---|---|---|
| Supported Protocols | any, none included | any, REST included |
| API Definition | on use, declarative | declarative |
| Cache by | user-defined query-key | endpoint + serialized arguments |
| Invalidation Strategy + Refetching | manual by cache key | declarative, by type and/or type/id |
| Normalized caching | 🛑 | 🛑 |
| Infinite scrolling | ✅ | TODO |
| Optimistic updates | can update cache by hand | can update cache by hand |
| Platforms | hooks for React | hooks for React, everywhere Redux works |