Summary
When a metaobject is updated through the Admin GraphQL API and the edit:shopify/Metaobject intent is invoked right after, the metaobject editor opens showing the old field values. Closing the editor and opening it again shows the correct values. It looks like the editor renders the entry from the admin’s client-side cache and does not refetch on first open.
Context
Embedded app (App Home, Polaris web components + App Bridge). Our app lets merchants set a custom image on an app-owned metaobject entry:
- The app opens the native file picker with the new intent:
shopify.intents.invoke('pick:shopify/File', { data: { mediaTypes: ['MediaImage'] } }) - The app backend writes the picked MediaImage GID to a
file_referencefield of the metaobject usingmetaobjectUpdate(Admin API 2026-04) - Reading the metaobject back through the Admin API immediately returns the new image, so the write itself is fine
Steps to reproduce
- Update a metaobject field through the Admin GraphQL API (in our case a
file_referencefield, from empty to a MediaImage GID) - Immediately invoke the editor intent for the same entry from the embedded app:
const activity = await shopify.intents.invoke('edit:shopify/Metaobject', {
value: 'gid://shopify/Metaobject/123456789',
data: { type: 'app--12345--my_type' },
});
- The editor opens and the image field appears empty, as if nothing was set
- Close the editor and invoke the intent again: the image is now visible
Expected
The editor fetches the current entry when it opens, or there is an intent option to bypass the cached entry.
Actual
The first open renders stale (pre-update) data. Reopening shows fresh data.
Questions
- Is this a known issue?
- Is there a supported way to make the editor refetch on open? For example a cache-bust option on the intent, or anything the app can call to invalidate that entry in the admin’s cache?
There is no data problem, the API always returns the correct values. It is only confusing for merchants who set an image in our app and open the editor right after: it looks like their change was lost.
Reproduced on Chrome (macOS) in the current admin.
@Henry_Tao can you please take a look?