Skip to main content

Comparison

The biggest difference of Hyper Fetch compared to other libraries is the architecture and assumptions on which it is built. It is a tool whose core features are written in js without dependencies, thanks to which it can work in many environments without a specific connection to a given framework, offering full control over the flow and observation of data exchange, it is not just a wrapper. The main goal was to introduce a data storage standard, offer an embedded http client, reduce setup time and solve major architectural difficulties.

info

Producing an accurate and unbiased comparison is quite a challenge. Libraries develop very dynamically and quickly, so if you notice that our data may be corrected while using these libraries please let us know by opening an issue.


Why it's Unique​


Features​

✅ - Documented Support
đŸ”ĩ - Require Additional Plugin/Coding
🟠 - Partial Support
🔴 - Not Supported / Not Documented


Hyper FetchQuerySWRApollo
Supported environmentsAnyAnyReactAny
ProtocolsAnyAnyAnyGraphQL
Caching ApproachCommand SchemaHierarchical Key > ValueUnique Key > ValueNormalized Schema
Cache Key StrategyCommand KeyJSONJSONGraphQL Query
Data Change DetectionDeep ComparisonDeep ComparisonDeep ComparisonDeep Comparison
Data MemoizationNormalized IdentityFull Structural SharingIdentityNormalized Identity
Queue Key StrategyCommand KeyN/AN/AN/A
Devtools✅✅đŸ”ĩ✅
Server Connection Setup ℹī¸âœ…đŸ”ĩđŸ”ĩ✅
Shared Command ℹī¸âœ…đŸ”ĩđŸ”ĩ✅
Dependency tracking ℹī¸âœ…✅✅✅
Cache Persistence✅✅✅✅
Requests Persistence ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Download ETA ℹī¸âœ… đŸ”ĩđŸ”ĩđŸ”ĩ
Uploading ETA ℹī¸âœ…đŸ”ĩđŸ”ĩđŸ”ĩ
Pooling ℹī¸âœ…✅✅✅
Dependent Queries ℹī¸âœ…✅✅✅
Paginated Queries✅✅✅✅
Query Params Parsing ℹī¸âœ…đŸ”ĩđŸ”ĩđŸ”ĩ
Queueing ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Retries ℹī¸âœ…✅✅đŸ”ĩ
Default Client ℹī¸âœ…đŸ”´đŸ”´âœ…
Infinite Queries ℹī¸âœ…✅✅✅
SSR ℹī¸âœ…✅✅✅
Initial Data ℹī¸âœ…✅✅✅
Cache Hydration ℹī¸âœ… ✅ 🔴✅
Garbage Collecting ℹī¸âœ…âœ…đŸ”´đŸ”´
Pre Request Intercepting ℹī¸âœ…đŸ”ĩđŸ”ĩ✅
Post Request Intercepting ℹī¸âœ…đŸ”ĩđŸ”ĩ✅
Prefetching ℹī¸âœ…✅đŸ”ĩ✅
Cancellation ℹī¸âœ…âœ…đŸ”´đŸ”´
Queue Cancellation ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Authentication ℹī¸âœ…đŸ”ĩđŸ”ĩ✅
Stale While Revalidate ℹī¸âœ…✅✅✅
Refresh Data✅✅✅✅
Offline Request Pause ℹī¸âœ…âœ…đŸ”´đŸ”´
Network Status Re-fetching ℹī¸âœ…✅✅✅
Window Focus Re-fetching ℹī¸âœ…âœ…âœ…đŸ”´
Normalized Caching ℹī¸âœ…đŸ”´đŸ”´âœ…
Automatic Re-fetch After Mutation ℹī¸âœ…đŸ”ĩđŸ”ĩ✅
Query Matching ℹī¸âœ…âœ…đŸ”´đŸ”´
Cache Matching ℹī¸âœ…✅✅✅
Query Lifecycle Events ℹī¸âœ…đŸ”´đŸ”´âœ…
Data Flow Standard ℹī¸âœ…đŸ”´đŸ”´âœ…
Request Start/Stop ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Request Queue Start/Stop/Pause ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Request Data Mapping ℹī¸âœ…đŸ”ĩđŸ”ĩN/A
Cache Invalidation ℹī¸âœ…✅✅✅
File Uploading ℹī¸âœ…đŸ”ĩđŸ”ĩ✅
Global Response Side-Effects ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Scroll Recovery ℹī¸âœ…✅✅✅
Simple Command Execution ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Requests Manager ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Tabs Storages Synchronization ℹī¸đŸ”´đŸ”´đŸ”´đŸ”´
Tabs Dispatching Synchronization ℹī¸đŸ”´đŸ”´đŸ”´đŸ”´

Typescript features​

Hyper FetchQuerySWRApollo
Response types ℹī¸âœ…✅✅✅
Request data types ℹī¸âœ…✅✅✅
Global error types ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Local error types ℹī¸âœ…đŸ”´đŸ”´đŸ”´
Query params types ℹī¸âœ…đŸ”´đŸ”´âœ…
Params types ℹī¸âœ…đŸ”´đŸ”´âœ…
Command state tracking types ℹī¸âœ…đŸ”´đŸ”´âœ…