How it works

Nuxt has a powerful hooking system to extend internals. Default bundler (@nuxt/webpack) can be replaced by a nuxt module. nuxt-vite replaces webpack by a similar interface to use vite instead of webpack.

Client-side modules are loaded on demand using vite middleware.

Server-side bundle is being created by another vite instance and written to filesystem and passed using hooks to nuxt server-renderer. Current approach is not the most efficient way due to usage of filesystem, extra build and lack of lazy loading, yet much faster than webpack builds. You can opt-out of SSR build using nuxt dev --spa.