Skip to main content
3 min read

Validate & build

Every app gets the same safety check before you share it: does every page render, are all the assets declared, do the inputs work. You can run that check right in Studio, or from the command line.

In Glance Dev Studio​

Open your app in Glance Dev Studio and click Validate at the top. It renders every page and runs the exact check publishing does, then shows the result in a pill at the top of the window, with any details in the message console under the panel.

The Validate result reading 'Looks good, 1 page draws cleanly'

When it passes, click Validate & Submit to open a pull request (see Check it and publish). When it fails, the console names the page and the reason, the same messages decoded below.

From the command line​

Prefer the terminal? The same safety check runs with:

gdn validate apps/my-app
# prints PASS my-app (1 page)

# or check every app at once:
gdn validate --all

Validation renders every page: if a page errors, references an undeclared asset, or times out, you'll hear about it here rather than on the panel.

Common failures, decoded​

The message says…It means…
manifest lists page 'x' but app.star has no function for it. Add: def x(c, ctx):Your pages: list and your function names don't match, add the function (or fix the spelling).
font '4x6' not found. Available: …Typo in the font name; the message lists every valid one. Or run gdn fonts.
asset 'x.png' not declared in manifest assetsYou drew an image without listing it under assets: in the manifest.
asset not found (looked in app folder and assets/)It's declared, but the file isn't next to app.star (or in assets/).
unknown color 'lime'Not a named color, the message lists them all; hex like "#88ff00" always works.

Fix, save, and run again; validation is fast.

Build​

To produce the final artifacts (a PNG per page plus the panel's compressed .bin):

gdn build apps/my-app --input zip=10001

Output lands in apps/my-app/build/. You rarely need this by hand (the render service does it), but it's handy for checking exact output.

Render one page​

gdn render apps/my-app --page 1 --input zip=90210 --out page1.png

Great for grabbing a screenshot of a single page with specific inputs; it's how every render in these docs was made.

Next​

Once your app validates, it's ready to share: