Vite’s dev server does not bundle, which is the whole idea

A bundler in development builds the whole graph before serving anything, and a native ESM server builds nothing until the browser asks for a specific file.

$ npx webpack serve
# ...
compiled successfully in 38402 ms

$ npx vite
  vite v2.7.10 dev server running at:
  > Local: http://localhost:3000/

  ready in 412ms

# and a change to one component:
#   webpack: rebuild the affected graph, 2-4s
#   vite:    invalidate one module, ~30ms

The start time is constant rather than proportional to the project, because the server transforms files on request and the browser drives which ones. Hot updates are fast for the same reason — one module is invalidated and re-requested rather than a chunk being rebuilt. The cost is that development and production use different mechanisms entirely, which is the trade-off the next few notes are about.