---
name: building-html-canvases
description: >
Author a PostHog canvas with semantic HTML, CSS, and direct browser APIs — documents, articles,
generative graphics, 2D canvas and WebGL experiences, and focused experiments where React
components add no useful structure. Use after building-canvases has routed a canvas request to a
plain-HTML/browser-API implementation. Covers the thin component wrapper the current runtime
requires, styling and theming without Quill, drawing surfaces, and animation/cleanup patterns.
---
# Building HTML canvases
Some canvases are documents or graphics programs, not applications: a written report, a diagram,
a generative-art piece, a WebGL scene. For these, semantic HTML, CSS, and direct browser APIs are
the right tools — don't force Quill components or React state onto a static page.
## The wrapper the current runtime requires
Every canvas keeps `src/canvas.tsx` as its mounted React entry component (default export, no
props). Keep the React layer as a thin shell and write the
experience in HTML/CSS/browser APIs inside it:
- A document is JSX that is effectively semantic HTML — ``, headings, lists, tables,
figures — with a `