Rollup is the module bundler that quietly powers a huge chunk of the JavaScript ecosystem. While Webpack dominated application bundling for years, Rollup carved out its territory by focusing on ES module output and tree-shaking — the ability to statically analyze import/export statements and eliminate dead code from final bundles. If you’ve published a library to npm with an optimized ESM build, there’s a good chance Rollup produced it.
The tool takes ES module source files as input and generates optimized bundles in multiple formats: ESM, CommonJS, UMD, IIFE, and SystemJS. Its tree-shaking algorithm is more thorough than alternatives because Rollup was designed around ES modules from day one, rather than retrofitting module analysis onto an existing bundler. The plugin system is clean and well-documented, and many Rollup plugins work directly in Vite, which uses Rollup for production builds under the hood.
Created by Rich Harris (who also built Svelte), Rollup has been maintained by the open-source community since 2015 and currently by Lukas Taegert-Atkinson. The project rewrote its core in Rust (starting with Rollup 4) to improve bundling speed, bringing it closer to the performance of native-speed bundlers like esbuild while keeping the mature plugin ecosystem intact. Rollup processes billions of npm downloads indirectly through Vite, and it remains the recommended bundler for library authors who need precise control over output formats, module boundaries, and code splitting. It’s a workhorse tool — not flashy, but foundational.