Mirror: The highly customizable and versatile GraphQL client with which you add on features like normalized caching as you grow.
README.md

@urql/storage-rn#

@urql/storage-rn is a Graphcache offline storage for React Native.

It is compatible for both plain React Native and Expo apps (including managed workflow), but it has a two peer dependencies - Async Storage and NetInfo - which must be installed separately. AsyncStorage will be used to persist the data, and NetInfo will be used to determine when the app is online and offline.

Quick Start Guide#

Install NetInfo (RN | Expo) and AsyncStorage (RN | Expo).

Install @urql/storage-rn alongside urql and @urql/exchange-graphcache:

yarn add @urql/storage-rn
# or
npm install --save @urql/storage-rn

Then add it to the offline exchange:

import { createClient, fetchExchange } from 'urql';
import { offlineExchange } from '@urql/exchange-graphcache';
import { makeAsyncStorage } from '@urql/storage-rn';

const storage = makeAsyncStorage({
  dataKey: 'graphcache-data', // The AsyncStorage key used for the data (defaults to graphcache-data)
  metadataKey: 'graphcache-metadata', // The AsyncStorage key used for the metadata (defaults to graphcache-metadata)
  maxAge: 7, // How long to persist the data in storage (defaults to 7 days)
});

const cache = offlineExchange({
  schema,
  storage,
  updates: {
    /* ... */
  },
  optimistic: {
    /* ... */
  },
});

const client = createClient({
  url: 'http://localhost:3000/graphql',
  exchanges: [cache, fetchExchange],
});