The canvas exports through two paths. Server exports render frames headlessly and stream a file back: PPTX, PDF, PNG, JPG. Client exports generate code on the fly: HTML, React, and a portable prompt. Both live behind the Export button in the right sidebar.Documentation Index
Fetch the complete documentation index at: https://canvas-docs.vibeflow.ai/llms.txt
Use this file to discover all available pages before exploring further.
Picking a format
| Format | What you get | Best for | Pipeline |
|---|---|---|---|
| PPTX | Real PowerPoint file. Editable text boxes, shapes, lists. | Decks shared with stakeholders. Anyone with PowerPoint or Keynote can edit. | Server |
| Vector PDF, one frame per page. | Print, formal share, version pinning. | Server | |
| PNG | Lossless raster, one file per frame. Multi-frame downloads as .zip. | Social, ads, thumbnails. | Server |
| JPG | Smaller raster, one file per frame. Multi-frame as .zip. | Email attachments, social where size matters. | Server |
| HTML | A self-contained .html file per frame, or a .zip for multiple. | Drop into emails, blogs, or static sites. | Client |
| React | A .tsx file per frame, or a zipped React + Tailwind project for multiple. | Pull into an existing codebase. | Client |
| Prompt | A clipboard prompt that rebuilds this frame in any other AI tool. | Handing off to a different agent or human. | Client |
<svg> inside a frame and use the right sidebar Download SVG action.
Per-frame vs whole canvas
Both server and client exports support selection-aware export:- Nothing selected. The export covers the whole canvas. Multi-frame outputs come back as a
.zip. - One frame selected. The export covers that frame only. Single file.
- Multiple frames selected. Multi-frame export, zipped if more than one file.
Server exports (PPTX / PDF / PNG / JPG)
When you trigger a server export the backend:- Renders each selected frame at its true size, headlessly.
- Walks the iframe DOM, mapping computed styles into the export format’s primitives.
- Packages the output, uploads it to R2, and streams a signed URL to your browser.
PPTX walks the DOM, not the pixels.
<h1> becomes an editable PowerPoint title. <ul> becomes a real bulleted list. <img> is embedded as a real image. CSS gradients and filters that don’t translate cleanly are pre-rendered as PNG and embedded.Common gotchas
A PPTX export wraps text on a different line than the browser
A PPTX export wraps text on a different line than the browser
PowerPoint uses its own text-shaping engine, so titles that fit exactly in Chrome can wrap onto two lines in PowerPoint. Ask the agent: “Add 4 to 8 pixels of horizontal slack to tight text boxes.” That almost always fixes it.
A gradient or filter looks different in the export
A gradient or filter looks different in the export
A handful of CSS effects don’t translate. The exporter pre-renders them as PNG. If a specific section is sensitive, ask the agent: “Pre-render this hero as a single image so the export is pixel-exact.”
My fonts changed in PowerPoint
My fonts changed in PowerPoint
The deck used a webfont the recipient doesn’t have. PowerPoint substituted. Ask the agent: “Switch the deck typography to fonts that ship with Office.” Calibri, Aptos, Arial, Georgia, Cambria, and Consolas all ship with both Mac and Windows Office.
PDF page breaks split a section
PDF page breaks split a section
PDF is one frame per page. If you want one section per page, generate them as separate frames.
Client exports (HTML / React / Prompt)
These run in your browser and never touch the server.HTML
A standalone.html document per frame. Inline styles, no JavaScript, no runtime. Open it in any browser, paste it into an email, drop it into a static site.
React
Two flavors, picked by selection size:- One frame. A single
.tsxfile with a default-exported component. Tailwind classes. Self-contained. - Multiple frames. A
.zipwith a minimal Vite + React + Tailwind project: every frame is a component, plus a rootApp.tsxthat routes between them.
Prompt
The Prompt export copies a clipboard-ready prompt that describes the frame in enough detail for any other AI tool (ChatGPT, Claude, v0) to rebuild it. Useful for cross-agent handoff or for archiving a frame in plain text.What’s missing today
We are upfront about gaps:- Whole-canvas single HTML file. Today HTML exports are one file per frame. A single-page scrollable HTML export is on the roadmap.
- Direct Figma export. Not shipped. Today you can export PNGs and import them into Figma as flattened images.
- Custom export presets (e.g. “always export at 2x for social”). Today you pick format and selection per export.
Next
Promote to app
Turn frames into a deployed Vite + React app on your domain.
MCP exports
Trigger the same exports from your editor via the MCP.