unstale

npm / cypress

cypress

What changed in cypress 16, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

129 breaking1 security7 deprecations12 new APIs and options8 behavior and defaults1 tooling

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

npx @unstale/cli init

@unstale/cli on npm

cypress 16158 changes

Breaking changes 129

  • The result arguments supplied to after:run handlers have a changed shape; update property access in handlers.

    16.0.0upgrade guide

  • The result arguments supplied to after:spec handlers have a changed shape; update property access in handlers.

    16.0.0upgrade guide

  • Aliases are always re-queried, which can change test outcomes when the DOM changes; use a static alias when the value should not be re-queried.

    16.0.0upgrade guide

  • The configuration option was removed; Cypress warns if it remains, and there is no behavior change.

    16.0.0upgrade guide

  • The migration-gate configuration option was removed in Cypress 16.0 and is no longer valid.

    16.0.0upgrade guide

  • The minimum supported Angular version for component testing is now 21.

    16.0.0upgrade guide

  • The minimum required Angular version is now 21.0.0; Angular 18, 19, and 20 are no longer supported.

    16.0.0upgrade guide

  • Angular 17 is no longer supported for component testing; the minimum required Angular version is 18.0.0.

    16.0.0upgrade guide

  • Component testing requires Angular 17.2.0 or later.

    16.0.0upgrade guide

  • The event's second argument is now a launchOptions object rather than an array of browser arguments; use launchOptions.args to access arguments.

    16.0.0upgrade guide

  • Starting in Cypress 14, official support covers the latest three major versions of Chrome, Firefox, and Edge.

    16.0.0upgrade guide

  • CoffeeScript support was removed, affecting .coffee specs, support files, and fixtures.

    16.0.0upgrade guide

  • Built-in CoffeeScript support was removed: the default preprocessor no longer bundles coffee-loader or coffeescript, and .coffee is no longer resolved for specs, support files, or fixtures.

    16.0.0upgrade guide

  • For Create React App component testing, change the framework option from create-react-app to react after selecting a bundler.

    16.0.0upgrade guide

  • For Vue CLI component testing, change the framework option from vue-cli to vue after selecting a bundler.

    16.0.0upgrade guide

  • This option is no longer supported; use specPattern inside the component configuration object.

    16.0.0upgrade guide

  • Configuration files are required, so configFile false is no longer valid in the module API; JSON config files are also unsupported.

    16.0.0upgrade guide

  • Cookie commands use hostname rather than superdomain by default; pass an explicit domain option when cookies should be shared across subdomains.

    16.0.0upgrade guide

  • Component tests now need a bundler; CRA users must eject to webpack or use vite, and change the framework configuration to react.

    16.0.0upgrade guide

  • Removed; delete .end() calls.

    16.0.0upgrade guide

  • cy.end() was removed; delete calls because a new cy command already terminates the previous chain.

    16.0.0upgrade guide

  • Removed; replace calls with cy.task().

    16.0.0upgrade guide

  • The result property code was renamed to exitCode; update assertions that read the old property.

    16.0.0upgrade guide

  • cy.exec() was removed. Use cy.task() for Node.js work, or spawn external commands from a task with execFileSync and an argument array.

    16.0.0upgrade guide

  • Use this command as the replacement for the removed cy.server, cy.route, and Cypress.server.defaults APIs.

    16.0.0upgrade guide

  • A subsequent mount call in the same test removes the previously mounted component from the DOM.

    16.0.0upgrade guide

  • Mounting options no longer accept cssFile, cssFiles, style, styles, stylesheet, or stylesheets; use test-imported CSS or a supportFile for styles.

    16.0.0upgrade guide

  • Angular mounting-option providers are assigned at the module level, so they can override module providers but not providers declared in Component metadata.

    16.0.0upgrade guide

  • Tests interacting with a second origin must use cy.origin() because Cypress no longer injects document.domain into text/html content by default.

    16.0.0upgrade guide

  • readFile is a query and re-reads the file when a later command in the chain fails, retrying until the requested property and assertions pass.

    16.0.0upgrade guide

  • The command was removed; use cy.intercept instead.

    16.0.0upgrade guide

  • The command was removed; use cy.intercept instead.

    16.0.0upgrade guide

  • The deprecated three-argument signature is no longer supported; use .callsFake(fn) on the stub instead.

    16.0.0upgrade guide

  • CYPRESS_* environment variables populate env only and do not reach Cypress.expose(); pass values with --expose or copy them into config.expose.

    16.0.0upgrade guide

  • The harness is deprecated and is no longer shipped with the Cypress binary.

    16.0.0upgrade guide

  • The temporary Angular 17 test harness is installed as @cypress/angular; update mount imports from cypress/angular.

    16.0.0upgrade guide

  • The package requires zone.js version 0.14.0 or newer for Angular component testing.

    16.0.0upgrade guide

  • The Angular signals test harness has been merged into cypress/angular; migrate imports from cypress/angular-signals.

    16.0.0upgrade guide

  • Cypress Cloud communication verifies certificate authorities and rejects unauthorized calls; networks using a self-signed CA can configure the listed CA environment variables.

    16.0.0upgrade guide

  • The command no longer prints proxy or CYPRESS_* environment variables, making output safer to share in bug reports and CI logs.

    16.0.0upgrade guide

  • To launch directly to the specs list, cypress open now requires --browser and either --e2e or --component.

    16.0.0upgrade guide

  • This CLI command has been removed; use cypress open --component instead.

    16.0.0upgrade guide

  • The plugins file is no longer supported or automatically loaded; its functionality is replaced by setupNodeEvents() and devServer configuration options.

    16.0.0upgrade guide

  • The React 18 test harness has been merged into cypress/react; migrate imports from cypress/react18 to cypress/react.

    16.0.0upgrade guide

  • The harness is deprecated and is no longer shipped with the Cypress binary.

    16.0.0upgrade guide

  • This CLI command has been removed; use cypress run --component instead.

    16.0.0upgrade guide

  • When recording a run to Cloud with Test Replay enabled, the Runner UI is hidden by default, affecting recorded video and runner screenshots; it can be enabled with --runner-ui.

    16.0.0upgrade guide

  • The experimental Cypress Studio has been removed.

    16.0.0upgrade guide

  • Vite 4 is no longer supported for component testing; the minimum supported Vite version is 5.

    16.0.0upgrade guide

  • The package is ESM-only and can no longer be used from a CommonJS context; move the Cypress configuration to ESM or TypeScript.

    16.0.0upgrade guide

  • The default preprocessor no longer shims all built-ins previously provided by webpack v4; configure any additional required built-ins through webpack fallback options.

    16.0.0upgrade guide

  • Webpack 4 and Webpack Dev Server 4 are no longer supported; component testing must use supported versions or an independently installed deprecated package as a temporary workaround.

    16.0.0upgrade guide

  • Webpack 4 is no longer supported for end-to-end preprocessing; a deprecated standalone package version is available as a temporary workaround.

    16.0.0upgrade guide

  • The undocumented firefox:force:gc and log:memory:pressure methods have been removed with no replacement.

    16.0.0upgrade guide

  • This API can no longer overwrite readFile; use Cypress.Commands.overwriteQuery to overwrite the query instead.

    16.0.0upgrade guide

  • Queries such as cookie and storage reads must be overwritten with overwriteQuery() rather than Cypress.Commands.overwrite().

    16.0.0upgrade guide

  • Setting blockHosts with Cypress.config() during test execution now throws; set it in a describe, context, or it test configuration instead.

    16.0.0upgrade guide

  • A project cannot contain both JavaScript and TypeScript Cypress config files; Cypress reports an error when loading them together.

    16.0.0upgrade guide

  • The API was removed; use cy.session to preserve cookies and browser storage between tests.

    16.0.0upgrade guide

  • The API was removed; use cy.session to preserve cookies and browser storage between tests.

    16.0.0upgrade guide

  • onElement is no longer an option to defaults; remove it from calls to the method.

    16.0.0upgrade guide

  • Removed; migrate to cy.env() or Cypress.expose().

    16.0.0upgrade guide

  • Cypress.env() was removed. Use cy.env() for sensitive values or Cypress.expose() for non-sensitive configuration needing synchronous browser access.

    16.0.0upgrade guide

  • Cypress.env() is no longer available in Cypress 16.0; migrate reads to cy.env() or Cypress.expose().

    16.0.0upgrade guide

  • Support for cypress.json was removed; Cypress loads JavaScript or TypeScript configuration files instead.

    16.0.0upgrade guide

  • The API was renamed to Cypress.ElementSelector; migrate callers to the new name.

    16.0.0upgrade guide

  • The API was removed; use cy.intercept instead.

    16.0.0upgrade guide

  • Configure component testing dev servers by specifying a framework and bundler in this option; dev server packages are no longer directly importable.

    16.0.0upgrade guide

  • The env key is no longer valid in per-test or suite config overrides; use expose if necessary.

    16.0.0upgrade guide

  • This is now a testing-type-specific option. Its defaults differ by testing type, and **/node_modules/** is automatically added and cannot be overridden.

    16.0.0upgrade guide

  • The configuration option was removed alongside cy.exec(); setting it prints a warning and is otherwise ignored.

    16.0.0upgrade guide

  • The experimental boolean configuration option was removed and replaced by visibilityStrategy.

    16.0.0upgrade guide

  • This configuration option has been removed; remove it and use cy.intercept() to handle fetch requests.

    16.0.0upgrade guide

  • The experimental configuration option is ignored and produces a warning; use manageBrowserMemory instead.

    16.0.0upgrade guide

  • The experiment flag was removed when Session and Origin became generally available.

    16.0.0upgrade guide

  • The option was removed because its behavior— not injecting document.domain—is now the default.

    16.0.0upgrade guide

  • The configuration option was removed; remove it and enable removeSRIAttributes if it was used for SRI.

    16.0.0upgrade guide

  • The configuration option was removed. If SRI attributes block rewritten resources, use removeSRIAttributes instead.

    16.0.0upgrade guide

  • The experimental Cypress Studio option has been removed; setting it causes Cypress to error on load.

    16.0.0upgrade guide

  • Electron no longer allows fetch or XMLHttpRequest requests from an about:blank page; use cy.request() or navigate first with cy.visit().

    16.0.0upgrade guide

  • Cypress 15 removed Firefox CDP automation and uses WebDriver BiDi only; supported Firefox minimums are 135 for Cypress 15.0.0–15.18.1 and 140 for 15.19.0 and newer.

    16.0.0upgrade guide

  • The getSelector method has been removed from the Selector Playground API.

    16.0.0upgrade guide

  • Cypress 15 prebuilt Linux binaries no longer support distributions based on glibc below 2.31.

    16.0.0upgrade guide

  • Cypress 14 prebuilt Linux binaries no longer support distributions based on glibc below 2.28.

    16.0.0upgrade guide

  • invoke throws if the called function returns a promise; use then to call a method that returns a promise. Chained commands can also cause the function to be invoked multiple times.

    16.0.0upgrade guide

  • JIT compilation is now the default behavior for component tests; set this option to false to disable it.

    16.0.0upgrade guide

  • JIT compilation no longer applies with vite because there is no benefit to enabling it.

    16.0.0upgrade guide

  • The default delay between keystrokes changed from 10 to 0 milliseconds to improve performance of typing-heavy test runs.

    16.0.0upgrade guide

  • Cypress 14 requires macOS 11 (Big Sur) or newer because of its Electron upgrade.

    16.0.0upgrade guide

  • Replaces experimentalMemoryManagement and defaults to true, enabling browser memory management by default for users running Chromium-based browsers.

    16.0.0upgrade guide

  • The properties and values returned by the Module API changed shape, so code reading cypress.run() results may need updated property access.

    16.0.0upgrade guide

  • The cypress/vue mount function now returns an object containing both the VueWrapper and component instance, rather than the VueWrapper itself.

    16.0.0upgrade guide

  • mountCallback from cypress/vue has been removed; the notes recommend using mount.

    16.0.0upgrade guide

  • mountHook from cypress/react has been removed; the notes recommend replacing it with mount and a component.

    16.0.0upgrade guide

  • Chrome, Chromium, and Edge route test traffic through the native browser network, so applications negotiate the server-supported protocol as in production; some network behaviors differ.

    16.0.0upgrade guide

  • The minimum supported Next.js version for component testing is now 15.0.4.

    16.0.0upgrade guide

  • Component testing requires Next.js 15.0.4 or newer, or Next.js 16; Next.js 14 is no longer supported.

    16.0.0upgrade guide

  • Component testing no longer supports Next.js versions 10 through 13; the minimum supported version is 15.0.4.

    16.0.0upgrade guide

  • Cypress 16 requires Node.js 22.x, 24.x, or 26.x and above to install the binary; Node.js 20 and 25 are no longer supported.

    16.0.0upgrade guide

  • Cypress 15 supports Node.js 20, 22, and 24+, and no longer supports Node.js 18 or 23 for installing Cypress.

    16.0.0upgrade guide

  • Cypress 14 requires Node.js 18 or newer to install Cypress and no longer supports Node.js 16 or 21.

    16.0.0upgrade guide

  • Node.js 14 support has been removed; Node.js 16 is deprecated and users are recommended to update to at least Node.js 18.

    16.0.0upgrade guide

  • Installing the Cypress npm package requires Node.js 14, 16, or 18 and later; Node.js 12, 15, and 17 are no longer supported.

    16.0.0upgrade guide

  • The deprecated configuration option has been removed; Cypress uses the Node.js version it was launched with to execute setupNodeEvents.

    16.0.0upgrade guide

  • Nuxt 2 apps can no longer be component tested out of the box because Cypress no longer ships the Vue 2 harness.

    16.0.0upgrade guide

  • Component testing no longer supports React versions below 18.0.0; the minimum required version is 18.0.0.

    16.0.0upgrade guide

  • The Run all specs functionality has been removed.

    16.0.0upgrade guide

  • The Run filtered specs functionality has been removed.

    16.0.0upgrade guide

  • Generated screenshot paths now strip common ancestor paths shared by discovered spec files or specs selected with --spec or the spec module API.

    16.0.0upgrade guide

  • A should callback throws if it invokes Cypress commands; use then to execute commands on the yielded value.

    16.0.0upgrade guide

  • This option must be defined inside component or e2e. Defaults no longer match CoffeeScript or CJSX; component tests matching the E2E pattern are excluded.

    16.0.0upgrade guide

  • This option is now testing-type-specific and invalid at the top level; multiple matching support files for one testing type cause a load error.

    16.0.0upgrade guide

  • Cypress no longer ships the Svelte 3 and 4 component testing harness; the legacy harness can be installed independently via @cypress/svelte.

    16.0.0upgrade guide

  • When enabled, Cypress resets the browser context before each test, clearing the page, cookies, localStorage, and sessionStorage across domains.

    16.0.0upgrade guide

  • This option is no longer used; use specPattern inside the component or e2e configuration object.

    16.0.0upgrade guide

  • The minimum supported TypeScript version is 4.x.

    16.0.0upgrade guide

  • unmount from cypress/react has been removed; the notes recommend using React's unmountComponentAtNode API.

    16.0.0upgrade guide

  • Unsupported browser versions can no longer be run with cypress run or cypress open; Cypress displays an error instead.

    16.0.0upgrade guide

  • Video recording is disabled by default; set video to true to continue recording.

    16.0.0upgrade guide

  • Video compression is disabled by default, reducing run time while producing larger, higher-quality video files; enable it to reduce file size.

    16.0.0upgrade guide

  • Generated video paths now strip common ancestor paths shared by discovered spec files or specs selected with --spec or the spec module API.

    16.0.0upgrade guide

  • This configuration option has been removed; delete passing-test videos if you want to prevent their upload to Cloud.

    16.0.0upgrade guide

  • Replaces experimentalFastVisibility with a configuration option accepting 'legacy' or 'modern'; 'modern' is now the default, and the option is deprecated as a temporary migration aid.

    16.0.0upgrade guide

  • The minimum supported Vite version for component testing is now 8.

    16.0.0upgrade guide

  • An inline viteConfig in cypress.config no longer automatically merges with vite.config.js; explicitly import and merge the configuration if needed.

    16.0.0upgrade guide

  • Cypress no longer ships the Vue 2 component testing harness with the Cypress binary; it can be installed independently as @cypress/vue2.

    16.0.0upgrade guide

  • Component tests using Vue CLI now need a bundler; migrate to webpack or vite.

    16.0.0upgrade guide

  • @cypress/webpack-dev-server no longer supports webpack-dev-server version 3 and ships with version 5 by default; webpack 4 users should install version 4.

    16.0.0upgrade guide

  • within throws when given multiple elements as its subject; reduce the subject to one element or use aliases or each for collections.

    16.0.0upgrade guide

Security 1

  • Use cy.env() to read sensitive values asynchronously; it is read-only and requests only the keys you need.

    16.0.0upgrade guide

Deprecations 7

  • Launching directly into component testing with this command is deprecated; use cypress open --component instead.

    16.0.0upgrade guide

  • Electron is deprecated as a test browser; plan to switch to an installed browser.

    16.0.0upgrade guide

  • The bundled Electron browser is deprecated as a test browser and will be removed in a future major version; configure another browser if runs rely on Electron as the implicit default.

    16.0.0upgrade guide

  • The bundled Electron browser is deprecated as a test browser in Cypress 16.0 and will be removed in a future major version.

    16.0.0upgrade guide

  • Electron targeting emits a deprecation warning and will fail after removal; use an installed browser instead.

    16.0.0upgrade guide

  • Setting injectDocumentDomain to true avoids some cy.origin() calls for matching superdomains but emits a deprecation warning and will be removed in a future version.

    16.0.0upgrade guide

  • The resourceType option on cy.intercept is deprecated and its types may change or it may be removed in the future.

    16.0.0upgrade guide

New APIs and options 12

  • Pass a timeout to cy.env() for slow secret lookups; its 4000ms default does not follow defaultCommandTimeout.

    16.0.0upgrade guide

  • The React mount library is included in the main cypress package and can be imported from this path.

    16.0.0upgrade guide

  • The Vue mount library is included in the main cypress package and can be imported from this path.

    16.0.0upgrade guide

  • Cypress automatically loads a project-root cypress.config.js file when present.

    16.0.0upgrade guide

  • Cypress automatically loads a project-root cypress.config.ts file when present.

    16.0.0upgrade guide

  • The Selector Playground API was renamed to Cypress.ElementSelector to reflect use beyond the Selector Playground.

    16.0.0upgrade guide

  • Use Cypress.expose() for public, non-sensitive configuration that needs synchronous access and can be available in the browser.

    16.0.0upgrade guide

  • Set defaultBrowser to an installed browser to prevent Cypress from falling back to Electron when no browser is specified.

    16.0.0upgrade guide

  • Set this option to true to use external dependencies in cy.origin callbacks.

    16.0.0upgrade guide

  • Configure public, non-sensitive values under expose instead of env when they should be available through Cypress.expose().

    16.0.0upgrade guide

  • Pass public configuration values with --expose when running Cypress; -x is also available.

    16.0.0upgrade guide

  • Pass this option to cypress run to show the Runner UI during a Cloud-recorded run.

    16.0.0upgrade guide

Behavior and default changes 8

  • Cypress now uses @angular/platform-browser in place of @angular/platform-browser-dynamic; Angular 21 uses the replacement by default.

    16.0.0upgrade guide

  • Now a retry-able query that re-reads localStorage across origins and retries chained assertions; it accepts a timeout option and uses defaultCommandTimeout.

    16.0.0upgrade guide

  • Now a retry-able query that re-reads sessionStorage across origins and retries chained assertions; it accepts a timeout option and uses defaultCommandTimeout.

    16.0.0upgrade guide

  • The command became generally available; using require and import in its callback remains disabled by default.

    16.0.0upgrade guide

  • The command became generally available for setting up and caching browser storage between tests.

    16.0.0upgrade guide

  • The zoneless testing harness is now the default cypress/angular test harness.

    16.0.0upgrade guide

  • Built-in placeholder mount and hover commands can now be overwritten without using Cypress.Commands.overwrite().

    16.0.0upgrade guide

  • Users with this existing experimental flag can remove it from their configuration; JIT compilation is now controlled by justInTimeCompile.

    16.0.0upgrade guide

Tooling 1

  • Use this command to launch directly into component testing from the main app.

    16.0.0upgrade guide