Skip to main content

Using Vue in VitePress

VitePress is built on Vue 3, giving you access to Vue’s complete feature set including Composition API, reactivity system, and script setup syntax.

Script Setup

Use <script setup> in markdown files and theme components:

Reactivity System

Refs and Reactive

Computed Properties

Watchers

Reference: /home/daytona/workspace/source/src/client/theme-default/composables/sidebar.ts:88

VitePress Composables

useData

Access site, page, and theme data:
Reference: /home/daytona/workspace/source/src/client/app/data.ts:116

useRoute and useRouter

Reference: /home/daytona/workspace/source/src/client/app/router.ts:248

Router API

Reference: /home/daytona/workspace/source/src/client/app/router.ts:16

Custom Composables

Create reusable composables for VitePress:
composables/useActiveAnchor.ts
Reference: /home/daytona/workspace/source/src/client/theme-default/composables/outline.ts:80

Lifecycle Hooks

OnMounted

OnUnmounted

Reference: /home/daytona/workspace/source/src/client/theme-default/composables/outline.ts:100

OnUpdated

Provide/Inject

Share data across components:
Theme.vue
Component.vue
Reference: /home/daytona/workspace/source/src/client/app/data.ts:23

Slots

Use slots in custom components:
Card.vue
Usage in markdown:

Directives

Built-in Directives

Custom Directives

directives/focus.ts

Async Components

Theme Components Example

Example from VitePress default theme:
sidebar.ts
Reference: /home/daytona/workspace/source/src/client/theme-default/composables/sidebar.ts:47

Performance Optimization

ShallowRef/ShallowReactive

Readonly

Reference: /home/daytona/workspace/source/src/client/app/data.ts:59

MarkRaw

Reference: /home/daytona/workspace/source/src/client/app/router.ts:111

TypeScript Support

Typed Composables

Component Props

MyComponent.vue
Make sure your components are SSR-compatible. See SSR Compatibility for details.