Share an Eleventy build

Eleventy's output is exactly what you told it to emit — usually _site/, a tree of HTML with whatever assets your templates reference. That is a good property right up to the moment you want someone else to look at it, at which point you have a folder and they have an email client.

Build

npx @11ty/eleventy         # → _site/

If your templates use absolute asset paths, route them through the url filter so a non-root location still resolves:

<link rel="stylesheet" href="{{ '/css/main.css' | url }}">

Publish _site/

Drag _site/ (or a zip of it) into the app:

  • index.html becomes the report body.
  • Pages, stylesheets, scripts, fonts and images upload as assets, and their references are rewritten to the uploaded copies.
  • Scripts run inside a sandboxed iframe (allow-scripts, no allow-same-origin), so client-side search and interactive components work.

A preview URL with no host, no deploy, nothing to clean up afterwards.

Per-PR previews

npx @11ty/eleventy

curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html _site/index.html \
        --arg title "Preview — $GITHUB_HEAD_REF" '{title: $title, html: $html}')"

One report id per branch: the link in the PR description never changes, and every push appends a revision.

What review adds

  • Anchored threads on the rendered copy — the reason to send a build rather than a diff. See commenting on HTML.
  • Revisions, so "applied" is checkable rather than claimed.
  • Access per report — private, team, domain-gated, or named reviewers, so unpublished content stays unpublished. See the sharing model.

Limits

  • Entry HTML: 5 MB. Assets: 25 MB per file, 250 MB and 500 files total. Publish the section under review rather than a large archive.
  • 60 requests/minute per token.

Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision history.

Publish a site preview →

Related