The Shopify App Home is no longer an iframe app. As of this week, you can ship the full-page workspace at the centre of your Shopify app as a Preact UI extension that runs inside the admin runtime, with no hosting and no server. For studios that build custom Plus apps, this is the first credible alternative to the iframe shell every Shopify app has lived inside for over a decade. The whole surface bundles with the rest of your admin extensions and ships through the same CLI deploy.
What changed
On May 27, 2026, Shopify added a
changelog entry
introducing a new extension target,
admin.app.home.render. The target lets developers build
the full-page workspace that used to be App Home as a Preact-based
admin UI extension. It is available from API version 2026-07 and is
restricted to custom-distribution apps. Public apps in the Shopify
App Store keep using the iframe model for now.
The extension runs inside the same admin extension runtime that
powers blocks, actions and modals. It speaks Polaris web components
for layout and chrome. It calls into a focused set of target APIs:
shopify.query() for the GraphQL Admin API, standard
pickers, intents, navigation and fetch() when an
external call is genuinely needed. A new shopify app
init flag spins up an extension-only template. Existing apps
can add an App Home extension via shopify app generate
extension.
The mechanical consequence is large. An App Home built this way does not need a deployable server, a domain, a TLS cert, a session token middleware, a Polaris React bundle, a CSP allowlist or a hosting platform. The same Shopify CLI deploy that ships your admin blocks ships the App Home. The merchant loads admin.shopify.com, picks the app, and the workspace renders inside the admin shell as another extension.
Why it matters for premium studios in Asia
For studios that build bespoke Shopify Plus tooling for a single merchant or a small portfolio, this is the single biggest reduction in operating surface area we have seen on the platform in years. The classic "custom Plus app" shape was always heavier than the value it delivered. A merchant wants a portal for their ops team to bulk-edit a niche piece of metafield logic. The honest cost of that on the iframe model is a Next.js app on Vercel or Render, an OAuth flow with token storage, a database for app state, a logging stack and a hosting bill that lasts as long as the merchant uses the tool.
The Preact extension model removes most of that. State that
needs to persist lives in Shopify metafields or metaobjects,
reached through the same shopify.query() the extension
already calls. The token problem evaporates because the extension
runs inside the merchant's session, so server-side proxying is no
longer the default path. The hosting bill is zero because Shopify
hosts the static bundle. The legal surface, the compliance surface
and the on-call rota all shrink with it.
That math hits harder in Asia than in the markets the platform was designed around. A Jakarta or Manila based studio shipping a custom Plus tool for a Singapore brand has historically faced a choice between charging the merchant for a hosting retainer they barely understand, or absorbing the cost into a monthly fee that is hard to justify when the tool only gets used twice a quarter. Removing the host-it-forever piece changes the math on whether a custom tool is worth building at all. A two-week internal admin workspace is suddenly a fixed-scope deliverable, not a contract that bleeds into managed services.
The trade-offs you have to call out to clients
Custom distribution only is the first one, and it is a hard wall. If the same workspace also needs to ship to the App Store, the iframe path is still the way. The two models can coexist, but they are not the same codebase. Anyone planning to start as a custom app and "graduate" to public later is signing up for a port.
The second is the API ceiling. The target API set is deliberately narrow. There is no Node back end to reach for when a third-party service needs a server-side handshake, an HMAC verification, or a long-running job. For most merchant-internal tooling this is a feature, not a limit. For anything that wires Shopify into a complex backend system, you still want a worker somewhere off-platform. The right read of the announcement is not that servers are over. It is that the App Home workspace itself is no longer where you put them.
The third is Preact, not React. The migration is small in absolute terms, the runtime is intentionally similar, but if your team has internalised React patterns that lean on Suspense, Server Components or third-party React libraries, those will need adapter work or different choices. For our own product design and build projects we treat that as a positive constraint. A constrained component model produces simpler admin tools.
What we would actually change this quarter
For studios with active Shopify Plus engagements, three concrete moves.
First, retire the "custom app on Vercel" reflex for any new internal workspace. The default starting point for a single-merchant tool is now an extension-only project, even if the brief gets bigger later. Reaching for a server is a deliberate decision, not a baseline assumption.
Second, audit your current portfolio of custom-distribution apps. Find the ones where the server exists only to render a React workspace with no real backend logic. Those are migration candidates. We expect a third to half of the small Plus tools we have shipped over the last two years to fit that pattern. Killing the host saves the merchant a monthly bill and saves us a runtime to babysit.
Third, factor this into how you price new Plus work. The discovery deliverable for a custom workspace is now "should this be an extension-only app." If the answer is yes, the engagement looks more like a scoped storefront feature than a SaaS build, and the contract should reflect that. Hourly retainers that quietly billed for keeping a hosted app alive are a less honest sale when the platform now offers a free alternative.
Public-app developers still have to wait. Custom-app studios should start porting on May 28.