unstale

npm / parcel

parcel

What changed in parcel 1 to 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-15.

15 breaking1 security11 new APIs and options6 performance6 behavior and defaults10 tooling4 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.3.1 on npm

parcel 233 changes

Security 1

New APIs and options 10

  • Adds a dev server option to disable CORS headers.

    2.16.4release notes

  • Compiled bundle contents can be embedded inside another bundle, such as an image embedded as a data URL.

    2.0.0upgrade guide

  • A new plugin type can compress or encode output bundles at the end of the build; multiple compressors can produce versions simultaneously without affecting the final content hash.

    2.0.0upgrade guide

  • Run Parcel with this CLI option to see detailed scope hoisting bailout information and the causes of tree shaking failures.

    2.0.0upgrade guide

  • Prefix URL dependencies with npm: to resolve them like JavaScript imports from node_modules rather than as relative URLs.

    2.0.0upgrade guide

  • Add this compressor to .parcelrc to emit .br files alongside original bundles.

    2.0.0upgrade guide

  • Add this compressor to .parcelrc to emit .gz files alongside original bundles.

    2.0.0upgrade guide

  • Import the package to access a manifest of generated URLs and a version hash for pre-caching service worker assets.

    2.0.0upgrade guide

  • The XML transformer processes URL references in RSS and Atom feeds and runs embedded HTML through Parcel's HTML pipeline.

    2.0.0upgrade guide

  • A fully extensible plugin system adds well-defined APIs for transformation, bundling, optimizing, and compressing output.

    2.0.0upgrade guide

Performance 6

  • CSS is preloaded as soon as the RSC payload loads, without waiting for it to mount, enabling pre-fetching.

    2.16.2release notes

  • Improves performance of React Server Components builds.

    2.16.1release notes

  • A C++ file watcher uses low-level operating system APIs for fast, granular cache invalidations, including across Parcel restarts.

    2.0.0upgrade guide

  • A new JavaScript compiler written in Rust contributes to Parcel's performance improvements.

    2.0.0upgrade guide

  • In development, Parcel builds only files requested by the browser, improving dev server cold startup times.

    2.0.0upgrade guide

  • Parcel's new Rust source maps library makes source maps faster and more accurate.

    2.0.0upgrade guide

Behavior and default changes 4

  • The cache is more reliable and portable across machines, and automatically tracks configs, plugins, and development dependencies without configuration.

    2.0.0upgrade guide

  • Lossless JPEG and PNG optimization is enabled by default in production; Parcel also supports resizing and conversion to modern image formats.

    2.0.0upgrade guide

  • Parcel uses SWC to transpile JavaScript by default, while still picking up an existing Babel config.

    2.0.0upgrade guide

  • Tree shaking is enabled by default, with support for ES modules, CommonJS, dynamic imports, and CSS modules.

    2.0.0upgrade guide

Tooling 8

  • Parcel automatically splits code and deduplicates common modules into shared bundles that can be loaded and cached in parallel.

    2.0.0upgrade guide

  • Diagnostics include syntax-highlighted code frames, hints, and links to documentation.

    2.0.0upgrade guide

  • Parcel automatically ships modern JavaScript syntax to browsers supporting native ES modules and falls back for older browsers.

    2.0.0upgrade guide

  • Parcel supports building libraries with ES module, CommonJS, and TypeScript definition output.

    2.0.0upgrade guide

  • Improved hot reloading includes support for React Fast Refresh.

    2.0.0upgrade guide

  • Parcel includes an optimizer based on SVGO to minify SVGs and reduce their sizes.

    2.0.0upgrade guide

  • Parcel processes SVG external dependencies, scripts, styles, inline elements, and presentation attributes through the relevant pipelines, and supports SVG-to-JSX conversion.

    2.0.0upgrade guide

  • Worker support includes native ES module workers, worklets, and service worker manifests.

    2.0.0upgrade guide

Fixes and other changes 4

  • Fixes HTML minification incorrectly removing siblings after an <svg> element.

    2.16.2release notes

  • Fixes a cache key clash in the React static packager.

    2.16.2release notes

  • Fixes using inline string transformers with the React static packager.

    2.16.2release notes

  • Fixes macro location information.

    2.16.1release notes

parcel 120 changes

Breaking changes 15

  • Babel configuration overrides Parcel's default rather than merging with it; projects with custom Babel plugins other than Flow need to add @babel/preset-flow.

    1.0.0upgrade guide

  • Parcel no longer transpiles JavaScript by default; set browserslist in package.json to define supported browser targets and enable transpilation.

    1.0.0upgrade guide

  • The --out-dir CLI option is renamed to --dist-dir, matching the distDir package.json option.

    1.0.0upgrade guide

  • The option is removed without a replacement.

    1.0.0upgrade guide

  • Configure bundling packages from node_modules for Node.js targets in target configuration using includeNodeModules, instead of the --bundle-node-modules CLI option.

    1.0.0upgrade guide

  • Log levels now use names instead of numbers: none, error, warn, info, and verbose.

    1.0.0upgrade guide

  • The --no-minify option is renamed to --no-optimize.

    1.0.0upgrade guide

  • The CLI option is removed; specify the output path in package.json instead.

    1.0.0upgrade guide

  • The npm package name changes from parcel-bundler to parcel; update the dependency in package.json.

    1.0.0upgrade guide

  • Use the @parcel/core package rather than parcel-bundler for programmatic use; the API has changed significantly.

    1.0.0upgrade guide

  • Parcel 2 uses SWC instead of tsc for TypeScript transpilation; projects needing compiler options beyond supported options can configure @parcel/transformer-typescript-tsc.

    1.0.0upgrade guide

  • Parcel 2 plugins are configured in .parcelrc rather than being enabled automatically by listing them in package.json dependencies; Parcel 1 plugins are incompatible.

    1.0.0upgrade guide

  • Classic script tags no longer support imports or exports; use type="module" for modules. Module scripts are deferred, and Parcel generates a nomodule version for older browsers based on browserslist.

    1.0.0upgrade guide

  • The CLI option no longer configures the compilation environment; configure targets in package.json, for example with an engines.node or engines.electron field.

    1.0.0upgrade guide

  • Listen for build events through watch's callback, checking buildEvent.type for buildSuccess or buildFailure.

    1.0.0upgrade guide

New APIs and options 1

  • Scope hoisting is enabled by default; use --no-scope-hoist to disable it.

    1.0.0upgrade guide

Behavior and default changes 2

  • When Parcel sees main, it infers the project is a library and uses that value as the output path; remove it for most web apps or set targets.main to false to ignore it.

    1.0.0upgrade guide

  • Parcel's default cache location changes from .cache to .parcel-cache, so update .gitignore or similar.

    1.0.0upgrade guide

Tooling 2

  • Parcel supports preset-env, preset-typescript, and preset-react features automatically; projects using only these presets can remove their Babel config and use Parcel's faster default transpiler.

    1.0.0upgrade guide

  • For non-code asset types without default support, use the URL constructor or a url: import specifier to reference the asset URL.

    1.0.0upgrade guide