Keys

← →Previous / next slide
↑ ↓ · SpaceScroll an export, or step a prototype
, .Step the prototype back / forward
RRestart the prototype
ESwap live prototype and static export
1 – 9 · [ ]Pick a reference image
SAuto-sync references
FFullscreen
? · EscOpen / close this

Live prototypes

Click the phone once to hand mouse and keyboard to Figma. Click Return keys to deck under the phone to take them back — the deck's own keys are dead while Figma holds focus.

Share the prototype as Anyone with the link, can view, or it renders a permission error on any machine that isn't signed in to your file.

Syncing the right pane by node uses Figma's Embed API: register this page's origin on an OAuth app in Figma, put the client id in DECK.figma.clientId, stay signed in, and serve the file over http (python3 -m http.server) — the API sends nothing to a file:// page. Without that the prototype still runs; you just pick references yourself. Figma emits no scroll events, so inside a prototype sync follows frame changes rather than scroll position.

Keep a static export on every slide that carries a prototype. Venue wifi fails; E doesn't.

Canva on the right

Put the design's view link in DECK.canva.url and give each panel a page number. Share the design as Anyone with the link, can view first, or the frame renders a sign-in wall.

Canva exposes no API for jumping pages, so each page change reloads the iframe at ?embed#N — a beat of delay, debounced so scrolling doesn't thrash it. Use page cues as a handful of anchors rather than one per scroll tick. You can also click Canva's own arrows inside the frame; the deck won't fight you, it just won't know you moved.