Action required: existing public apps must use expiring offline access tokens by January 1, 2027

Hi @TerenceShopify ,

Title: What happens if a merchant disconnects the app during or immediately after refresh token rotation?

I’m trying to understand some edge cases with Shopify’s new expiring offline access token + refresh token model.

Suppose my app successfully exchanges a refresh token and Shopify returns a new access token and a new refresh token.

I’m wondering what happens in these scenarios:

Scenario 1

Shopify has already generated and returned the new refresh token, but before my application successfully stores it, the merchant uninstalls (disconnects) the app from the Shopify Admin.

  • Does the newly returned refresh token remain valid?

  • Or is it immediately revoked when the app is uninstalled?

Scenario 2

My application receives the response containing the new refresh token, but due to a server crash, network issue, or database failure, the new refresh token is never saved. Immediately afterward, the merchant uninstalls the app.

In this case:

  • My application only has the most recently received refresh token in memory (or perhaps only the previous one stored in the database).

  • After the app is reinstalled later, is there any way to recover from this situation?

  • Is the previously stored refresh token permanently invalid because refresh token rotation has already occurred?

  • Is reauthorization through the OAuth flow the only recovery option?

I’m trying to understand the expected behavior and the recommended way to handle these failure scenarios so that applications don’t permanently lose access due to an unexpected disconnect or server failure.

Thanks