# Cypress changelog > Fast, easy and reliable testing for anything in a browser. - Vendor: Cypress.io - Category: Developer Tools - Official site: https://www.cypress.io - Tracked by: What's New (https://whatsnew.fyi/product/cypress) - Harvested from: GitHub (cypress-io/cypress) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v15.20.0 - Date: 2026-08-04 - Version: v15.20.0 - Original notes: https://github.com/cypress-io/cypress/releases/tag/v15.20.0 - Permalink: https://whatsnew.fyi/product/cypress/releases/v15.20.0 - **fixed** — Fixed an issue where visibility checks serialized an element's entire text subtree once per overflow-hidden ancestor, which could exhaust the renderer's memory and crash it on text-heavy pages - **changed** — Reduced the sampling overhead of experimentalMemoryManagement when Cypress runs inside a memory-limited container using cgroup v1 by eliminating helper subprocesses on every sampling interval - **added** — scrollBehavior now accepts a per-axis value such as { block: 'start', inline: 'nearest' } to set vertical and horizontal alignment independently - **added** — cy.request() and cy.intercept() now accept the HTTP QUERY method - **fixed** — Fixed a regression where action commands scrolled an already-visible element's container horizontally - **fixed** — Fixed a regression where commands that read from the application under test targeted the command log instead of your application when the application set window.name - **fixed** — Fixed an issue where a cy.* command error message that interpolated a value containing a $ character could render incorrectly - **fixed** — Fixed an issue where a Cypress error message that interpolated a value containing a $ sequence could render with corrupted or duplicated text - **fixed** — Fixed an issue where cy.intercept() matching on the auth option compared only the portion of a Basic authentication password before the first colon - **fixed** — Fixed an issue where cy.intercept() routes specifying a numeric port did not match requests on non-default ports - **fixed** — Fixed an issue where inline source maps embedded without a charset were not decoded and were silently dropped - **fixed** — Fixed an issue where TypeScript 7 support did not work and spec and support files failed to compile - **fixed** — Fixed an issue where a cy.origin() block could intermittently fail with TypeError: Cannot read properties of undefined (reading 'applied') - **fixed** — Fixed an issue where during a cy.origin() block, session cookies set on the primary origin by the first page visited in a test were not included in the identity provider's callback request - **fixed** — Fixed an issue where the configuration validation error for passesRequired in the detect-flake-and-pass-on-threshold retry strategy reported the value of an unrelated option - **fixed** — Fixed an issue where the configuration validation error for an absolute ca filepath in clientCertificates referenced the wrong certificate **Performance:** - Fixed an issue where visibility checks (such as [`.should('be.visible')`](https://on.cypress.io/should) and actionability) serialized an element's entire text subtree once per overflow-hidden ancestor, which on text-heavy pages could exhaust the renderer's memory and crash it (`We detected that the Chrome Renderer process just crashed`). Fixes [#34329](https://github.com/cypress-io/cypress/issues/34329). - Reduced the sampling overhead of [`experimentalMemoryManagement`](https://on.cypress.io/experiments) when Cypress runs inside a memory-limited container using cgroup v1. Memory readings no longer spawn helper subprocesses on every sampling interval, which lowers CPU usage that previously competed with the tests, most noticeably on constrained CI machines. Addresses [#34105](https://github.com/cypress-io/cypress/issues/34105). Fixed in [#34331](https://github.com/cypress-io/cypress/pull/34331). **Features:** - [`scrollBehavior`](https://docs.cypress.io/app/references/configuration#Actionability) now accepts a per-axis value, such as `{ block: 'start', inline: 'nearest' }`, so the vertical and horizontal alignment used to scroll an element into view before an action command can be set independently. The per-axis form takes the same values as the native `scrollIntoView`: `'start'`, `'end'`, `'center'`, and `'nearest'`. Addresses [#34460](https://github.com/cypress-io/cypress/issues/34460). - [`cy.request()`](https://on.cypress.io/request) and [`cy.intercept()`](https://on.cypress.io/intercept) now accept the HTTP `QUERY` method. Previously it was rejected as an invalid method in the browser. Fixes [#28282](https://github.com/cypress-io/cypress/issues/28282). **Bugfixes:** - Fixed a regression in [15.18.1](#15-18-1) where action commands scrolled an already-visible element's container horizontally. The [`scrollBehavior`](https://docs.cypress.io/app/references/configuration#Actionability) values `'top'` and `'bottom'` revert to aligning only the vertical axis; use `'start'` or `'end'` to align both. Fixes [#34460](https://github.com/cypress-io/cypress/issues/34460). - Fixed a regression in [15.19.0](#15-19-0) where commands that read from the application under test, such as [`cy.url()`](https://on.cypress.io/url), [`cy.title()`](https://on.cypress.io/title) and [`cy.reload()`](https://on.cypress.io/reload), targeted the command log instead of your application when the application set `window.name`. Fixes [#34435](https://github.com/cypress-io/cypress/issues/34435). - Fixed an issue where a `cy.*` command error message that interpolated a value containing a `$` character could render incorrectly, with a leaked `{{...}}` placeholder or duplicated or dropped surrounding text. Such values are now inserted verbatim. Fixed in [#34221](https://github.com/cypress-io/cypress/pull/34221). - Fixed an issue where a Cypress error message that interpolated a value containing a `$` sequence (such as `$&`, `` $` ``, `$'`, or `$$`) could render with corrupted or duplicated text. Such values are now shown verbatim. Fixed in [#34220](https://github.com/cypress-io/cypress/pull/34220). - Fixed an issue where [`cy.intercept()`](https://on.cypress.io/intercept) matching on the `auth` option compared only the portion of a Basic authentication password before the first colon, so a request whose password contained a colon (permitted by RFC 7617) failed to match. The full password is now compared. Fixed in [#34206](https://github.com/cypress-io/cypress/pull/34206). - Fixed an issue where [`cy.intercept()`](https://on.cypress.io/intercept) routes specifying a numeric `port` (for example `port: 8080` or `port: [8080]`) did not match requests on non-default ports. Such routes now match as documented. Fixes [#17653](https://github.com/cypress-io/cypress/issues/17653). Fixed in [#34205](https://github.com/cypress-io/cypress/pull/34205). - Fixed an issue where inline source maps embedded without a `charset` (for example those emitted by e _[Truncated at 4000 characters — full notes: https://github.com/cypress-io/cypress/releases/tag/v15.20.0]_ ### v15.19.0 - Date: 2026-07-21 - Version: v15.19.0 - Original notes: https://github.com/cypress-io/cypress/releases/tag/v15.19.0 - Permalink: https://whatsnew.fyi/product/cypress/releases/v15.19.0 - **fixed** — Fixed an issue where the browser's renderer process could crash when the application under test triggered a ResizeObserver loop while the command log was visible - **fixed** — Fixed a regression where each message sent from the Cypress server to a Chromium-based browser leaked a small amount of browser memory until the end of the spec, which could crash the browser during long, command- or network-heavy specs - **fixed** — Fixed an issue where each cy.press() call in Chromium-based browsers retained a small amount of renderer memory for the remainder of the spec file, which could contribute to memory growth in specs with many cy.press() calls - **added** — Added support for TypeScript 7 when preprocessing TypeScript spec and support files, and the component testing setup wizard now accepts TypeScript 7 - **added** — Added support for additional assertion aliases: .exists (alias of .exist), .greaterThanOrEqual and .lessThanOrEqual (aliases of .least and .most), and .oneOf chained with .contain - **fixed** — Fixed an issue where chaining an assertion after .should('exist') on a raw DOM element failed with expected null to exist, because the existence assertion replaced the subject with null - **fixed** — Fixed an issue where on Windows, enhancing a test failure stack could throw a secondary TypeError and mask the original error - **fixed** — Fixed an issue where experimentalMemoryManagement could fail to prevent the browser from running out of memory and crashing when Cypress was running inside a memory-limited container - **changed** — Corrected the @default value in the TypeScript type definitions for the videoCompression configuration option from 32 to false **Performance:** - Fixed an issue where the browser's renderer process could crash (`We detected that the Chrome Renderer process just crashed`) when the application under test triggered a `ResizeObserver` loop while the command log was visible. Fixes [#33962](https://github.com/cypress-io/cypress/issues/33962) and [#34218](https://github.com/cypress-io/cypress/issues/34218). - Fixed a regression in [14.0.0](#14-0-0) where each message sent from the Cypress server to a Chromium-based browser (including Electron) leaked a small amount of browser memory until the end of the spec. During long, command- or network-heavy specs, this buildup could crash the browser (`We detected that the Chrome Renderer process just crashed`). Fixes [#34226](https://github.com/cypress-io/cypress/issues/34226). - Fixed an issue where each [`cy.press()`](https://on.cypress.io/press) call in Chromium-based browsers retained a small amount of renderer memory for the remainder of the spec file, which could contribute to memory growth in specs with many `cy.press()` calls. Addressed in [#34240](https://github.com/cypress-io/cypress/pull/34240). **Features:** - Added support for TypeScript 7 when preprocessing TypeScript spec and support files. The component testing setup wizard now accepts TypeScript 7 as well. Addresses [#34258](https://github.com/cypress-io/cypress/issues/34258). Addressed in [#34277](https://github.com/cypress-io/cypress/pull/34277). - Added support for additional assertion aliases: `.exists` (alias of `.exist`), `.greaterThanOrEqual` and `.lessThanOrEqual` (aliases of `.least` and `.most`), and `.oneOf` chained with `.contain` (for example `expect('Today is sunny').to.contain.oneOf(['sunny', 'cloudy'])`). These can be used anywhere Cypress assertions are written, such as `expect`, `assert`, and `cy.get(...).should(...)`. This comes from upgrading the bundled `chai` assertion library from `4.2.0` to `4.5.0`; all existing assertions and their messages behave the same. Addressed in [#34178](https://github.com/cypress-io/cypress/pull/34178). **Bugfixes:** - Fixed an issue where chaining an assertion after [`.should('exist')`](https://on.cypress.io/should) on a raw DOM element (rather than a jQuery object) failed with `expected null to exist`, because the existence assertion replaced the subject with `null`. Chaining further assertions off `.exist` (or its `.exists` alias) for a raw DOM element now works as expected. Fixes [#25491](https://github.com/cypress-io/cypress/issues/25491). - Fixed an issue where, on Windows, enhancing a test failure stack could throw a secondary `TypeError: Cannot read properties of undefined (reading 'replaceAll')` and mask the original error. Fixed in [#34252](https://github.com/cypress-io/cypress/pull/34252). - Fixed an issue where [`experimentalMemoryManagement`](https://on.cypress.io/experiments) could fail to prevent the browser from running out of memory and crashing when Cypress was running inside a memory-limited container. Memory is now managed correctly in these environments. Fixes [#34104](https://github.com/cypress-io/cypress/issues/34104). Addressed in [#34123](https://github.com/cypress-io/cypress/pull/34123). **Misc:** - Corrected the `@default` value in the TypeScript type definitions for the [`videoCompression`](https://on.cypress.io/configuration#Videos) configuration option from `32` to `false`. Addressed in [#34198](https://github.com/cypress-io/cypress/pull/34198). ### v15.18.1 - Date: 2026-07-07 - Version: v15.18.1 - Original notes: https://github.com/cypress-io/cypress/releases/tag/v15.18.1 - Permalink: https://whatsnew.fyi/product/cypress/releases/v15.18.1 - **changed** — Verifying that the Cypress binary can run now completes more quickly - **fixed** — Fixed an issue where Cypress could hang until the spec timed out if the browser process crashed mid-run while video recording was disabled - **fixed** — Fixed a TypeScript error when asserting focus with Chai's property syntax such as `expect($el).to.have.focus` or `expect($el).to.be.focused` - **fixed** — Fixed `cy.type()` firing the simulated `keyup` event in the same turn as `keydown` and `input` by deferring `keyup` to the next microtask - **fixed** — Fixed headless WebKit using the host machine's `devicePixelRatio` instead of a standard value of 1 - **fixed** — Fixed the `userAgent` configuration option not being applied when running tests in the experimental WebKit browser - **fixed** — Fixed a request to focus the browser window in the experimental WebKit browser being silently ignored - **fixed** — Fixed opening an unconfigured project from a git repository sub-directory skipping project setup - **fixed** — Fixed the component testing setup wizard not reliably displaying the auto-detected framework and bundler - **fixed** — Fixed interacting with an element inside a horizontally-scrollable container scrolling the element to the container's right edge instead of its top, leftmost point - **fixed** — Fixed a regression where `cypress run --spec` printed a spurious warning for patterns that actually matched spec files - **security** — Upgraded `esbuild` from 0.28.0 to 0.28.1 to address a Resources Downloaded over Insecure Protocol vulnerability **Performance:** - Verifying that the Cypress binary can run, which happens the first time a newly installed version is used (before `cypress open` or `cypress run`) and whenever `cypress verify` is invoked, now completes more quickly. Addressed in [#34133](https://github.com/cypress-io/cypress/pull/34133). **Bugfixes:** - Fixed an issue where Cypress could hang until the spec timed out if the browser process crashed mid-run (for example, an out-of-memory or GPU crash) while video recording was disabled. The current spec now fails and the run continues to the next spec as expected. Fixed in [#34126](https://github.com/cypress-io/cypress/pull/34126). - Fixed an issue where asserting focus with Chai's property syntax, such as `expect($el).to.have.focus` or `expect($el).to.be.focused`, raised a TypeScript error (`Property 'focus' does not exist on type 'Assertion'`) even though the assertion works at runtime. Fixes [#23905](https://github.com/cypress-io/cypress/issues/23905). Fixed in [#34177](https://github.com/cypress-io/cypress/pull/34177). - Fixed an issue where [`cy.type()`](https://on.cypress.io/type) fired the simulated `keyup` event in the same turn as `keydown` and `input`, so `keyup` handlers that read state updated asynchronously in an `input` listener could observe stale values. `keyup` is now deferred to the next microtask, matching real browser event ordering. Fixes [#14864](https://github.com/cypress-io/cypress/issues/14864). Fixed in [#34068](https://github.com/cypress-io/cypress/pull/34068). - Fixed an issue where headless WebKit used the host machine's `devicePixelRatio` instead of a standard value of `1`. Headless WebKit now matches headless Chrome, so screenshots taken during `cypress run` are consistent regardless of the host's DPI (for example 2x locally versus 1x in CI) and text is no longer fuzzy on high-DPI displays. Applies when [`experimentalWebKitSupport`](https://docs.cypress.io/app/references/experiments) is enabled. Fixes [#23808](https://github.com/cypress-io/cypress/issues/23808). Fixed in [#34088](https://github.com/cypress-io/cypress/pull/34088). - Fixed an issue where the [`userAgent`](https://on.cypress.io/configuration#Browser) configuration option was not applied when running tests in the experimental WebKit browser. Fixes [#33349](https://github.com/cypress-io/cypress/issues/33349). - Fixed an issue where, in the experimental WebKit browser, a request to focus the browser window was silently ignored, so the window could remain in the background. The active page is now correctly brought to the front. Addressed in [#34137](https://github.com/cypress-io/cypress/pull/34137). - Fixed an issue where opening an unconfigured project from a git repository sub-directory (such as a monorepo package) skipped project setup. Additionally, the component testing setup wizard now reliably displays the auto-detected framework and bundler. Fixes [#27410](https://github.com/cypress-io/cypress/issues/27410) and [#29544](https://github.com/cypress-io/cypress/issues/29544). Fixed in [#34129](https://github.com/cypress-io/cypress/pull/34129) and [#34212](https://github.com/cypress-io/cypress/pull/34212). - Fixed an issue where interacting with an element inside a horizontally-scrollable container could scroll the element to the container's right edge, placing it underneath a right-floating `position: sticky` or `position: fixed` element and causing the action to fail or land on the wrong element. Elements are now scrolled to their top, leftmost point as documented. Fixes [#33884](https://github.com/cypress-io/cypress/issues/33884). Fixed in [#34108](https://github.com/cypress-io/cypress/pull/34108). - Fixed a regression in [15.17.0](#15-17-0) where `cypress run --spec` printed a spurious `The following --spec pattern did not match any spec files and will be ignored` warning for patterns that actually did match spec files, such as patterns using regex-style alternation groups (for example `cypress/e2e/(a|b)/*.js _[Truncated at 4000 characters — full notes: https://github.com/cypress-io/cypress/releases/tag/v15.18.1]_ ### v15.18.0 - Date: 2026-06-23 - Version: v15.18.0 - Original notes: https://github.com/cypress-io/cypress/releases/tag/v15.18.0 - Permalink: https://whatsnew.fyi/product/cypress/releases/v15.18.0 - **fixed** — Fixed an issue where an application that repeatedly threw the same uncaught exception could exhaust renderer memory and crash the browser; consecutive identical uncaught exceptions within a test now collapse into a single, updating command-log entry, and a handled uncaught exception no longer captures a DOM snapshot - **added** — Added a removeSRIAttributes configuration option that strips the integrity attribute from