jQuery 4.0.0 Release Candidate 1

Posted on by

It’s here! Almost. jQuery 4.0.0-rc.1 is now available. It’s our way of saying, “we think this is ready; now poke it with many sticks”. If nothing is found that requires a second release candidate, jQuery 4.0.0 final will follow. Please try out this release and let us know if you encounter any issues.

A 4.0 upgrade guide and jQuery Migrate release are also now available, but both are subject to changes before the final jQuery Core release.

Many of the breaking changes in jQuery 4.0.0 are ones the team has wanted to make for years, but couldn’t in a patch or minor release. We’ve trimmed legacy code (including removing support for IE before version 11), removed some previously-deprecated APIs, removed some internal-only parameters to public functions that were never documented, and dropped support for some “magic” behaviors that were overly complicated.

As usual, the release is available on our CDN and the npm package manager. Third party CDNs will not be hosting this rc release, but will host the 4.0.0 final release later. Here are some highlights for jQuery 4.0.0 rc.1.

Download

You can get the files from the jQuery CDN, or link to them directly:

https://code.jquery.com/jquery-4.0.0-rc.1.js

https://code.jquery.com/jquery-4.0.0-rc.1.min.js

You can also get this release from npm:

npm install jquery@4.0.0-rc.1

Slim build

Sometimes you don’t need ajax, or you prefer to use one of the many standalone libraries that focus on ajax requests. And often it is simpler to use a combination of CSS and class manipulation for web animations. Finally, all of jQuery’s supported browsers (except for IE11) now have support for native Promises across the board, so Deferreds and Callbacks are no longer needed in most cases. Along with the regular version of jQuery that includes everything, we’ve released a “slim” version that excludes these modules. The size of jQuery is very rarely a load performance concern these days, but the slim build is about 8k gzipped bytes smaller than the regular version. These files are also available in the npm package and on the CDN:

https://code.jquery.com/jquery-4.0.0-rc.1.slim.js

https://code.jquery.com/jquery-4.0.0-rc.1.slim.min.js

These updates are already available as the current versions on npm. Information on all the ways to get jQuery is available at https://jquery.com/download/. Public CDNs receive their copies today, please give them a few days to post the files. If you’re anxious to get a quick start, use the files on our CDN until they have a chance to update.

Thanks

Thank you to all of you who participated in this release by submitting patches, reporting bugs, or testing, including ac-mmi, Michał Gołębiowski-Owczarek, neogy-akash, and the whole jQuery team.

Changelog

Full changelog: 4.0.0-rc.1

Build

  • Make the sed usage portable across Linux & macOS (a848611f)
  • Bump form-data from 4.0.2 to 4.0.4 (70ee64fc)
  • Test on Safari 18 & 17 instead of "latest-1" (958369f0)
  • Bump github/codeql-action in the github-actions group (19621e99)
  • Update the jQuery license link in comment headers (ec9a387e)
  • Try to unpack Firefox ESR via xz, fall back to bzip2 (dc5d1f7c)
  • Bump github/codeql-action in the github-actions group (0ef60202)
  • Bump undici and release-it (b668be0f)
  • Bump the github-actions group with 2 updates (bd6b453b)
  • Bump the github-actions group with 3 updates (de2ecfc0)
  • ESLint: Remove the outerIIFEBody exception to indent (50ca9571)
  • Bump the github-actions group with 2 updates (447432f4)
  • upgrade dependencies, including jtr@0.2.5 (047f8683)
  • Bump the github-actions group with 2 updates (667321eb)
  • Bump the github-actions group across 1 directory with 2 updates (098591e6)
  • Test on iOS 18, no longer test on iOS 15 (75b48e6a)
  • Bump github/codeql-action from 3.27.0 to 3.27.5 in the github-actions group (03e183c4)
  • Report Brotli sizes in compareSize (e4b5e622)
  • Fix pre release matching in compare size regex (041f6e34)
  • Make middleware-mockserver not crash on reading nonexistent files (d5ebb464)
  • Bump the github-actions group with 4 updates (07c9f02b)
  • Run tests on Node 22 & 23 (19716254)
  • Enforce ECMAScript 5 in tests via ESLint (#5542, d74fc265)
  • Bump the github-actions group with 3 updates (3ebe89f6)
  • Bump rollup from 4.19.0 to 4.22.4 (147964e1)
  • Bump webpack from 5.93.0 to 5.94.0 (3658caf1)
  • Bump github/codeql-action from 3.25.15 to 3.26.6 in the github-actions group (a6feeaa7)
  • align eslint config with 3.x branch as much as possible (7e6cee72)
  • Bump the github-actions group with 2 updates (55bc35bc)
  • upgrade dependencies, including requirejs to 2.3.7 (a7d3383e)
  • use –input-type=module in npm scripts (57ef12e0)

CSS

Core

  • Remove obsolete workarounds, update support comments (e2fe97b7)
  • Switch $.parseHTML from document.implementation to DOMParser (0e123509)

Docs

  • Align CONTRIBUTING.md with 3.x-stable (d9281061)
  • Update CONTRIBUTING.md (4ef25b0d)
  • add version support section to README (cbc2bc1f)

Event

  • Use .preventDefault() in beforeunload (7c123dec)

Manipulation

  • Make jQuery.cleanData not skip elements during cleanup (#5214, 3cad5c43)

Selector

  • Properly deprecate jQuery.expr[ ":" ]/jQuery.expr.filters (329661fd)

Tests

  • Use releases.jquery.com as external host for AJAX testing (f21a6ea6)
  • Fix tests for jQuery.get( String, null-ish, null-ish, String ) (05325801)
  • Add tests for jQuery.get( String, null-ish, null-ish, String ) (76687566)
  • Backport the hidden="until-found" attr tests from 3.x-stable (3a31866b)
  • migrate test runner to jquery-test-runner (733e62d2)
  • Add custom attribute getter tests to the selector module (44667709)
  • Switch to an updated fork of promises-aplus-tests (559bc5ac)
  • Run tests in Edge in IE mode in GitHub Actions (6d78c076)
  • Run tests on both real Firefox ESRs (4b7ecbad)
  • align mock.php spacing with 3.x-stable branch (d5ae14f6)
  • replace dead links in qunit fixture (dbc9dac7)
  • replace express with basic Node server (c85454a8)