Present mode
A presenter console with the next page, notes, a timer and a laser — built for a room.
Present mode is not a fullscreen toggle with extra steps. The assumption is that you are standing up, the deck is on a projector you cannot read from where you stand, and the useful screen is the one in front of you.
Playback
Hit Present on the deck. The canvas goes fullscreen and scales to whatever the display is — there is no letterboxing arithmetic to do, because the canvas is a fixed 1920 × 1080 either way.
| Key | Does |
|---|---|
→ ↓ Space PgDn | Next page |
← ↑ PgUp | Previous page |
Home / End | First / last page |
O | Overview grid — every page at once, click to jump |
L | Laser pointer |
B / W | Blank the screen to black / white |
N | Speaker notes |
P | Open the presenter console in a second window |
H or ? | The shortcut list, in case this page is not to hand |
Esc | Leave |
B is the one worth remembering. When a question turns into a conversation, a
black screen puts the attention back in the room.
The presenter console
P opens a separate window meant for the laptop while the deck itself is
mirrored to the projector. It carries the current page, the page coming next,
the notes for where you are, and a timer counting from when you started.
Drag that window to your own screen and put the deck on the external display. The two stay in step.
Speaker notes
Notes are per page, and the normal way to write them is in the app — open notes
and type. They are stored next to the deck in slides/<id>/notes.json, which
means they are plain text in your repository: they diff, they review, and a
colleague's edits arrive with a git pull rather than being locked inside
somebody's browser.
Keeping them out of index.tsx is deliberate. Editing a note does not
invalidate the page module, so writing notes never re-renders the deck
underneath you.
A deck can also carry notes in its source — an array aligned index-for-index with the page array:
export const notes = [
'Open with the analyst quote from yesterday.',
undefined,
'Pause here. The chart is the hand-off.',
];Which one is read depends on where the deck is running. The dev server reads
notes.json, because that is the file the notes editor writes. A static build
has no dev endpoint to ask, so it falls back to the module's notes export —
so if you present from beem-slide build output, put the notes you need in the
source.