# jQuery: what changed from 3 to 4 - Product: jQuery (https://whatsnew.fyi/product/jquery) - Vendor: OpenJS Foundation - Range: changelog entries numbered after 3.7.1 up to and including 4.0.0, stable releases only - Entries below: 1 release (newest first) - Resolved: 3 is 3.7.1 and 4 is 4.0.0, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 1 - Page: https://whatsnew.fyi/product/jquery/compare/3...4 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. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (20 changes, grouped by kind) ### Added #### 4.0.0 (2026-01-18) - Support binary data including FormData in Ajax - Support headers for script transport even when cross-domain - Support null as success functions in jQuery.get ### Changed #### 4.0.0 (2026-01-18) - Don't treat array data as binary in Ajax requests - Allow processData: true even for binary data - Don't auto-execute scripts unless dataType provided - Execute JSONP error script responses - Simplify jQuery.ajaxSettings.xhr - Make .attr(name, false) remove for all non-ARIA attrs - Refactor val(): don't strip carriage return, isolate IE workarounds ### Fixed #### 4.0.0 (2026-01-18) - Make responseJSON work for erroneous same-domain JSONP requests - Avoid CSP errors in the script transport for async requests - Overwrite s.contentType with content-type header value if any - Do not execute scripts for unsuccessful HTTP responses - Don't stringify attributes in the setter - Fix dimensions of table col elements - Make offsetHeight(true) etc. include negative margins ### Removed #### 4.0.0 (2026-01-18) - Drop the json to jsonp auto-promotion logic - Drop the toggleClass(boolean|undefined) signature ### Deprecated #### 4.0.0 (2026-01-18) - AJAX event aliases ## Release notes ### 4.0.0 — Release 4.0.0 - Date: 2026-01-18 - Version: 4.0.0 - Original notes: https://github.com/jquery/jquery/releases/tag/4.0.0 - Permalink: https://whatsnew.fyi/product/jquery/releases/4.0.0 - **changed** — Don't treat array data as binary in Ajax requests - **changed** — Allow processData: true even for binary data - **added** — Support binary data including FormData in Ajax - **added** — Support headers for script transport even when cross-domain - **added** — Support null as success functions in jQuery.get - **changed** — Don't auto-execute scripts unless dataType provided - **fixed** — Make responseJSON work for erroneous same-domain JSONP requests - **changed** — Execute JSONP error script responses - **fixed** — Avoid CSP errors in the script transport for async requests - **removed** — Drop the json to jsonp auto-promotion logic - **fixed** — Overwrite s.contentType with content-type header value if any - **deprecated** — AJAX event aliases - **fixed** — Do not execute scripts for unsuccessful HTTP responses - **changed** — Simplify jQuery.ajaxSettings.xhr - **changed** — Make .attr(name, false) remove for all non-ARIA attrs - **fixed** — Don't stringify attributes in the setter - **removed** — Drop the toggleClass(boolean|undefined) signature - **changed** — Refactor val(): don't strip carriage return, isolate IE workarounds - **fixed** — Fix dimensions of table col elements - **fixed** — Make offsetHeight(true) etc. include negative margins #### Changelog https://blog.jquery.com/2026/01/17/jquery-4-0-0/ ##### Ajax - Don't treat array data as binary ([992a1911](https://github.com/jquery/jquery/commit/992a1911d0b6195012edc25fd5a48810d4be64b5)) - Allow `processData: true` even for binary data ([ce264e07](https://github.com/jquery/jquery/commit/ce264e0789116e37fe371503537a217c038dfae8)) - Support binary data (including FormData) ([a7ed9a7b](https://github.com/jquery/jquery/commit/a7ed9a7b6364273b1b964fd2cf9691dec2cbec6b)) - Support `headers` for script transport even when cross-domain ([#5142](https://github.com/jquery/jquery/issues/5142), [6d136443](https://github.com/jquery/jquery/commit/6d1364431b63b0d3bbe1c5fd604131f9db453396)) - Support `null` as success functions in `jQuery.get` ([#4989](https://github.com/jquery/jquery/issues/4989), [74978b7e](https://github.com/jquery/jquery/commit/74978b7e892537559850cda7332bdab8106e6354)) - Don't auto-execute scripts unless dataType provided ([#4822](https://github.com/jquery/jquery/issues/4822), [025da4dd](https://github.com/jquery/jquery/commit/025da4dd343e6734f3d3c1b4785b1548498115d8)) - Make responseJSON work for erroneous same-domain JSONP requests ([68b4ec59](https://github.com/jquery/jquery/commit/68b4ec59c8f290d680e9db4bc980655660817dd1)) - Execute JSONP error script responses ([#4771](https://github.com/jquery/jquery/issues/4771), [a1e619b0](https://github.com/jquery/jquery/commit/a1e619b03a557b47c3e26a5e74af12b63a0d5e73)) - Avoid CSP errors in the script transport for async requests ([#3969](https://github.com/jquery/jquery/issues/3969), [07a8e4a1](https://github.com/jquery/jquery/commit/07a8e4a177550025c1a08d7ac754839733943f55)) - Drop the json to jsonp auto-promotion logic ([#1799](https://github.com/jquery/jquery/issues/1799), [#3376](https://github.com/jquery/jquery/issues/3376), [e7b3bc48](https://github.com/jquery/jquery/commit/e7b3bc488d01d584262e12a7c5c25f935d0d034b)) - Overwrite s.contentType with content-type header value, if any ([#4119](https://github.com/jquery/jquery/issues/4119), [7fb90a6b](https://github.com/jquery/jquery/commit/7fb90a6beaeffe16699800f73746748f6a5cc2de)) - Deprecate AJAX event aliases, inline event/alias into deprecated ([23d53928](https://github.com/jquery/jquery/commit/23d53928f383b0e7440bf4b08b7524e6af232fad)) - Do not execute scripts for unsuccessful HTTP responses ([#4250](https://github.com/jquery/jquery/issues/4250), [50871a5a](https://github.com/jquery/jquery/commit/50871a5a85cc802421b40cc67e2830601968affe)) - Simplify jQuery.ajaxSettings.xhr ([#1967](https://github.com/jquery/jquery/issues/1967), [abdc89ac](https://github.com/jquery/jquery/commit/abdc89ac2e581392b800c0364e0f5f2b6a82cdc6)) ##### Attributes - Make `.attr( name, false )` remove for all non-ARIA attrs ([#5388](https://github.com/jquery/jquery/issues/5388), [063831b6](https://github.com/jquery/jquery/commit/063831b6378d518f9870ec5c4f1e7d5d16e04f36)) - Shave off a couple of bytes ([b40a4807](https://github.com/jquery/jquery/commit/b40a4807b604efbde51faf075d11e25441af1990)) - Don't stringify attributes in the setter ([#4948](https://github.com/jquery/jquery/issues/4948), [4250b628](https://github.com/jquery/jquery/commit/4250b628783d7bfa92ec6c5550c6e4b22fab6034)) - Drop the `toggleClass(boolean|undefined)` signature ([#3388](https://github.com/jquery/jquery/issues/3388), [a4421101](https://github.com/jquery/jquery/commit/a4421101fd6d9d7b0550210f8e8690641733dd9a)) - Refactor val(): don't strip carriage return, isolate IE workarounds ([ff281991](https://github.com/jquery/jquery/commit/ff2819911da6cbbed5ee42c35d695240f06e65e3)) - Don't set the type attr hook at all outside of IE ([9e66fe9a](https://github.com/jquery/jquery/commit/9e66fe9acf0ef27681f5a21149fc61678f791641)) ##### CSS - Fix dimensions of table `