See all services Shopify Plus Partner
Platform Developer

Check Your Sidekick App Intents for Full-Page Navigation

App intents declared on admin.app.intent.link now open as a full-page navigation in the Shopify admin rather than an overlay. The change is live everywhere, with no configuration to update and one modal fallback for unsaved work.

Executive summary

What changed

Until this release, every app intent Sidekick invoked appeared as a modal layered over the merchant's current page. Intents declared on the admin.app.intent.link target now navigate the merchant to the URL your extension declares, rendered as a full page. The change is live on every store and every API version, with no flag, scope, or setting to opt into or out of.

The contract between Sidekick and your app is unchanged. Your route still reads its invocation payload from the intents request signal, still registers tool handlers when it mounts, and still resolves the intent with an ok, error, or closed response. One exception survives: if the merchant has unsaved changes on the page they would leave, the intent opens in a modal so their work is not lost.

Extensions targeting admin.app.intent.render are unaffected and still render inline, as are admin intents your app invokes to launch Shopify-native editors. If your app declares both targets, only the link intents change.

Why it matters

For most Plus merchants this is invisible, and that is largely the point. When a merchant asks Sidekick to do something an installed app handles, they now arrive on that app's real page with its own layout and navigation rather than a narrow overlay. For the actions this target was designed for, the modal was always the compromise.

The risk is narrow. A route styled for a constrained overlay may look wrong at full viewport width. If your organisation maintains custom Shopify apps for merchandising, pricing, or fulfilment workflows, this warrants a short review rather than a project. There is a support angle too: teams that logged the new behaviour as a regression should close the ticket, because it is intended.

Role-specific impact

Use-case example

Real-world scenario

A Plus merchant runs a custom pricing app that Sidekick can open to adjust a B2B price list. The route was built for a modal roughly 600 pixels wide: a single-column form with a sticky footer. Rendered full page, the form stretches across the viewport and the footer floats far from the fields it belongs to. Nothing is broken, but the page reads as unfinished, and merchandising staff hesitate on a screen they previously used twice a week without thinking. Half a day of layout work, constraining the form to a sensible maximum width and restoring the footer, resolves it. The team verified the fallback by starting an unsaved edit elsewhere in the admin and invoking the action, which still routed through the modal.

Implementation checklist

  1. Search your extension configuration for targeting entries that include admin.app.intent.link. If there are none, no action is required.
  2. Open each declared route as a standalone page and review its layout at full viewport width.
  3. Re-check the same route inside a modal, which is what merchants with unsaved changes will continue to see.
  4. Confirm the route reads the intents request signal, which updates whenever a new intent is invoked.
  5. Confirm your tool registration runs when the route mounts, so Sidekick can call your tools while the merchant is on the page.
  6. Confirm you resolve every intent on success, failure, and cancellation.
  7. Test in a development store, then ask Sidekick to perform the action and check that schema values are substituted into the path.

FAQ

Q: Do we need to change our extension configuration?

A: No. The target, url, tools, and instructions declared in your extension config all continue to work as written. This is a presentation change on Shopify's side, not a schema change.

Q: Can we opt out and keep the overlay?

A: No. There is no flag, scope, or setting, and it applies on every API version and store. If a full page genuinely does not suit the action, the admin.app.intent.render target renders inline instead, though it requires API version 2026-04 or later.

Resources

Use extensions to surface app actions

Need guidance? Talk to Makro.