Theme quality bar
The checklist reviewers actually use, what triggers changes requested, and listing-claim accuracy.
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/langfromrequest. - Sound Arabic typography with comfortable line height; no
letter-spacingon Arabic. - Every string through
twith complete Arabic locale files; English, if present, complete too. - Prices through the
moneyfilter 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.jsonis 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
__requirestruthfully.
Mobile and performance#
- The page reads and works at 360 px width first; touch targets at least 44 px.
- Images through
img_urlat an appropriate width withsrcset/sizeswhere needed, andloading="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.jsonwith 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.