Slidev workflow

Build Slidev, keep its assets together, publish one stable link

Use Slidesfly after Slidev has produced a browser-ready static build and you want a deck-specific reader URL with same-URL updates or controlled sharing. Zip the contents of dist so index.html is at the archive root, publish the multi-file artifact, and verify it inside Slidesfly’s sandboxed content-domain reader.

Last tested: July 28, 202610 minute workflow

When this publishing path fits

Use this workflow when Slidev is already your authoring tool and you want a deck-specific reader URL, later version updates, and account-managed sharing controls. If you prefer to own a general-purpose deployment project, Slidev also documents GitHub Pages, Netlify, Vercel, Zephyr Cloud, and Docker. This path is not suitable for unbuilt Slidev source, server-side code, or users who need an editor rather than a publishing layer.

Build and package the deck

  1. Build for static hosting

    Run Slidev's build command from the presentation project.
  2. Check the output locally

    Confirm dist/index.html exists and that relative assets remain insidedist.
  3. Zip the contents, not the folder

    Slidesfly requires index.html at the archive root.
pnpm slidev build
test -f dist/index.html
cd dist
zip -r ../slidev-deck.zip .
cd ..

Publish the archive

slidesfly login --json
slidesfly publish ./slidev-deck.zip --title "Slidev field guide" --visibility unlisted --json

A successful publish returns the generated deck ID and reader URL:

{
  "ok": true,
  "data": {
    "deck_id": "YOUR_GENERATED_DECK_ID",
    "url": "https://slidesfly.xyz/d/YOUR_GENERATED_DECK_ID",
    "visibility": "unlisted",
    "anonymous": false
  }
}

To replace the content without changing the reader URL, publish a newly built archive with --id YOUR_DECK_ID.

Public indexing, private access, password protection, allowlists, expiry, deletion, and quarantine remain separate policies enforced around the sandboxed reader.

Compatibility limits to test

AreaExpected behaviorTest before sharing
AssetsRelative local files inside the zip are supported.Fonts, images, code highlighting, and theme CSS.
StorageThe deck runs in an opaque-origin sandbox.Remove code that requires localStorage, IndexedDB, or cookies.
NavigationSlidev's in-deck controls remain primary.Keyboard, pointer, touch, and fullscreen.
Remote codeRemote scripts in multi-file content are rejected.Bundle all runtime code into the build.

Publishing failures and recovery

ErrorRecovery
AUTH_REQUIREDRun the official login flow, then retry the zip publish.
BILLING_NOT_ENABLEDVerify Pricing; if checkout is unavailable, use another static host.
INVALID_HTMLRebuild Slidev and confirm dist/index.html exists at the archive root.
MALICIOUS_CONTENTBundle remote scripts locally or appeal a false positive through Report.

Framework reference: Slidev hosting documentation.