NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #792 most downloaded on npm
Next-generation ES module bundler
Last release 2 days ago
02 Oct 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
950 releases · first in 2015
Nothing published for this version
extend this.getModuleInfo with information about exports
2022-12-05
this.getModuleInfo with information about exports (#4731)exports and exportedBindings to Module class (@TrickyPi)Nothing published for this version
One column per quarter.
Nothing published for this version
Accept functions returning a config in defineConfig
2022-12-01
Add treeshake.manualPureFunctions to override static analysis for explicit function names
2022-11-27
treeshake.manualPureFunctions to override static analysis for explicit function names (#4718)this.load without awaiting its result (#4725)Nothing published for this version
Do not keep unused Object.freeze calls on object literals
2022-11-22
Object.freeze calls on object literals (#4720)Nothing published for this version
Nothing published for this version
Add "experimentalMinChunkSize" option to merge smaller chunks into larger ones
2022-11-12
Buffer (#4712)Buffer with string assets (#4712)perf: true (#4707)Nothing published for this version
We deconflicting classes, ensure the original class name still does not shadow variables
2022-11-01
Always use forward slashes in chunk ids when preserving modules, even on Windows
2022-10-31
import.meta.url (#4693)Fix an issue whre Rollup confused new.target with import.meta
2022-10-18
new.target with import.meta (#4679)Do not hang/crash on hashbang comments in input modules
Rewrite class declarations to preserve their .name property if necessary
2022-10-16
Support providing Promises as plugins like Vite
2022-10-15
Support using arrays of plugins as plugins like Vite
2022-10-12
Avoid missing parameters that are only used in a destructuring initializer
2022-10-12
Some previously deprecated features have been removed (#4552):
2022-10-11
@rollup/browser (#4593)node: prefix for imports of builtin modules (#4596)this.emitAsset(): use this.emitFile()this.emitChunk(): use this.emitFile()this.getAssetFileName(): use this.getFileName()this.getChunkFileName(): use this.getFileName()this.isExternal(): use this.resolve()this.resolveId(): use this.resolve()resolveAssetUrl plugin hook has been removed: use resolveFileUrlassetReferenceId or chunkReferenceId parameters to resolveFileUrltreeshake.pureExternalModules option has been removed: use treeshake.moduleSideEffects: 'no-external'true or false for output.interop. As a replacement for true, you can use "compat"isAsset flag in the bundletype: "asset" fieldinlineDynamicImports as part of the input options: use output. inlineDynamicImportsmanualChunks as part of the input options: use output. manualChunks maxParallelFileReads: use `maxParallelFileOpsoutput.preferConst: use output.generatedCode.constBindingsoutput.dynamicImportFunction: use the renderDynamicImport plugin hookoutput.namespaceToStringTag: use output.generatedCode.symbolspreserveModules as part of the input options: use output. preserveModules this.moduleIds in plugins: use this.getModuleIds()this.getModuleInfo(...).hasModuleSideEffects in plugins: use this.getModuleInfo(...).moduleSideEffects--configPlugin or the --bundleConfigAsCjs options are used. The configuration is bundled to an ES module unless the --bundleConfigAsCjs option is used. In all other cases, configuration is now loaded using Node's native mechanisms (#4574 and #4621)rollup/dist/* can only be required using their file extension (#4581)loadConfigFile helper now has a named export of the same name instead of a default export (#4581)string (#4644)import(…) in commonjs output unless output.dynamicImportInCjs is set to false (#4647)output.banner/footer/intro/outro are now called per-chunk, they should be careful to avoid performance-heavy operations (#4543)entryFileNames/chunkFileNames functions now longer have access to the rendered module information via modules, only to a list of included moduleIds (#4543)[name] placeholder (as well as the chunkInfo.name property when using a function) now includes the relative path of the chunk as well as optionally the file extension if the extension is not one of .js, .jsx, .mjs, .cjs, .ts, .tsx, .mts, or .cts (#4565)[ext], [extName] and [assetExtName] placeholders are no longer supported when preserving modules (#4565)perf option no longer collects timings for the asynchronous part of plugin hooks as the readings were wildly inaccurate and very misleading, and timings are adapted to the new hashing algorithm (#4566)makeAbsoluteExternalsRelative to "ifRelativeSource" so that absolute external imports will no longer become relative imports in the output, while relative external imports will still be renormalized (#4567)output.generatedCode.reservedNamesAsProps to no longer quote properties like default by default (#4568)preserveEntrySignatures to "exports-only" so that by default, empty facades for entry chunks are no longer created (#4576)output.interop to "default" to better align with NodeJS interop (#4611)output.esModule to "if-default-prop", which only adds __esModule when the default export would be a property (#4611)output.systemNullSetters to true, which requires at least SystemJS 6.3.3 (#4649)renderChunk should make sure to update ChunkInfo.imports/importedBindings/exports accordingly (#4543)renderChunk now contains names with hash placeholders instead of final names, which will be replaced when used in the returned code or ChunkInfo.imports/importedBindings/exports (#4543 and #4631)output.banner/footer/intro/outro are now called per-chunk with some chunk information (#4543)renderChunk (#4543)entryFileNames logic is used and the path is included in the [name] property. This finally gives full control over file names when preserving modules (#4565)output.entryFileNames now also supports the [hash] placeholder when preserving modules (#4565)perf option will now collect (synchronous) timings for all plugin hooks, not just a small selection (#4566)name: RollupError now to make clearer that those are custom error types (#4579)generateBundle and sourcemap files are available as regular assets (#4605)__esModule marker to the bundle if there is a default export that is rendered as a property (#4611)foo[Symbol.toStringTag] to "Module" if foo is a namespace (#4611)--bundleConfigAsCjs which will force the configuration to be bundled to CommonJS (#4621)output.externalImportAssertions option allows to turn off emission of import assertions (#4646)output.dynamicImportInCjs to control if dynamic imports are emitted as import(…) or wrapped require(…) when generating commonjs output (#4647)renderChunk, e.g. minification, into account (#4543)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix a vulnerability in generated code that affects IIFE, UMD and CJS bundles when run in a browser context
2024-09-26
Avoid massive performance degradation when creating thousands of chunks
2022-09-22
Add amd.forceJsExtensionForImports to enforce using .js extensions for relative AMD imports
2022-08-31
amd.forceJsExtensionForImports to enforce using .js extensions for relative AMD imports (#4607)Avoid inferring "arguments" as name for a default export placeholder variable
2022-08-19
Support writing plugin hooks as objects with a "handler" property
2022-08-14
Nothing published for this version
Nothing published for this version
Correctly resolve preserveModulesRoot in Vite
2022-08-11
Avoid a rendering failure when mixing outputs with inlined and non-inlined dynamic imports
2022-07-27
Ensure IIFE output generates a global variable when generating ES5
2022-07-26
Introduce maxParallelFileOps to limit both read and write operations, default to 20 and replaces maxParallelFileRead
2022-07-15
maxParallelFileOps to limit both read and write operations, default to 20 and replaces maxParallelFileRead (#4570)Allow setting a sourcmapBaseUrl for absolute paths in sourcemaps
2022-07-08
sourcmapBaseUrl for absolute paths in sourcemaps (#4527)Mark Array.prototype.group/groupToMap as side effect free.
2022-06-20
Properly deoptimize "this" when using member expressions with getters/setters in for loops and update expressions
2022-06-07
Avoid crashes when using logical expressions for unused constructor arguments
2022-06-01
Ensure parameter defaults are retained when a function is used as an object property
2022-05-31
Retain parameter defaults for functions that are defaults themselves
2022-05-29
Nothing published for this version
_2022-05-28_ ### Pull Requests - #4513: Update link to node polyfill repo (@lukastaegert)
Re-implement default parameter tree-shaking for top-level functions
2022-05-27
.trim() on template literals a side effect (#4511)Revert #4498 until some issues are understood and resolved
2022-05-19
Remove unneeded default values for function parameters
2022-05-19
Do not treat Object.defineProperty/ies as side effect when called on an unused object
2022-05-13
Improve tree-shaking of classes with super classes in certain scenarios
2022-05-07
Add CLI hooks to run external commands at certain points in watch mode
2022-05-05
Allow importing loadConfigFile without extension
2022-04-30
Prevent infinite recursion and display proper warning for recursive reexports
2022-04-30
Object.hasOwn as pure (#4482)git.io in the issue template (@SukkaW)Do not enforce undefined return values in TypeScript types
2022-04-15
Handle unfinished hook action errors as regular errors and avoid console logging
2022-03-14
Your coding agent can read these notes before it upgrades. Set up the MCP server →