> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streamly.watch/llms.txt
> Use this file to discover all available pages before exploring further.

# Themes / Branding FAQ

> Questions about Streamly themes, presets, preview, isolation, zip packages, and Brand & Experience.

## 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.

## Can I upload a custom theme zip in the gallery?

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.

## Related

* [Themes](/admin-dashboard/themes)
* [Brand Presets](/viewer/brand-presets)
* [Themes Package System](/technical/themes-package-system)
