Skip to content

feat(engine): add experimental canvas renderer using drawElementImage API#198

Closed
miguel-heygen wants to merge 1 commit into
fix/templates-lint-errorsfrom
feat/experimental-canvas-renderer
Closed

feat(engine): add experimental canvas renderer using drawElementImage API#198
miguel-heygen wants to merge 1 commit into
fix/templates-lint-errorsfrom
feat/experimental-canvas-renderer

Conversation

@miguel-heygen

Copy link
Copy Markdown
Collaborator

What

Brief description of the change.

Why

Why is this change needed?

How

How was this implemented? Any notable design decisions?

Test plan

How was this tested?

  • Unit tests added/updated
  • Manual testing performed
  • Documentation updated (if applicable)

… API

Adds a new `--experimental-canvas` flag that uses Chrome's experimental
CanvasDrawElement API to composite DOM directly onto a <canvas> before
capturing screenshots. Benchmarks show ~25% faster frame capture (33.6ms
vs 44.7ms/frame at 1920x1080) by skipping full page compositing.

Requires Chrome 146+ with --enable-blink-features=CanvasDrawElement.
Gracefully degrades to standard screenshot capture when the API is
unavailable. Injects a <canvas layoutsubtree> wrapper at runtime via
page.evaluate after the composition loads.

Changes:
- engine: Add "canvas" CaptureMode, canvasDrawElementCapture(), canvas
  wrapper injection in initializeSession
- producer: Wire experimentalCanvas through RenderConfig
- cli: Add --experimental-canvas flag to render command

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@miguel-heygen miguel-heygen deleted the feat/experimental-canvas-renderer branch April 6, 2026 23:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant