Hi
I’ve built a shoping app on the Node/Express app template (@shopify/shopify-api), and my Partner Dashboard continues to show “Deprecated offline token use detected in last 30 days” / “in last 14 days” even though I’ve confirmed there’s no actual deprecated activity happening.
What I’m doing:
On every install, immediately inside my OAuth callback, I migrate the token before doing anything else:
const migration = await shopify.api.auth.migrateToExpiringToken({
shop: session.shop,
nonExpiringOfflineAccessToken: session.accessToken,
});
session = migration.session;
This runs right after shopify.api.auth.callback() resolves, before any other Admin API calls (webhook registration, billing charge, etc.) are made using the session. So new installs should never actually use a non-expiring token against the Admin API — it’s exchanged first.
For shops that installed before I added this code, I also run a lazy migration check in my own backend middleware before any outbound Shopify call, so those get migrated on their next request too.
What I’ve verified:
- The migrateToExpiringToken call succeeds with no errors, for every install I’ve checked
- No cron jobs, scheduled workers, or webhook handlers in my app call the Shopify Admin API directly with a stored token outside this migration path
- Checking the 1-day view in Partner Dashboard has shown zero deprecated calls for 5+ consecutive days
- I’m confident there’s no deprecated call activity within the 14-day window either
Despite this, the 14-day and 30-day warnings continue to display.
Could you help clarify:
-
Whether this warning reflects an actual detected API call within the stated window
-
Should i ask for non-expiring access token directly and not via shopify.api.auth.migrateToExpiringToken
-
Whether this is a known display/refresh issue with the Monitoring dashboard.
Thanks for your help.