Skip to content

Theme quality bar

The checklist reviewers actually use, what triggers changes requested, and listing-claim accuracy.

Updated 2 Sept 20262 min read
On this page

This page is for anyone preparing a theme submission. Passing theme validation is necessary, not sufficient; the reviewer also judges design, behavior on realistic data, and the accuracy of what the listing claims. This is the list they walk through.

The automated pass first#

  • The bundle passes the validator and renders in the sandbox on the merchant runtime without error.
  • No external requests from the bundle: no fonts, images or styles from other hosts; everything is under assets/ or comes from the platform.
  • No section wrapper markers in the output.

Language and direction#

  • RTL first on every page, with dir/lang from request.
  • Sound Arabic typography with comfortable line height; no letter-spacing on Arabic.
  • Every string through t with complete Arabic locale files; English, if present, complete too.
  • Prices through the money filter and never flipping inside sentences.

Templates and data#

  • Home, category, product and cart all work on the sandbox data (variants, sold-out products, empty categories, long descriptions).
  • Sold-out, low-stock (available_quantity) and savings (savings) states render from platform data, never from static text.
  • A product without an image and a category without an image show an honest fallback (the first-letter tile for categories is mandatory).
  • Pagination works and preserves the search query.
  • JSON-LD structured data is correct for products and lists.

Sections#

  • An unconfigured section leaves no empty stripe.
  • Bodies are side-effect-free (they render twice).
  • showcase.json is honest: no fabricated urgency, social proof or invented numbers reach the first install; it validates against rich, thin and empty catalogs.
  • Product-dependent sections declare __requires truthfully.

Mobile and performance#

  • The page reads and works at 360 px width first; touch targets at least 44 px.
  • Images through img_url at an appropriate width with srcset/sizes where needed, and loading="lazy" below the fold.
  • No hidden content except behind data-dukkan-reveal.
  • CSS within limits and never blocking scroll.

Interactivity#

  • Add to cart, the badge and quantity only through data-dukkan-* attributes.
  • Dark mode, if declared, has a complete palette under [data-scheme="dark"].
  • Links work without JavaScript (quick view sits on a real link).

Listing accuracy#

  • Every declared feature highlight actually exists in the bundle (the reviewer verifies).
  • Screenshots are of this theme on Arabic data, with no misleading composition.
  • The name and description never imply the theme is from Dukkan or officially endorsed.
  • Release notes describe the actual change.

What triggers changes requested#

  • Any template breaking on sandbox data, or an empty page.
  • Arabic text hardcoded in templates, a hardcoded direction, or flipping numbers.
  • External requests, an attempt to work around the JavaScript ban, or money math in Liquid.
  • A claimed feature that does not exist, or screenshots that do not match the theme.
  • A showcase.json with fabricated content reaching the install.

The submission comes back to you with a reason and a note on the review tab; fix, resubmit, and the clock restarts. See Publish a theme.