Hi, I have created a customer profile extension but I have the following problems:
Firstly, the extension consists of a full page extension that links to a full page detail page via the custom extension protocol described here This setup works in development (shopify app dev)
But when deployed on a staging environment it fails with the following error message:
Extension for <extension-handle> not found to navigate to
Secondly, I do not want the detail page to be linked to directly by the Shopify store admin, but setting allow_direct_linking to false does not work. (It still appears in the customize app menu)
Hey @SMemo, thanks for the details and for reaching out! Hopefully I’m understanding correctly, but this looks like a Customer Account UI extensions setup?
The “Extension for <handle> not found to navigate to” error usually pops up when the target extension isn’t present in the staging shop’s active app version or the handle doesn’t exactly match what’s deployed (case-sensitive) in the target extension’s shopify.extension.toml.
The best next step would be to double check that both extensions are included in the currently released version of your app and that the staging shop is using that release. You can run shopify app deploy, then release the app version. If your detail page is order-specific, I would also make sure the link uses extension:<handle>/customer-account.order.page.render/<orderId> (more info here), since that could be what’s causing the issue to appear, if you’re not already using it.
allow_direct_linking:false prevents merchants from adding/copying a direct link for customers, but it doesn’t hide the extension from the Checkout & Accounts editor’s Apps tab if that’s what you’re referring to. This is expected behaviour per our documentation here. If you don’t want the detail page to appear in the editor at all, the best workaround would be to consolidate a single full-page extension and use routes with relative URLs (for example, link to /details/:id) from your overview page (under the “New Pages” section in the docs there).
If you still need help with this, no worries, I’m definitely happy to dig into this. If you do reach out again, if you’re able to share the two shopify.extension.toml snippets (redact any sensitive info please!) and the exact extension: link you’re using that would be super helpful so that we can troubleshoot further. Hope this helps, let me know if I can clarify anything on my end here!
Thanks for the helpful reaction, it made me realize that allow_linking did not meant what I thought it meant. This also made me realize that shopify app dev automatically links/adds everything to the dev shop. So after adding the full page detail view in the staging env.,even though it will not be directly accessible from anywhere, I no longer get the extension for <handle> not found to navigate to message.
However, this does not give me a good UX on the admin side of things and I will convert it to a SPA like experience. (Sadly it is not easy to add react-router-dom to an extension with the Shopify Remix template)
Hey @SMemo, glad I could help and that you were able to resolve your error there!
And yeah, exactly, you;re on point here. The SPA-style approach with a single full‑page extension is what I would recommended as well if you don’t want a separate “detail” entry showing up in the editor.
If you haven’t looked into this as an option yet, instead of react-router-dom, you could use extension’s navigation helpers (Link or useNavigate) and route with simple relative paths like /details/123.
A quick flow could look like: Read the current path or params from the URL the extension receives then conditionally render your views. You could set up a tiny backend “router” that switches on pathname segments or a query parameter and then add a clear Back action that navigates to your root route to mimic SPA history behavior.
For visibility, allow_direct_linking only stops merchants from copying customer-facing links and won’t hide an extension from the Apps tab, so consolidating into one full‑page extension avoids the extra entry entirely, so I do agree that’s the best one to go.
If you’d like, feel free to share your two shopify.extension.toml snippets (with sensitive info redacted), the exact extension:/… link, and how you’re handling internal navigation, and I’m happy to take a look and help out further if needed