liteshop.json manifest.
Structure
index.html and liteshop.json must be at the root of the bundle:
.., server code, dependency folders such as node_modules, environment files,
or secrets.
References in your files can be relative, such as assets/hero.webp, or start
at the root, such as /assets/hero.webp. Both resolve from the root of the
bundle, so the default output of build tools such as Vite works without extra
configuration. Every reference must name a file in the bundle.
Files
A bundle can contain these file types:- HTML, CSS, JavaScript (
.js,.mjs), and JSON - Plain text, such as
robots.txt, and XML, such assitemap.xml - Web app manifests
- Images: JPEG, PNG, WebP, AVIF, GIF, SVG, and ICO. A PNG saved as
.icois accepted. - Fonts: WOFF, WOFF2, TTF, and OTF
Security rules
Every Site runs with a strict security policy. The policy and the validator enforce these rules:- Load scripts and stylesheets from the bundle only. Scripts from other websites are rejected.
- Put JavaScript in bundled files loaded with
<script src="...">, or in inline<script>elements. Liteshop allows each inline script by its hash, up to 100 per HTML file. - Don’t use HTML event attributes such as
onclick, orjavascript:links. UseaddEventListenerinstead. - Don’t use frames or forms that post to a server.
- Images can use
data:image/...URLs. Links to other websites,mailto:links, andtel:links work normally.
eval. When code appears to use one of these
features, validation reports a warning instead of an error, because framework
code often mentions these APIs without using them. A Site with warnings can be
published, but the blocked feature doesn’t work.
Manifest
The manifest isliteshop.json at the root of the bundle. It follows the
JSON Schema for Site
Specification version 0.1:
Declare a capability only if the Site uses it. Don’t add an empty one, such as
"forms": [].
IDs of Forms, fields, Resources, Offers, Calendar Connections, and Catalogue
Items use lowercase kebab case, such as contact-form. Keep them unchanged
across updates, because messages, bookings, and orders refer to them.
The Site Owner can change the Site’s name, languages, and time zone in
Settings > Site details, which publishes a new Deployment.
How Liteshop serves pages
Liteshop finds the Site from the request’s address and serves its live Deployment:/servesfrontend.entry.- A path ending with
/servesindex.htmlin that folder. - A path without an extension, such as
/about, servesabout.html. If onlyabout/index.htmlexists, Liteshop redirects to/about/. - A path without an extension that matches no file serves
frontend.fallback, if declared. - Any other missing file serves
frontend.notFoundwith status 404, if declared.
/assets/app.js. The /_liteshop/ path is
reserved for Liteshop, and liteshop.json itself is never served.
Checklist
Before you upload a bundle, check the following:index.htmlandliteshop.jsonare at the root.- Every reference names a file in the bundle, with matching case.
liteshop.jsonfollows the schema, and every label has text in the default language.- IDs are lowercase kebab case and unchanged from earlier versions.
- The bundle contains no secrets and loads nothing from other websites.
- An update keeps
baseDeploymentunchanged.