slidevjs/slidev · error · Error

[slidev] theme "${name}" requires Slidev version range "${en

Error message

[slidev] theme "${name}" requires Slidev version range "${engines.slidev}" but found "${version}"

What it means

Thrown by getThemeMeta when a Slidev theme's package.json declares an engines.slidev semver range that the currently running Slidev version does not satisfy. The check uses satisfies(version, engines.slidev, { includePrerelease: true }) and fires only when engines.slidev is present and non-empty. It protects against loading a theme built against an incompatible Slidev API.

Source

Thrown at packages/slidev/node/integrations/themes.ts:28

  'none': '',
  'default': '@slidev/theme-default',
  'seriph': '@slidev/theme-seriph',
  'apple-basic': '@slidev/theme-apple-basic',
  'shibainu': '@slidev/theme-shibainu',
  'bricks': '@slidev/theme-bricks',
}

export const resolveTheme = createResolver('theme', officialThemes)

export async function getThemeMeta(name: string, root: string) {
  const path = join(root, 'package.json')
  if (!existsSync(path))
    return {}

  const { slidev = {}, engines = {} } = JSON.parse(await fs.readFile(path, 'utf-8'))

  if (engines.slidev && !satisfies(version, engines.slidev, { includePrerelease: true }))
    throw new Error(`[slidev] theme "${name}" requires Slidev version range "${engines.slidev}" but found "${version}"`)

  return slidev as SlidevThemeMeta
}

View on GitHub (pinned to 0d798ace58)

Solutions

  1. Upgrade Slidev in the project to a version inside the range printed in engines.slidev (e.g. npm i -D @slidev/cli@latest).
  2. If you cannot upgrade Slidev, downgrade the theme to a release whose engines.slidev accepts your current version.
  3. Verify the theme package.json engines.slidev value and your installed version with npm ls @slidev/cli, then align them.
  4. For a local/private theme, relax or correct the engines.slidev range in its package.json to match the deployed Slidev.

Example fix

// before: theme package.json
{
  "name": "@my/slidev-theme",
  "engines": { "slidev": ">=0.48.0" }
}
// running Slidev is 0.47.x -> throws

// after: align either side
// option A - upgrade Slidev
npm i -D @slidev/cli@latest
// option B - widen theme range
{
  "name": "@my/slidev-theme",
  "engines": { "slidev": ">=0.47.0" }
}
Defensive patterns

Strategy: validation

Validate before calling

import { satisfies } from 'semver'
import { version as slidevVersion } from '@slidev/cli/package.json'

function themeCompatible(engines: { slidev?: string } | undefined): boolean {
  if (!engines?.slidev) return true
  return satisfies(slidevVersion, engines.slidev, { includePrerelease: true })
}

// before applying a theme:
const themePkg = require.resolve('<theme>/package.json')
if (!themeCompatible(require(themePkg).engines)) {
  throw new Error('Theme incompatible; upgrade Slidev or the theme first.')
}

Type guard

function hasEnginesSlidev(pkg: unknown): pkg is { engines: { slidev: string } } {
  return !!pkg
    && typeof pkg === 'object'
    && !!(pkg as any).engines
    && typeof (pkg as any).engines.slidev === 'string'
}

Try / catch

try {
  await getThemeMeta(themeName, themeRoot)
} catch (e) {
  if (e instanceof Error && e.message.startsWith('[slidev] theme ')) {
    // surface a guided upgrade prompt to the user
    throw new Error('Theme version mismatch. Upgrade @slidev/cli or pick another theme.')
  }
  throw e
}

Prevention

When it happens

Trigger: Calling getThemeMeta(name, root) where the theme's package.json contains an engines.slidev field and the running Slidev version falls outside that range. Typical with a theme authored for Slidev 0.4x loaded under Slidev 0.5x, or a new theme under an old Slidev install.

Common situations: Upgrading Slidev but not the theme (or vice versa); mixing a globally-installed Slidev with a project-local theme that pins a different range; CI using a locked older Slidev while the theme's latest release bumped its engines.slidev requirement.

Related errors


AI-assisted analysis of slidevjs/slidev@0d798ace58 (2026-08-12). Data as JSON: /api/errors/b664aad796f253af. Report an issue: GitHub.