swr

v2.4.1 MIT

React Hooks library for remote data fetching

Weekly Downloads
7.6M
Stars
32.3K
Forks
1.3K
Open Issues
190
Gzip Size
8.5 kB
Unpacked Size
309.9 kB
Dependencies
4
Last Updated
1mo ago

swr Download Trends

Download trends for swr010.3M20.7M31.0M41.3MFeb 2025MayAugNovFebApr 2026
swr

About swr

SWR is a React Hooks library designed to simplify remote data fetching by implementing the stale-while-revalidate caching strategy. It addresses the common challenge of efficiently loading, caching, and updating data from APIs within React applications, aiming to provide a seamless user experience by showing stale data first and then updating it in the background.

Developed by Vercel, SWR follows a philosophy of developer experience and performance. Its primary audience includes React developers who need a robust yet simple way to manage server-side data in their applications, particularly those using frameworks like Next.js where it integrates seamlessly.

The library's core mechanism revolves around a hook, `useSWR`, which takes a unique key (often an API endpoint URL) and a fetcher function. This pattern enables automatic caching, deduplication of requests, and background revalidation, ensuring that the UI always displays the most up-to-date information without manual intervention.

SWR integrates smoothly into the React ecosystem and is particularly well-suited for projects using Next.js, leveraging its capabilities for optimized data fetching. It can also be used with React Native and other React-based frameworks, offering a consistent data-fetching experience across different environments.

With a minimal bundle size of 8.5 kB (gzip), SWR adds little overhead to your application. Its mature state, evidenced by 32.3K GitHub stars and frequent weekly downloads (8.3M), indicates a stable and widely-trusted solution for managing remote data. The library supports advanced features like request throttling and automatic polling.

While SWR is powerful for remote data, it is not designed for managing local component state or complex application-wide state that doesn't involve network requests. For purely local state, React's built-in `useState` or `useReducer` hooks are more appropriate and lightweight solutions.

When to use

  • When fetching data from external APIs and needing automatic caching and revalidation.
  • When implementing real-time data updates by leveraging SWR's polling capabilities.
  • When you want to avoid manual request deduplication and manage concurrent requests efficiently.
  • When building applications with Next.js and looking for a data-fetching solution that integrates well with the framework.
  • When you need to display stale data immediately while fetching fresh data in the background.
  • When working with `Suspense` for concurrent data fetching in React.

When NOT to use

  • If you only need simple key-value state — React's built-in `useState` with context is sufficient.
  • When dealing with exclusively static data that does not require network fetching or revalidation.
  • If your data fetching requirements are extremely basic and do not benefit from caching or revalidation strategies.
  • When managing complex, synchronous application state that is not tied to external data sources.
  • If you require a completely custom request lifecycle not supported by SWR's fetcher and options, a lower-level fetch implementation might be more suitable.

swr Alternatives

swr Categories