# Vue Integration Milkdown provides first-class Vue support with dedicated packages and hooks for seamless integration. You can choose between Crepe, our feature-rich WYSIWYG editor, or the core Milkdown editor for more customization options. > Vue version should be 3.x ## Using Crepe --- Crepe is a powerful, feature-rich Markdown editor built on top of Milkdown that provides a more user-friendly editing experience. ### Installation ```bash npm install @milkdown/crepe @milkdown/vue @milkdown/kit ``` ### Implementation ```vue ``` ### Online Demo ::iframe{src="https://stackblitz.com/github/Milkdown/examples/tree/main/vue-crepe"} ## Using Milkdown --- For more advanced use cases or when you need full control over the editor's configuration, you can use the core Milkdown editor directly. ### Install Dependencies ```bash npm install @milkdown/vue @milkdown/kit @milkdown/theme-nord ``` ### Basic Usage Here's a minimal example to get started: ```vue ``` ::iframe{src="https://stackblitz.com/github/Milkdown/examples/tree/main/vue-commonmark"} ## Advanced Usage --- ### Accessing Editor Instance The `useInstance()` hook can only be used within components that are children of `MilkdownProvider`. It returns a tuple containing a loading state and a getter function to access the editor instance. ```vue ``` ### Best Practices 1. **Component Structure** - Keep the editor component separate from business logic - Wrap the editor with `MilkdownProvider` at the highest necessary level - Use TypeScript for better type safety 2. **Performance** - Memoize the editor configuration if it's complex - Use Vue's `shallowRef` for editor instance if needed - Avoid unnecessary re-renders of the editor ### Common Use Cases **Form Integration** ```vue ``` **Auto-save** ```vue ``` ## More Examples --- - [Examples Repository](https://github.com/Milkdown/examples)