Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
FREEDOM251

Freedom251 › Blog › Cypress

Cypress 14: What’s New and How to Upgrade

By Freedom251 Team · · 6 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Cypress 14.0.0, released January 16, 2025, changed more than the package version: it raises environment and component-testing minimums, retires older APIs and CLI commands, and requires explicit cy.origin() handling when a test crosses origins. Before upgrading, check your runtime, operating system, CI browsers, test code, and component-testing stack against the migration guide. Cypress 14 is not the latest major version, so teams targeting a newer release should follow Cypress’s migration guides one major version at a time.

What changed in Cypress 14?

The 14.0.0 release introduced component-testing performance improvements and support for newer frameworks and dev servers, alongside breaking changes in cross-origin behavior and compatibility. The release notes summarize the changes; the migration guide is the practical checklist for upgrading an existing project.

As an Amazon Associate I earn from qualifying purchases.

See Cypress’s changelog and the version migration guide. The migration index includes later majors, so Cypress 14 instructions alone are not a complete route to the current release.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check compatibility before changing the package

Node.js, Linux, and macOS

  • Node.js: Cypress 14’s migration guide requires Node.js 18 or newer to install Cypress. Node.js 16 and 21 are no longer supported. This refers to the system Node.js used for package installation; Cypress bundles a separate runtime.
  • Linux: Prebuilt Cypress binaries no longer work on distributions based on glibc older than 2.28.
  • macOS: The minimum is macOS 11 (Big Sur), following the move to bundled Electron 33.2.1.

Browsers in local development and CI

Cypress 14 officially supports the latest three major versions of Chrome, Firefox, and Edge. Check the browser versions in CI and containers, not just a developer’s local installation. If your project uses Firefox, the current installation compatibility note says Firefox 141 or newer requires Cypress 14.1.0 or newer; that specific constraint is not satisfied by Cypress 14.0.0 alone. Consult Cypress’s installation compatibility notes when choosing the exact Cypress and Firefox versions.

Component-testing frameworks and bundlers

Check the actual versions used by your component-testing configuration before upgrading:

Component-testing dependency Cypress 14 requirement or change
Webpack via Cypress’s webpack dev server Webpack 5 minimum; Webpack 4 is no longer supported.
Vite via @cypress/vite-dev-server Vite 5 minimum; Vite 4 is no longer supported.
@cypress/vite-dev-server configuration The package is ESM-only. A CommonJS Cypress config must move to an ESM context or a TypeScript config to use it.
Angular component testing Angular 18 minimum; the mount import changes from cypress/angular to @cypress/angular.
Vue 2 component testing Cypress no longer bundles the Vue 2 harness. The guide describes separately installable @cypress/vue2 as a temporary, deprecated workaround for projects not yet migrated to Vue 3.

JIT component compilation is now the default through the justInTimeCompile component configuration option. The migration guide says JIT does not apply with Vite. For another supported setup, set justInTimeCompile: false only if you have a reason to disable it.

Update tests that cross origins

Cypress 14 no longer injects document.domain into text/html by default. An origin is defined by its scheme, hostname, and port; a change to any of those means a different origin. When a test navigates to another origin, commands interacting with that page must run inside cy.origin(), even when both hostnames share a superdomain. The cy.origin() documentation explains the command’s behavior.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For example, after visiting https://www.cypress.io, commands for a page at https://docs.cypress.io belong in a block for the docs origin:

cy.visit('https://www.cypress.io')

cy.origin('https://docs.cypress.io', () => {
  cy.visit('https://docs.cypress.io')
  cy.get('body').should('be.visible')
})

Adapt the assertions and navigation to your application. The important migration is to put commands for the second origin inside the matching cy.origin() callback.

Transition option: injectDocumentDomain

Cypress added injectDocumentDomain as a transition aid for reducing immediate cy.origin() work on subdomains. It is deprecated, may break sites, and triggers a warning when enabled. Prefer explicit origin blocks, then remove the option. The configuration reference documents its caveats.

Find removed APIs, options, and commands

Search application tests, Cypress configuration, and package scripts for these migration points:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • resourceType in cy.intercept() is deprecated; avoid relying on it for new behavior.
  • Remove experimentalFetchPolyfill; use cy.intercept() for fetch handling.
  • Remove experimentalSkipDomainInjection; its behavior is now the default.
  • In the before:browser:launch event, the second argument is launchOptions, not an array. Read browser arguments from launchOptions.args. See the browser launch API.
  • Replace cypress open-ct and cypress run-ct in scripts and CI with cypress open --component and cypress run --component.
  • Remove undocumented Cypress.backend('firefox:force:gc') and Cypress.backend('log:memory:pressure') calls. The migration guide gives no replacement.
  • In Electron, do not call fetch or XMLHttpRequest from about:blank before navigation. Use cy.request() or visit a page first.

Upgrade in a controlled sequence

  1. Record the current setup. Note the installed Cypress version, package manager, Node.js version used for installation, OS image, browser versions, component framework and bundler versions, Cypress config module format, and CI commands.
  2. Check each environment requirement. Confirm Node.js 18 or newer, supported Linux glibc or macOS 11 or newer, supported browser majors, and compatible component-testing dependencies.
  3. Search and update tests and configuration. Migrate cross-origin interactions to cy.origin(); remove deprecated options and undocumented backend calls; update launch event handling and component-testing commands.
  4. Update Cypress using the project’s package-manager workflow. Cypress does not prescribe a single package-manager command for every repository. Use the package manager and lockfile already adopted by your project rather than introducing a different install method.
  5. Run the project’s verification commands locally and in CI. Exercise the test types you use, particularly multi-origin end-to-end tests and component tests. Update pinned CI browser and OS images where they fail compatibility checks.
  6. For a later Cypress major, continue sequentially. Review each intervening migration guide instead of assuming a direct jump from an older version to 14, or from 14 to the latest major, is covered here.

Common upgrade failures and fixes

Symptom Likely cause What to check or change
Installation or binary startup fails Unsupported system Node.js, Linux glibc, or macOS version. Verify the install-time Node.js version is at least 18, Linux glibc is at least 2.28, or macOS is at least 11, as applicable.
A test fails after navigating to another host or port Commands for the new origin are outside cy.origin(). Wrap interactions with the second origin in a callback whose origin matches the page’s scheme, hostname, and port.
Component tests fail to start or the dev server cannot load Unsupported bundler/framework version or a CommonJS config with the ESM-only Vite dev-server package. Check Cypress 14’s Webpack, Vite, Angular, and Vue requirements; use an ESM or TypeScript config with @cypress/vite-dev-server.
Component-testing script is not recognized A script still uses an old open-ct or run-ct command. Use cypress open --component or cypress run --component.
Browser launch hook behaves unexpectedly Code treats the second before:browser:launch argument as an array. Use it as launchOptions and inspect or modify launchOptions.args.
Firefox compatibility issue on a newer browser The installed Cypress version is older than the compatibility note’s minimum for Firefox 141+. Use Cypress 14.1.0 or newer for Firefox 141 or newer, according to the installation note.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your task is to capture a web page rather than migrate a Cypress test suite, ScreenshotNeo is a website screenshot API with a single GET request for an image or PDF. It is a separate tool, not a Cypress upgrade or replacement for Cypress tests. See the ScreenshotNeo documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Cookie and consent banners are accepted and removed before capture, along with known newsletter popups and chat widgets; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots.

Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.

Frequently Asked Questions

Is Cypress 14 the latest Cypress major version?

No. Cypress’s migration index includes later majors; use the intervening migration guides if your goal is the current version.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does Cypress 14 require every project to use component testing?

No. The component-testing compatibility changes apply to projects using that test type; end-to-end projects should still check the runtime, platform, browser, and API changes.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

CypressCypress 14migrationsoftware testingWeb development

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.