# Presentation Mode

- Human documentation: [https://docs.univer.ai/guides/slides/features/core/presentation-mode](https://docs.univer.ai/guides/slides/features/core/presentation-mode)

- Agent Markdown: [https://docs.univer.ai/guides/slides/features/core/presentation-mode.md](https://docs.univer.ai/guides/slides/features/core/presentation-mode.md)

- Requested language: `en-US`

- Content language: `en-US`

- Documentation version: `1.0.0-rc.0`

- Source: [slides/features/core/presentation-mode.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/slides/features/core/presentation-mode.mdx)

---

`UniverSlidesUIPlugin` registers presentation playback for the current deck. Playback follows slide order, skips slides marked as skipped, and applies the resolved transition for each move.

## Start playback

```ts
const presentation = univerAPI.getActivePresentation()

if (presentation) {
  await univerAPI.executeCommand('slide.operation.presentation.start', {
    unitId: presentation.getId(),
    fromBeginning: true,
  })
}
```

Set `fromBeginning: false` to start from the active slide, or pass `startSlideId` for an explicit visible slide.

## Navigate and stop

```ts
await univerAPI.executeCommand('slide.operation.presentation.next')
await univerAPI.executeCommand('slide.operation.presentation.previous')

await univerAPI.executeCommand('slide.operation.presentation.go-to-slide', {
  slideId: 'summary-slide',
})

await univerAPI.executeCommand('slide.operation.presentation.stop')
```

The next operation stops playback after the final visible slide. Previous returns `false` on the first slide.

## Browser behavior

Fullscreen and dual-screen presentation commands depend on browser APIs. Open audience windows directly from a user gesture so popup blockers do not reject them. A viewer-only Slides UI can still run presentation mode when the UI plugin is registered with editing disabled.
