We run a news section on a Custom Code Page. It pulls ~700 articles from a headless CMS (Ghost) via its Content API and renders both the listing and the full article view inside the portal, styled to match the rest of the site. Readers never leave the portal, which is exactly what we want.
The blocker is URLs. Custom Code Pages run inside a sandboxed about:srcdoc iframe, so history.pushState() throws:
Uncaught SecurityError: Failed to execute 'pushState' on 'History': A history state object with URL '' cannot be created in a document with origin 'https://studio.pickaxe.co' and URL 'about:srcdoc'.
There is no documented navigation or postMessage API for Custom Code Pages, so there is no supported way to give an individual item its own URL.
Pickaxe support was very helpful and built us a working custom-code solution that reads and writes ?article=<slug> on the public portal URL. It works. But it relies on the iframe currently being allowed same-origin access to its parent, which is an internal implementation detail rather than a supported API, so we have no guarantee it survives future platform changes.
What we would like to see supported natively:
-
A documented routing API for Custom Code Pages — read query parameters (or a path segment) from the portal URL, and update them without a full page reload. Something like a small
pickaxe.navigate()/postMessagecontract would be enough. -
Real, indexable routes for dynamic content — so each item is rendered as its own URL that search engines can crawl and index individually, not just the listing page.
Point 2 matters most to us. Right now only /news can be indexed, which means ~700 articles are invisible in search. Creating one Pickaxe page per article would technically give separate URLs, but it means maintaining ~700 pages that never stay in sync with the CMS, so it isn’t a real option.
This is not specific to news. Anyone pulling external content into a portal — documentation, knowledge bases, product catalogs, job listings, event pages — hits the same wall as soon as they want a shareable or indexable link to a single item.
If you have run into this too, please add a comment. Happy to share our setup or a screen recording if it helps.