miniSWR is a tiny (<1kb gzipped) baseline implementation of SWR by Vercel, intended for use with Preact.
- SWR-like API
- Interval polling
- Revalidate on focus
- Revalidate on reconnect
- Conditional fetching
- TypeScript support
- Pagination
- Global Configuration
- Error Retry
- Initial Data
- Install the package:
yarn add mini-swr
- Use the same API as SWR:
import useSWR from 'mini-swr'
const useProfile = (userId) => {
// Fetcher won't fire if userId isn't ready yet
return useSWR(userId ? `/api/user/${userId}` : null, fetcher)
}
function Profile(userId) {
const { data, error } = useProfile(userId)
if (error) return <div>failed to load</div>
if (!data) return <div>loading...</div>
return <div>hello {data.name}!</div>
}
const { data, error, isValidating, mutate } = useSWR(key, fetcher, options)
key
: a unique key string for the request (or a function / array / null)fetcher
: (optional) a Promise returning function to fetch your dataoptions
: (optional) an object of options for this SWR hook
data
: data for the given key resolved byfetcher
(or undefined if not loaded)error
: error thrown byfetcher
(or undefined)isValidating
: if there's a request or revalidation loadingmutate(data?, shouldRevalidate?)
: function to mutate the cached data
revalidateOnFocus = true
: auto revalidate when window gets focusedrevalidateOnReconnect = true
: automatically revalidate when the browser regains a network connection (vianavigator.onLine
)refreshInterval = 0
: polling interval (disabled by default)