Vue inside Phoenix LiveView with seamless end-to-end reactivity.
Why LiveVue?
Phoenix LiveView makes it possible to create rich, interactive web apps without writing JavaScript. But once you need to do anything even slightly complex on the client-side, you’ll end up writing lots of imperative, hard-to-maintain hooks. LiveVue allows you to create hybrid apps, where part of the session state is on the server and part on the client.Use LiveVue when:
- Your hooks are starting to look like jQuery
- You have complex local state to manage
- You’d like to use the massive Vue ecosystem
- You want transitions, graphs, and rich UI interactions
- You simply love Vue
Features
End-to-end reactivity
Seamless data flow between Phoenix LiveView and Vue components with automatic synchronization
One-line install
Automated setup via Igniter installer gets you started in seconds
Server-side rendering
SSR support for Vue components with fast initial page loads and better SEO
Lazy-loading components
Load Vue components on-demand for optimal performance
Efficient props diffing
Only changed data is sent over WebSocket using JSON Patch
~VUE sigil
Alternative LiveView DSL with VS Code syntax highlighting
Phoenix Streams support
Efficient patches for list operations with stream() support
Tailwind support
Full integration with Tailwind CSS for modern styling
Slot interoperability
Use Phoenix slots seamlessly within Vue components
File upload composable
useLiveUpload() for seamless Vue integration with LiveView uploads
Form handling
useLiveForm() with server-side validation via Ecto changesets
Amazing DX
Powered by Vite for instant Hot Module Replacement
Quick example
Here’s how easy it is to use Vue components in LiveView:Get started
Installation
Install LiveVue in your Phoenix project with one command
Quick start
Build your first Vue component in minutes
Resources
- Live Examples - Interactive demos
- HexDocs - API documentation
- GitHub - Source code
- Phoenix LiveView - Official LiveView docs
LiveVue is inspired by LiveSvelte. Both projects solve the same problem with different frontend frameworks.