---
title: >-
  More resilient refreshes for expiring offline access tokens - Shopify
  developer changelog
description: >-
  Shopify’s developer changelog documents all changes to Shopify’s platform.
  Find the latest news and learn about new platform opportunities.
source_url:
  html: >-
    https://shopify.dev/changelog/more-resilient-refreshes-for-expiring-offline-access-tokens
  md: >-
    https://shopify.dev/changelog/more-resilient-refreshes-for-expiring-offline-access-tokens.md
metadata:
  effectiveApiVersion: ''
  affectedApi:
    - displayName: Admin GraphQL API
      handle: admin-graphql
    - displayName: Admin REST API
      handle: admin-rest
  primaryTag:
    displayName: API
    handle: api
  secondaryTag:
    displayName: Update
    handle: update
  indicatesActionRequired: false
  createdAt: '2026-08-26T16:40:42-04:00'
  postedAt: '2026-08-28T10:00:00-04:00'
  updatedAt: '2026-08-27T10:14:50-04:00'
  effectiveAt: '2026-08-28T10:00:00-04:00'
---

# More resilient refreshes for expiring offline access tokens

DateAugust 28, 2026

FlagsUpdate

SurfacesAPI

Affected APIs[Admin GraphQL API](https://shopify.dev/changelog?api_type=admin-graphql)[Admin REST API](https://shopify.dev/changelog?api_type=admin-rest)

Expiring offline access token refreshes now retain the previously used refresh token until an app begins using its replacement. This rollout helps apps recover when a refresh response is lost or isn’t persisted. No migration is required, but apps should continue to store every refreshed token pair atomically.

## What changed

Previously, after an app used a refresh token, it could retry that token for up to 60 minutes. If the app didn’t receive or save the newly returned access token and refresh token, the previously stored refresh token could no longer be used after that window.

Now, an app can retry its previously stored refresh token until it starts using the replacement refresh token. This gives the app a recovery path after a lost response or storage failure.

The recovery period is limited to 30 days from the original refresh token’s first use and doesn’t extend the token beyond its normal 90-day lifetime. When an app uses the replacement refresh token, the preceding refresh token is retired.

## Who's affected

Apps that use expiring offline access tokens. It doesn’t require a new API version, configuration change, or opt-in.

Apps that don’t use expiring offline access tokens aren’t affected.

## Why this matters

A transient network interruption, worker failure, or database write failure can occur after Shopify processes a refresh request but before an app saves the returned token pair. This change lets affected apps recover without requiring a merchant to open the app again.

## What to do

No migration is required if your app is already using expiring offline access tokens.

Continue to:

1. Serialize refresh operations for each shop.
2. Persist each returned access-token and refresh-token pair atomically.
3. Use the newest refresh token for future refreshes.
4. Treat this behavior as a recovery path for lost responses, not as a reason to keep using an older refresh token after its replacement has been stored.

## Related docs

* [Offline access tokens](https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/offline-access-tokens)
