@shopify/shopify-app-session-storage-redis
v6.0.0
Published
Shopify App Session Storage for Redis
Readme
Session Storage Adapter for Redis
This package implements the SessionStorage interface that works with an instance of Redis.
You can create an instance of RedisSessionStorage in several ways:
Using a connection URL
import {shopifyApp} from '@shopify/shopify-app-express';
import {RedisSessionStorage} from '@shopify/shopify-app-session-storage-redis';
const shopify = shopifyApp({
sessionStorage: new RedisSessionStorage(
'redis://username:password@host/database',
),
// ...
});Using a URL object
const shopify = shopifyApp({
sessionStorage: new RedisSessionStorage(
new URL('redis://username:password@host/database'),
),
// ...
});Using credential components
const shopify = shopifyApp({
sessionStorage: RedisSessionStorage.withCredentials(
'host.com',
'thedatabase',
'username',
'password',
),
// ...
});Using a RedisClient instance
[!NOTE] Remember that
RedisSessionStoragewill connect to the database, but won't disconnect from it. If you need to restart the connection, you'll need to manually connect again for the storage to continue working.
import {RedisClientOptions, createClient} from 'redis';
const client = createClient({url: 'redis://username:password@host/database'});
const shopify = shopifyApp({
sessionStorage: new RedisSessionStorage(client),
// ...
});Refresh Token Support
This package supports storing refresh tokens for apps using expiring offline access tokens. No migration or schema changes are required - Redis storage automatically preserves all Session fields through JSON serialization.
[!NOTE] The
future.expiringOfflineAccessTokensflag is available in@shopify/shopify-app-remixand@shopify/shopify-app-react-routeronly. It does not apply to@shopify/shopify-app-express.
To enable expiring offline access tokens in your app (React Router or Remix):
import {shopifyApp} from '@shopify/shopify-app-react-router';
import {RedisSessionStorage} from '@shopify/shopify-app-session-storage-redis';
const shopify = shopifyApp({
sessionStorage: new RedisSessionStorage(
'redis://username:password@host/database',
),
future: {
expiringOfflineAccessTokens: true,
},
// ...
});If you prefer to use your own implementation of a session storage mechanism that is compatible with the @shopify/shopify-app-express package, see the implementing session storage guide.
