File: README.md
Introduction
SWR is a React Hooks library for data fetching.
The name โSWRโ is derived from stale-while-revalidate, a cache invalidation strategy popularized by HTTP RFC 5861.
SWR first returns the data from cache (stale), then sends the request (revalidate), and finally comes with the up-to-date data again.
With just one hook, you can significantly simplify the data fetching logic in your project. And it also covered in all aspects of speed, correctness, and stability to help you build better experiences:
- Fast, lightweight and reusable data fetching
- Transport and protocol agnostic
- Built-in cache and request deduplication
- Real-time experience
- Revalidation on focus
- Revalidation on network recovery
- Polling
- Pagination and scroll position recovery
- SSR and SSG
- Local mutation (Optimistic UI)
- Built-in smart error retry
- TypeScript
- React Suspense
- React Native
...and a lot more.
With SWR, components will get a stream of data updates constantly and automatically. Thus, the UI will be always fast and reactive.
View full documentation and examples on swr.vercel.app.
Quick Start
import useSWR from 'swr'
function Profile() {
const { data, error, isLoading } = useSWR('/api/user', fetcher)
if (error) return failed to load
if (isLoading) return loading...
return hello {data.name}!
}In this example, the React Hook useSWR accepts a key and a fetcher function.
The key is a unique identifier of the request, normally the URL of the API. And the fetcher acceptskey as its parameter and returns the data asynchronously.
useSWR also returns 3 values: data, isLoading and error. When the request (fetcher) is not yet finished,data will be undefined and isLoading will be true. When we get a response, it sets data and error based on the result
of fetcher, isLoading to false and rerenders the component.
Note that fetcher can be any asynchronous function, you can use your favourite data-fetching
library to handle that part.
View full documentation and examples on swr.vercel.app.
Authors
This library is created by the team behind Next.js, with contributions from our community:
- Shu Ding (@shuding_) - Vercel
- Jiachi Liu (@huozhi) - Vercel
- Guillermo Rauch (@rauchg) - Vercel
- Joe Haddad (@timer150) - Vercel
- Paco Coursey (@pacocoursey) - Vercel
Thanks to Ryan Chen for providing the awesome swr npm package name!
License
The MIT License.
File: examples/api-hooks/README.md
API Hooks
One-Click Deploy
Deploy your own SWR project with Vercel.
How to Use
Download the example:
curl https://codeload.github.com/vercel/swr/tar.gz/main | tar -xz --strip=2 swr-main/examples/api-hooks
cd api-hooksInstall it and run:
yarn
yarn dev
# or
npm install
npm run devThe Idea behind the Example
Show how you could create custom hooks, using SWR internally, for your different data requirements and use them in your application.
File: examples/autocomplete-suggestions/README.md
Autocomplete Suggestions
One-Click Deploy
Deploy your own SWR project with Vercel.
How to Use
Download the example:
curl https://codeload.github.com/vercel/swr/tar.gz/main | tar -xz --strip=2 swr-main/examples/autocomplete-suggestions
cd autocomplete-suggestionsInstall it and run:
yarn
yarn dev
# or
npm install
npm run devThe Idea behind the Example
Show how to use SWR to fetch the suggestion for an autocomplete.
File: examples/basic/README.md
Basic
One-Click Deploy
Deploy your own SWR project with Vercel.
How to Use
Download the example:
curl https://codeload.github.com/vercel/swr/tar.gz/main | tar -xz --strip=2 swr-main/examples/basic
cd basicInstall it and run:
yarn
yarn dev
# or
npm install
npm run devThe Idea behind the Example
Show a basic usage of SWR fetching data from an API in two different pages.
File: examples/basic-typescript/README.md
Basic TypeScript
One-Click Deploy
Deploy your own SWR project with Vercel.
How to Use
Download the example:
curl https://codeload.github.com/vercel/swr/tar.gz/main | tar -xz --strip=2 swr-main/examples/basic-typescript
cd basic-typescriptInstall it and run:
yarn
yarn dev
# or
npm install
npm run devThe Idea behind the Example
Show how to use the basic example along with TypeScript to type the data received from SWR.
File: examples/focus-revalidate/README.md
Focus Revalidate
One-Click Deploy
Deploy your own SWR project with Vercel.
How to Use
Download the example:
curl https://codeload.github.com/vercel/swr/tar.gz/main | tar -xz --strip=2 swr-main/examples/focus-revalidate
cd focus-revalidateInstall it and run:
yarn
yarn dev
# or
npm install
npm run devThe Idea behind the Example
Basic authentication example showing how the revalidate on focus feature works and to trigger a revalidation on a per-hook call basis.
File: examples/global-fetcher/README.md
Global Fetcher
One-Click Deploy
Deploy your own SWR project with Vercel.
How to Use
Download the example:
curl https://codeload.github.com/vercel/swr/tar.gz/main | tar -xz --strip=2 swr-main/examples/global-fetcher
cd global-fetcherInstall it and run:
yarn
yarn dev
# or
npm install
npm run devThe Idea behind the Example
Use the SWRConfig provider to set up the fetcher globally instead of a per-hook call.