Queek docs

Theme requirements

What gets a theme rejected, grouped by area.

npm run check enforces every rule here; the Checks reference lists them all.

Data

  • Never fetch. No fetch, no axios, no direct API calls — read the store through the kit's hooks (theme/core-boundary).
  • Never touch the SDK. No client SDK and no kit SDK imports (theme/core-boundary).
  • Never write to the kit's stores. No setting the user, clearing carts or switching delivery modes (theme/core-boundary).

Components

  • The logo links home. It is a link, never a button — a button cannot be crawled or middle-clicked (theme/code-quality).
  • Menu links come from menuItemToHref, which resolves the vendor's own domain. A hand-built URL breaks on at least one of them (theme/code-quality).
  • A component that uses hooks starts with 'use client' (theme/code-quality).
  • A vendor's facts — tagline, address, phone, email, description — render nothing when empty. Never fall back to your own words (theme/vendor-facts).

Framework

  • No next/* imports. Links and navigation come from @usequeek/theme-kit/navigation (theme/core-boundary).
  • Images use <Image /> from the kit, never a raw <img> (theme/code-quality).
  • Fonts ship as files inside the theme, never fetched from Google (theme/fonts-self-hosted).
  • renderMarkdown returns elements, so render them as children — never through dangerouslySetInnerHTML, which prints [object Object] (theme/markdown-html).

Attribution

  • Every footer renders <PoweredByQueek /> from the kit, in the theme's own placement and spacing (theme/footer-shows-powered-by).

Content

  • Products and photos are your own. The starter's stand-ins must go, and no real brand's photography (theme/placeholder-content).
  • Template copy names no store, no place, no price, no offer and no promise (theme/template-copy).

The wording of each rule is in THEME.md — see its component rules and attribution.

On this page