Vite logo

Vite

Next Generation Frontend Tooling. Instant server start and lightning-fast HMR.

npm install vite
76.8K38.9M/weekv7.2.42.16 MBMIT606 issues
Last updated: 2025-11-20
Star history chart for vitejs/vite

TL;DR

A build tool that aims to provide a faster and leaner development experience for modern web projects.

Consists of a dev server that serves source files over native ES modules and a build command that bundles code with Rollup.

Why Vite?

Vite (French for "quick") addresses the major performance bottlenecks of traditional bundlers like Webpack. Instead of bundling your entire application before starting the development server, Vite leverages native ES Modules (ESM) in the browser to serve files on demand.

  • Instant Server Start: On-demand file serving means the server starts immediately, regardless of your project size.
  • Lightning Fast HMR: Hot Module Replacement happens precisely at the modified module level without reloading the whole page or rebundling unrelated modules.
  • Rich Features: Out-of-the-box support for TypeScript, JSX, CSS Modules, and .env files without complex configuration.
  • Optimized Build: Uses pre-configured Rollup for production builds, ensuring highly optimized static assets with zero configuration.
  • Universal Plugins: Extends Rollup's plugin interface, allowing many existing Rollup plugins to work with Vite.

Code Snippet

A standard vite.config.ts configuration for a React application using TypeScript.

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
    },
  },
  server: {
    port: 3000,
    open: true,
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true,
      }
    }
  },
  build: {
    sourcemap: false,
    rollupOptions: {
      output: {
        manualChunks: {
          vendor: ['react', 'react-dom'],
        },
      },
    },
  },
})

This configuration enables the React Fast Refresh plugin, sets up a path alias for clean imports (e.g., @/components), configures a development proxy to avoid CORS issues with backend APIs, and splits the vendor chunk for better caching in production.

Pros and Cons

No library is perfect; understanding the trade-offs is key to selecting the right tool.

Pros

  • Performance: The development experience is significantly faster than Webpack-based setups, especially for cold starts.
  • Configuration: Defaults are sensible for 99% of use cases. You rarely need to touch the config file for a standard React app.
  • Ecosystem: Rapidly growing plugin ecosystem (vite-plugin-*) and first-class support from almost all modern frameworks.

Cons

  • Dev/Prod Disparity: Development uses esbuild (for speed) while Production uses Rollup (for code stability). Rare edge cases can behave differently between the two.
  • Type Checking: Vite only transpiles TypeScript; it does not perform type checking. You must run tsc --noEmit in a separate process or pre-commit hook.
  • Not a Framework: Vite is a build tool. If you need SSR (Server Side Rendering), you must implement it manually or use a framework built on top of Vite (like Remix or Vike).

Comparison with Other Build Tools

The table below outlines the positioning differences between Vite and other popular Build Tools to help you make an informed decision:

LibraryDesign PhilosophyBest ForPain Points
ViteSpeed & DX
Leverages modern browser features (ESM) to skip bundling during development.
SPA & Modern Apps
New React projects, dashboards, and tools where dev speed is paramount.
Legacy Browser Support
Targeting ancient browsers (IE11) requires specific plugins (@vitejs/plugin-legacy).
WebpackMaximum Configurability
The "do anything" bundler that powers most of the legacy web.
Complex Legacy Apps
Enterprise projects with non-standard assets or extremely complex build pipelines.
Sluggishness
Slow startup times and complex boilerplate configuration ("Webpack Hell").
ParcelZero Configuration
Automatic detection of file types and dependencies without any config file.
Quick Prototypes
Small to medium projects where you just want to start coding immediately.
Opacity
Harder to debug or customize when the "magic" defaults don't work for your specific case.

Ecosystem & Extensions

Vite has transcended being just a tool for SPAs and is now the foundation for the next generation of web frameworks:

  • Vitest: A unit testing framework built natively on Vite. It shares the same config (vite.config.ts), making test setup instant and unified.
  • Vike (vite-plugin-ssr): A library that adds Server-Side Rendering (SSR) capabilities to Vite, bridging the gap between a simple build tool and a full framework.
  • Astro / SvelteKit / SolidStart: These meta-frameworks all use Vite as their underlying engine, proving its robustness and scalability.