When this path fits—and when it does not
Use this path for an already built Reveal.js deck when deck-specific viewing, same-URL updates, or controlled sharing matters. Use a general static host when you need arbitrary server behavior, custom deployment infrastructure, or control beyond a presentation reader. Slidesfly does not generate or edit Reveal.js source.
Use local assets
Slidesfly rejects remote script references in uploaded deck content. Keep the Reveal.js runtime and any plugins inside the presentation directory. A typical output looks like:
reveal-deck/
├── index.html
├── dist/
│ ├── reveal.css
│ ├── reveal.js
│ └── theme/
├── plugin/
└── assets/Package the deck
Open index.html locally
Check horizontal and vertical navigation, code blocks, images, speaker-independent playback, and theme files.Remove remote scripts
Download and reference the required runtime locally. Keep every relative path inside the deck directory.Create a root-level archive
Run the zip command from inside the deck directory soindex.htmlis not nested under another folder.
cd reveal-deck
zip -r ../reveal-deck.zip .
cd ..Publish and update
slidesfly login --json
slidesfly publish ./reveal-deck.zip --title "Reveal.js product review" --json
# Later: keep the same reader URL
slidesfly publish ./reveal-deck-v2.zip --id YOUR_DECK_ID --jsonA successful publish returns the generated deck ID and stable reader URL:
{
"ok": true,
"data": {
"deck_id": "YOUR_GENERATED_DECK_ID",
"url": "https://slidesfly.xyz/d/YOUR_GENERATED_DECK_ID",
"visibility": "unlisted",
"anonymous": false
}
}The example is unlisted. Public indexing, private access, password protection, allowlists, expiry, deletion, and quarantine remain separate policies enforced around the sandboxed reader.
Reader compatibility checklist
| Check | Why |
|---|---|
| Arrow keys and touch | Confirm both the deck runtime and outer reader behave predictably. |
| Fullscreen | The Slidesfly reader uses F for shell fullscreen. |
| Plugins | Syntax highlighting and Markdown plugins must be included locally. |
| Browser storage | The opaque-origin iframe cannot provide normal localStorage or cookies. |
| External links | Popups work, but top-level navigation is not granted to the deck iframe. |
Publishing failures and recovery
| Error | Recovery |
|---|---|
AUTH_REQUIRED | Run the official login flow, then retry the zip publish. |
BILLING_NOT_ENABLED | Do not imply checkout is available; verify Pricing and use another host. |
MALICIOUS_CONTENT | Remove remote scripts or appeal a false positive through the report route. |
QUOTA_EXCEEDED | Reduce archive size, remove unused assets, or use an eligible plan. |
Framework reference: Reveal.js installation documentation.