Dev Server and HMR

How each JavaScript bundler handles local development and hot module replacement.

Webpack

Ships webpack-dev-server, which rebuilds and serves a bundled version of the app, supporting Hot Module Replacement, though rebuild times grow with app size since it’s still bundling on every change.

Rollup

Has no official dev server of its own — Rollup is typically used for the production build step, with a separate tool (or plugin like rollup-plugin-serve) handling local development.

Parcel

Ships a built-in dev server with Hot Module Replacement out of the box, requiring no additional configuration to get live-reloading local development.

esbuild

Ships a minimal built-in dev server, but it’s primarily used as a fast transform/bundle step within other tools’ dev servers (like Vite’s) rather than as a full-featured standalone dev experience.

Vite

Its dev server is a defining feature — since it serves native ES modules instead of a bundle, only the specific module that changed needs to be re-transformed and pushed via HMR, keeping updates fast regardless of app size.

Turbopack

Powers next dev, using its incremental engine so that only the specific functions and modules affected by a change are recomputed, aiming for HMR speed that stays fast as the app grows.

Rspack

Ships a dev server compatible with webpack’s dev server behavior and plugins, with HMR backed by Rspack’s much faster Rust-based rebuild step.

Bun

Ships a built-in dev server with hot reloading for supported frameworks, integrated directly into the Bun runtime rather than configured as a separate package.

Rolldown

Has no standalone dev server of its own — it’s consumed through Vite’s dev server, where it’s positioned to eventually replace Rollup for the production build step while Vite’s own native-ESM dev server handles development.