Skip to main content

Do I need separate routes per theme?

No. One route tree; skins via templateEntry / StorefrontThemeProvider / getStorefrontSkin. Homes use per-theme *Template.tsx; browse/detail share skins.

Why does preview still look like my applied theme?

Preview must also set data-storefront-theme chrome. Use /?__theme_preview=<themeId> while signed into admin — not as an anonymous visitor.

Why did my SEO change after Apply?

It should not. Apply restores look presets only; SEO/product/content keys are global (seo_*, page_about_seo_*, articles SEO). Re-check Brand & Experience SEO fields. APIs exist, but gallery upload/export/uninstall UI is currently hidden (SHOW_THEME_PACKAGE_IO_UI = false). Treat as roadmap in the UI. Uploaded zips are theme.json + config.json only — they cannot add new React templates; they must target a built-in templateEntry. Built-in ids (streamly, streamlix, streamtube) cannot be overwritten. Install never auto-Applies.

Streamlix looks square but Streamly should be rounded — is that a bug?

No — intentional isolation. Streamlix uses sharp: true + buttonChrome: "flat" and CSS scoped to html[data-storefront-theme="streamlix"]. Streamly keeps soft radius + bevel CTAs.

Does StreamTube support light mode?

Yes as a capability (supportsLightMode: true in theme.json). Streamly and Streamlix set it false. Drive admin UI from capabilities, not hardcoded ids.