Skip to content

Latest commit

 

History

History

README.md

Session Storage Adapter for PostgreSQL

This package implements the SessionStorage interface that works with an instance of PostgreSQL. Tested using PostgreSQL v15

import {shopifyApp} from '@shopify/shopify-app-express';
import {PostgreSQLSessionStorage} from '@shopify/shopify-app-session-storage-postgresql';

const shopify = shopifyApp({
  sessionStorage: new PostgreSQLSessionStorage(
    'postgres://username:password@host/database',
  ),
  // ...
});

// OR

const shopify = shopifyApp({
  sessionStorage: new PostgreSQLSessionStorage(
    new URL('postgres://username:password@host/database'),
  ),
  // ...
});

// OR

const shopify = shopifyApp({
  sessionStorage: PostgreSQLSessionStorage.withCredentials(
    'host.com',
    'thedatabase',
    'username',
    'password',
  ),
  // ...
});

Expiring Offline Access Tokens

This storage adapter supports expiring offline access tokens. When enabled, the adapter automatically stores and retrieves refresh tokens alongside your session data.

To enable this feature, set the expiringOfflineAccessTokens future flag in your app configuration:

const shopify = shopifyApp({
  sessionStorage: new PostgreSQLSessionStorage(
    'postgres://username:password@host/database',
  ),
  future: {
    expiringOfflineAccessTokens: true,
  },
  // ... other config
});

The required database columns (refreshToken and refreshTokenExpires) are added automatically via the built-in migration system. For details, see the migration guide.

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.