---
title: "jQuery 4.0とは｜4.0.0の変更点・CDNとSRI・3系からの移行手順"
url: "https://www.issoh.co.jp/tech/details/10659/"
published: 2026-01-20
updated: 2026-10-15
categories: ["JavaScript"]
publisher: "株式会社一創"
---

# jQuery 4.0とは｜4.0.0の変更点・CDNとSRI・3系からの移行手順

jQuery 4.0.0は2026年1月17日に公開された、約10年ぶりのメジャーバージョンです。IE10以前のサポート終了、非推奨APIの削除、フォーカスイベント順序の変更、ES modules化が中心で、公式は「多くのプロジェクトは軽微な修正で動く」としています。この記事では、CDNで読み込むURLとSRIハッシュ、3.7.1との違い、jQuery Migrateを使った移行手順を、jQuery 3.7.1・4.0.0とMigrate 3.x・4.xをjsdom上で実行して確かめた結果とあわせて整理します。

## まとめ：jQuery 4.0.0の要点と移行判断

- 最新版は4.0.0（2026年10月15日時点のnpmのlatest）。4.0.xのパッチは出ていない。3系の最新リリースは3.7.1
- 公式CDNは `https://code.jquery.com/jquery-4.0.0.min.js`。SRIは公式掲載の `sha256-OaVG6prZf4v69dPg6PhVattBXkcOWQB62pdZ3ORyrao=`
- 削除されたのは `$.trim`・`$.isArray`・`$.parseJSON` など。削除された関数を呼ぶと TypeError になる
- 数値を渡したときの px 自動付与が width・margin などに限られ、`gap` などは値が捨てられる。Migrateは警告するが元に戻さない
- Deferred・Callbacksが外れたのはslimビルドだけ。通常版には残っている
- 3.7.1のまま、Migrate 3.6.0を入れると4.0で壊れる箇所の多くが警告される。上げる前の洗い出しに使える
- 移行は「4.xへ上げる→非圧縮のMigrate 4.xを足す→コンソールの JQMIGRATE 警告を潰す→Migrateを外す」の順
- IE11はまだサポート対象。IE9・IE10・Edge Legacyが必要なら3.7.1の継続を検討する

## jQuery 4.0.0の公開日と2026年10月時点の最新版

[公式ブログの告知](https://blog.jquery.com/2026/01/17/jquery-4-0-0/)は2026年1月17日（米国時間）で、npmへの公開記録は2026年1月18日0時28分（UTC）です。John ResigがjQueryを発表した2006年1月14日からちょうど20年の節目にあたります。2026年10月15日にnpmのレジストリを確認した時点で `latest` は4.0.0のままで、4.0.1などのパッチ版は出ていません。

| パッケージ              | 最新版          | 公開日（npm）   | 位置づけ          |
| ------------------ | ------------ | ---------- | ------------- |
| jQuery 4.x         | 4.0.0        | 2026-01-18 | Full          |
| jQuery 3.x         | 3.7.1        | 2023-08-28 | Critical-only |
| jQuery 2.x・1.x     | 2.2.4・1.12.4 | 2016年      | None          |
| jQuery Migrate 4.x | 4.0.2        | 2026-01-21 | 4.0への移行用      |
| jQuery Migrate 3.x | 3.6.0        | 2025-12-11 | 3.x上での事前点検用   |

jQuery本体の位置づけ欄は[jQueryのGitHubリポジトリ](https://github.com/jquery/jquery)のREADMEにある「Version support」表の表記です。3.xは重大な問題の修正だけを受ける扱いになり、2.xと1.xは更新が止まっています。4.0.0-beta（2024年2月）、4.0.0-rc.1（2025年8月）を経ての正式版で、rc.2は正式版と同じ日に公開されています。Migrate 4.0.1はnpmにモジュール版のファイルが欠けていたため、3日後に4.0.2が出ています。

## CDNでjQuery 4.0.0を読み込むタグとSRI

### 公式CDN（code.jquery.com）のURL

公式CDNには通常の script 形式と、`type="module"` で読むES module形式が、それぞれ4種類ずつ置かれています。本番は圧縮版（min）を使います。

| 種類           | ファイル名                      | サイズ（gzip後）       |
| ------------ | -------------------------- | ---------------- |
| 通常版・圧縮       | jquery-4.0.0.min.js        | 78,748B（27,533B） |
| slim版・圧縮     | jquery-4.0.0.slim.min.js   | 56,032B（19,443B） |
| 通常版・非圧縮      | jquery-4.0.0.js            | 開発・デバッグ用         |
| ES module・圧縮 | jquery-4.0.0.module.min.js | import で読む       |
| （参考）3.7.1・圧縮 | jquery-3.7.1.min.js        | 87,533B（30,350B） |

表のgzip後サイズは、npmパッケージのdist配下にあるjquery.min.jsとjquery.slim.min.jsを、ファイル名情報を含める `gzip -9 -c` で圧縮した値です。gzipヘッダーに含めるファイル名や圧縮実装によって、サイズは変わります。3.7.1からの縮小は通常版で2,817B（gzip後）でした。公式ブログは「3k bytes以上の削減」としていますが測定条件が書かれておらず、この実測とは一致しません。slim版は公式の「約19.5k bytes gzipped」と一致します。

### integrity属性付きのscriptタグ

[公式CDNのリリース一覧](https://releases.jquery.com/jquery/)に掲載されているSRIハッシュをそのまま使います。2026年10月15日にcode.jquery.comから取得したファイルの sha256 を手元で計算しても、同じ値になりました。

```
<script src="https://code.jquery.com/jquery-4.0.0.min.js"
  integrity="sha256-OaVG6prZf4v69dPg6PhVattBXkcOWQB62pdZ3ORyrao="
  crossorigin="anonymous"></script>
```

slim版を選ぶ場合は、上の通常版タグの代わりに次のタグを使います。両方を同時に読み込む必要はありません。

```

<script src="https://code.jquery.com/jquery-4.0.0.slim.min.js"
  integrity="sha256-8DGpv13HIm+5iDNWw1XqxgFB4mj+yOKFNb+tHBZOowc="
  crossorigin="anonymous"></script>
```

cdnjsやjsDelivrなどの第三者CDNにも4.0.0は置かれていますが、ファイルの配信元が変わるので、integrityの値は各CDNの表示か取得したファイルで確かめてから書きます。integrityとcrossoriginの意味や、ハッシュが合わないときにブラウザがどう止めるかは[外部スクリプトの読み込み方とSRI・CSP](/tech/details/1465/)で扱っています。

### ES moduleとnpmで読み込む方法

4.0.0から、ES module版はデフォルトエクスポートと名前付きエクスポート（`jQuery` と `$`）の両方を持ちます。npmでは `npm install jquery@4.0.0` で入り、package.json の `exports` で通常版・slim版・factory版が振り分けられます。npmの基本は[npmのCLIとpackage.jsonの解説](/tech/details/17664/)を参照してください。

```
<script type="module">
  import $ from "https://code.jquery.com/jquery-4.0.0.module.min.js";
  $("#app").text("jQuery " + $.fn.jquery);
</script>
```

Vite・webpackなどのバンドラでは、JavaScriptファイルに次のimportを書きます。

```

import $ from "jquery";          // 通常版
import $slim from "jquery/slim";  // slim版
```

## jQuery 4.0.0の主な変更点（3.7.1との実行比較）

[公式のアップグレードガイド](https://jquery.com/upgrade-guide/4.0/)に載る変更は20項目以上あります。下の表は、既存コードの動きが変わる代表的な処理を、jsdom 30.1.3上でjQuery 3.7.1と4.0.0に渡した結果です（実ブラウザの描画やレイアウトは測っていません）。

| 処理                           | 3.7.1    | 4.0.0       |
| ---------------------------- | -------- | ----------- |
| typeof $.trim                | function | undefined   |
| typeof $.fn.push             | function | undefined   |
| toggleClass(false) 後のclass   | “”（全削除）  | “x y”（変化なし） |
| css(“gap”, 10)               | 10px     | “”（設定されない）  |
| css(“width”, 10)             | 10px     | 10px        |
| data().hasOwnProperty(“key”) | true     | TypeError   |
| slim版の typeof $.Deferred     | function | undefined   |
| 通常版の typeof $.Deferred       | function | function    |

### 削除された非推奨APIと代替

公式ブログが列挙している削除APIは次の13個です。これは削除項目の全件一覧ではありません。このうち削除された関数を4.0.0で呼ぶと `TypeError: $.trim is not a function` の形で止まります。検索で多い `$.trim` は、文字列の `trim()` メソッドにそのまま置き換えられます。

| 削除されたAPI                  | 代替                                |
| ------------------------- | --------------------------------- |
| jQuery.isArray            | Array.isArray()                   |
| jQuery.parseJSON          | JSON.parse()                      |
| jQuery.trim               | String.prototype.trim()           |
| jQuery.type               | typeof・Array.isArray・instanceof   |
| jQuery.now                | Date.now()                        |
| jQuery.isNumeric          | Number.isFinite()（数値文字列は別途判定）     |
| jQuery.isFunction         | typeof x === “function”           |
| jQuery.isWindow           | obj != null && obj === obj.window |
| jQuery.camelCase          | なし（内部用）                           |
| jQuery.nodeName(el, name) | nodeNameとnameを両方小文字化して比較          |
| jQuery.cssNumber          | なし（単位を明記）                         |
| jQuery.cssProps           | なし（ベンダー接頭辞は不要）                    |
| jQuery.fx.interval        | なし（requestAnimationFrame）         |

アップグレードガイドの削除一覧には `jQuery.unique` も載っており（代替は `jQuery.uniqueSort`）、4.0.0では実際に undefined でした。削除対象をgrepするときは14個として探す方が漏れません。`jQuery.nodeName(el, name)` は比較するname側も小文字化していたので、置き換えは `el.nodeName.toLowerCase() === name.toLowerCase()` とします。一方 `jQuery.proxy()` は4.0.0でも削除されておらず、非推奨のまま残っています（Migrate 4.0.2も警告ではなく info で知らせるだけでした）。

### push・sort・spliceとtoggleClass(boolean)の削除

jQueryオブジェクトに付いていた配列メソッド `push`・`sort`・`splice` は、文書化されていない内部用として削除されました。プラグインが `$elems.push(el)` を使っている場合は、公式が示す `[].push.call($elems, el)` に書き換えます（4.0.0で要素数が1から2に増えることを確認）。

`toggleClass(false)` は3.7.1では全クラスを外しましたが、4.0.0では何もしません。変数が偶然 undefined や false になって全クラスが消える事故を防ぐための削除で、クラスを外したい処理は `removeClass()` に書き換えます。

### CSS数値へのpx自動付与対象の縮小

3.x は `css()` に単位なしの数値を渡すと、`line-height` や `z-index` などの例外を除いて px を付けていました。4.0.0は付ける対象を width・height・min/max系、top・right・bottom・left、margin・padding、border幅に限っています。それ以外のプロパティのうち単位が必要なものに数値を渡すと、`gap: 10` のような不正な値になり、ブラウザに捨てられます。jsdomでは `font-size`・`border-radius`・`gap` に数値の10を渡すと、いずれも空文字になりました（`margin-top` は10pxのまま）。

```
// 4.0.0では gap が設定されない
$(".grid").css("gap", 10);
// 単位を文字列で明記する
$(".grid").css("gap", "10px");
```

エラーが出ずに見た目だけが崩れるため、4.0.0への更新後はコンソールの確認に加えて表示も確認します。`.css(` と `.animate(` に数値を渡している箇所のうち、font-sizeやborder-radiusのように単位が必要で自動付与の対象外のプロパティは、単位付きの文字列に直します。opacity・z-index・line-heightは単位なしが正しい値なので、そのままで構いません。

### data()のhasOwnPropertyと細かな破壊的変更

4.0.0は、`data()` の戻り値が Object.prototype を継承しないオブジェクトになりました。`constructor` のような名前のキーを保存しても組み込みのプロパティと衝突しないための修正ですが、副作用として `$el.data().hasOwnProperty("key")` は `TypeError: ... hasOwnProperty is not a function` で止まります（3.7.1ではtrue）。公式ガイドの書き換え例どおり、`"key" in $el.data()` か `Object.hasOwn($el.data(), "key")` にすると4.0.0でもtrueが返りました。ただし、Object.hasOwnはIE11では使えないため、IE11を対象にする場合は前者のin演算子を使います。

- `jQuery.event.special` も Object.prototype を継承しなくなり、4.0.0では `$.event.special.hasOwnProperty` が undefined だった。独自イベントを登録するプラグインがこれを呼んでいると止まる
- opacity用のCSSフックが削除された。DOMから切り離した要素の `.css("opacity")` は、標準準拠のブラウザでは “1” ではなく空文字を返す（公式ガイドの記載。jsdomでは3.7.1・4.0.0とも “1” で再現できなかった）
- Sizzle時代の引数付きカスタム擬似クラス（`$.expr[":"]` に旧形式で足したもの）は使えなくなった。独自セレクタを定義したプラグインは要確認
- 3.7.0で改名された `jQuery.Deferred.getStackHook` の旧名が削除された（現在の名前は `getErrorHook`）

### フォーカスイベントの発火順序

3.xまでのjQueryは、focus系イベントの順序を focusout → blur → focusin → focus に揃えていました。4.0.0はブラウザ本来の挙動に任せるようになり、IE以外のブラウザでは現在のW3C仕様どおり blur → focusout → focus → focusin の順になります。blurの処理結果をfocusoutで読むなど、順序に依存したフォームの入力チェックがあると動きが変わります。

### Ajax：JSONP自動昇格の廃止とスクリプト実行

- `dataType: "json"` でコールバック付きのURLを渡すと、3.xは自動でJSONPに切り替えていた。4.0.0はこれをやめた。JSONPを使うなら `dataType: "jsonp"` を明示し、クロスドメインは基本的にCORSで受ける。JSONPの仕組みとXSSの危険は[JSONPの仕組みとCORSとの違い](/tech/details/8182/)が詳しい
- 同じドメインから取得したスクリプトも、`dataType: "script"` を指定しない限り実行されなくなった（3.0でクロスドメインだけに入った制限を同一ドメインへ拡大）
- 非同期のスクリプト読み込みは、可能な場合にscriptタグを使うよう変わった。ただし、headersオプションを指定する場合など、XHRを使う例外がある。CSPで同一ドメインのスクリプトを許可していないと、3.xでは実行されていたスクリプトが止まる
- `data` に FormData などのバイナリを渡した送信に対応した。文字列化できないデータを渡したときの従来の挙動に依存するコードは影響を受ける可能性がある

### Trusted Typesの受け入れとCSP対応

4.0.0は、`html()`・`append()` などのDOM操作メソッドが TrustedHTML を受け取れるようになりました。CSPで `require-trusted-types-for 'script'` を有効にしたサイトでも、TrustedHTMLに包んだHTMLならjQuery経由で挿入できます。CSPの設定そのものは[CSPのnonce方式とXSS防御の実装判断](/tech/details/16358/)で扱っています。

### slimビルドからDeferred・Callbacks・queueを除外

「jQuery 4.0でDeferredが廃止された」という説明を見かけますが、除外されたのはslimビルドだけです。4.0.0の通常版では `$.Deferred`・`$.Callbacks`・`$.fn.queue` はそのまま使え、slim版ではいずれも undefined でした。slim版はもともとAjaxとエフェクトを含まず、4.0でDeferred・Callbacks・queueも外れました。`show()`・`hide()`・`toggle()` はslim版に残っています。

slim版で `$.Deferred()` や `$.when()` に依存するコードは通常版へ切り替えるか、ネイティブのPromiseへ書き換えます。IE11ではネイティブPromiseが使えないため、IE11を残すなら通常版を使います。

### ES modules化とNode.jsでの読み込み

ソースコードはAMDからES modulesへ移り、ビルドツールはRequireJSからRollupに替わりました。配布ファイルのUMD形式は残るので、scriptタグで読む既存サイトには影響しません。Node.jsとjsdomでjQueryを動かすテストでは読み込み方法が変わります（後述）。また、RequireJSなどでjQueryのソースをAMDとして直接読み込んでいた構成も影響を受けます。

## 対応ブラウザとサポートを外れた環境

| ブラウザ                   | jQuery 4.0の対応範囲                  |
| ---------------------- | -------------------------------- |
| Internet Explorer      | 11のみ（10以下は対象外）                   |
| Chrome・Edge・Safari     | 最新と1つ前                           |
| Firefox                | 最新と1つ前、およびESR                    |
| Opera                  | 最新のみ                             |
| iOS Safari             | 最新から2つ前まで                        |
| Chrome on Android      | ブラウザの最新と1つ前（Android Browserは対象外） |
| Edge Legacy（非Chromium） | 対象外                              |

IE11のサポートは段階的に外す計画で、次の段階はjQuery 5.0と公式ブログに書かれています。アップグレードガイドは「対応ブラウザは次のメジャー版（5.0）まで変えない」としており、4.x系の途中でIE11が切られることはありません。5.0の公開時期は2026年10月時点で告知されていません。

## jQuery 3.xから4.0への移行手順（jQuery Migrate）

### Migrate 3.6.0によるjQuery 3.7.1上での非互換点検

4.0へ上げる前に、3.7.1のまま壊れる箇所を拾っておく方法があります。2025年12月11日に出た[jQuery Migrate 3.6.0](https://github.com/jquery/jquery-migrate/releases/tag/3.6.0)は、リリースノートで「jQuery 3.xのアプリを将来の4.xへの移行に備えさせる」版だと説明されており、`$.fn.push`・`jQuery.proxy`・`jQuery.now`・JSONの自動JSONP昇格などへの警告が追加されました。3.7.1と各版のMigrateで同じ処理を呼ぶと、警告の範囲は次のように違いました。

| 呼んだ処理              | 3.7.1＋Migrate 3.4.1 | 3.7.1＋Migrate 3.6.0 |
| ------------------ | ------------------- | ------------------- |
| $.trim()           | 警告                  | 警告                  |
| $.now()            | なし                  | 警告                  |
| $elems.push()      | なし                  | 警告                  |
| $.proxy()          | なし                  | 警告                  |
| toggleClass(false) | 警告                  | 警告                  |
| css(“gap”, 10)     | 警告                  | 警告                  |

どちらの組み合わせでも動作は3.7.1のまま（`gap` は10px、`toggleClass(false)` は全クラス削除）という結果でした。ただし、Migrateは旧挙動を復元するパッチも適用するため、事前点検は検証環境で行います。Migrate 3.6.0の対応範囲は jQuery 3.x までで、4.xに上げたらMigrate 4.xに入れ替えます。3.5.2を使っている場合も、3.6.0に上げてから洗い出す方が警告の範囲が広くなります。

### アップグレードガイドの5手順

公式の[jQuery Core 4.0 Upgrade Guide](https://jquery.com/upgrade-guide/4.0/)が示す3.xからの手順は次のとおりです。

1. ページのjQueryを最新の4.x（現在は4.0.0）に上げる
2. 非圧縮版のjQuery Migrate 4.x（現在は4.0.2）をjQueryの直後に読み込む
3. 使っているプラグインを新しい版に上げる（推奨）
4. ページを操作し、コンソールに出る JQMIGRATE 警告を1件ずつ直す
5. Migrateを外し、4.xだけで動くことを確かめる

Migrate 4.xが警告するのは3.xから4.0への変更だけです。1.xや2.xを使っているなら、まず最新の1.x・2.xと非圧縮のMigrate 1.xで古いAPIの警告を解消し、Migrateを外します。次に3.xとMigrate 3.xで同様に移行し、最後に4.0とMigrate 4.xへ進みます。圧縮版のMigrateは警告を出さない（読み込み時の1行だけ）ので、手順2では必ず非圧縮版を使います。複数版のMigrateの同時読み込みはサポートされていません。

```
<script src="https://code.jquery.com/jquery-4.0.0.js"></script>
<script src="https://code.jquery.com/jquery-migrate-4.0.2.js"></script>
```

### Migrate 4.0.2が出す警告の実例

jQuery 4.0.0とMigrate 4.0.2を読み込み、前の表と同じ処理を順に呼ぶと、コンソールに次のメッセージが出ました。

```
JQMIGRATE: Migrate is installed with logging active, version 4.0.2
JQMIGRATE: jQuery.trim() is removed; use String.prototype.trim
JQMIGRATE: jQuery.now() is removed; use Date.now()
JQMIGRATE: jQuery.fn.push() is removed; use .add() or convert to an array
JQMIGRATE: jQuery.proxy() is deprecated
JQMIGRATE: jQuery.fn.toggleClass( [ boolean ] ) is removed
JQMIGRATE: Auto-appending 'px' to number-typed values for jQuery.fn.css( "gap", value ) is removed
```

3.6.0では「deprecated」だった文言が、4.0.2では削除済みの機能に対して「removed」に変わります。`jQuery.proxy()` だけは削除されていないため `console.info` で出ます。出たメッセージは `jQuery.migrateMessages` の配列に1種類1回ずつ残り、今回は6件でした。記録されるのは実際に動いた処理の分だけなので、操作していない画面は拾えません。テストで画面を一通り操作したうえで、`$.trim(` などの文字列をソースからgrepする作業と併用します。

### Migrateが元に戻さない変更

Migrate 4.0.2を入れると削除APIは復元されます。実際に `$.trim(" a ")` は “a” を返し、`toggleClass(false)` も3.x同様に全クラスを外しました。ただし、次の2つは既定設定では旧挙動に戻りません。pxの自動付与は警告しますが、JSONP自動昇格は復元パッチが無効なため、その警告も出ません。

- **px の自動付与**：警告は出るが `gap` は空のまま。Migrate 4.0.2のソースでも css へのパッチは警告を出したあと4.0の `css()` をそのまま呼んでいる
- **JSONの自動JSONP昇格**：Migrate内に復元コードはあるが、セキュリティ上の理由で既定では無効（`jsonp-promotion` パッチ）

このため「Migrateを入れて本番に出しておけば3.xと同じに動く」とは言えません。Migrateの非圧縮版を本番に常駐させて移行を済ませたことにする運用は避け、警告を潰したらMigrateを外すところまでを移行作業とします。

### Node.jsとjsdomのテストで起きる読み込みエラー

3.xでは、グローバルな window が無いNode.jsで `require("jquery")(window)` と書けば動きました。4.0.0では `Error: jQuery requires a window with a document` で止まり、専用の `jquery/factory` を使う必要があります。

注意したいのは、アップグレードガイドの例（`require("jquery/factory")(window)`）がそのままでは動かないことです。4.0.0の `jquery/factory` は `{ jQueryFactory }` というオブジェクトを返すため、関数として呼ぶと `TypeError: require(...) is not a function` になりました（2026年10月15日にjsdom 30.1.3で再確認）。npmパッケージのREADMEに書かれた次の形が正しい書き方です。

```
const { JSDOM } = require("jsdom");
const { window } = new JSDOM("");
const { jQueryFactory } = require("jquery/factory");
const $ = jQueryFactory(window);
```

ES moduleの場合は、次の例を別の.mjsファイルとして実行します。

```
import { JSDOM } from "jsdom";
import { jQueryFactory } from "jquery/factory";
const { window } = new JSDOM("");
const $ = jQueryFactory(window);
// slim版は "jquery/factory-slim"
```

jsdomの window を `globalThis` に先に割り当ててから読み込む方法でも、factoryを使わずに動きます。

## jQuery 3.7.1を使い続ける場合の判断基準

3.7.1は2026年10月時点で3.x系の最新リリースです。[jQueryのサポートページ](https://jquery.com/support/)は「3.xは重大なセキュリティ修正とバグ修正だけを受ける」とし、4.xへの更新を勧めています。3.xのサポート終了日はこのページに書かれておらず、古い版を使い続ける組織向けには、OpenJS Foundationの枠組みによる商用のセキュリティサポートが案内されています。GitHubのセキュリティアドバイザリに載っている脆弱性は2020年のCVE-2020-11022・CVE-2020-11023（いずれも3.5.0で修正）の2件で、3.7.1は対象範囲に入っていません。

- **3.7.1に残るべき場面**：IE9・IE10・Edge Legacyなど、3.7.1では対応できるが4.0では対象外となるブラウザを業務で使う利用者がいる。4.0非対応のプラグインを差し替えられない
- **WordPressのサイト**：WordPress 7.1.3（2026年10月6日）が同梱するのはjQuery 3.7.1とMigrate 3.4.1。開発版（trunk）では2026年9月28日にMigrateだけが3.6.0へ更新され、jQueryは3.7.1のまま（[script-loader.php](https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-includes/script-loader.php)で確認）。テーマやプラグインが同梱版を前提にしているので、`wp_deregister_script` で4.0.0に差し替えるのは管理画面の動作まで確認できる場合に限る。プラグインの多いサイトでは、[WordPressの保守・メンテナンス](/service/web/wordpress-support/)の中で検証環境を用意してから判断する
- **jQuery UIを使っている**：4.0.0に対応するのはjQuery UI 1.13.3以降。最新は1.14.2（npmの公開日は2026年1月28日）
- **4.0へ上げる価値が大きい場面**：CSPでTrusted Typesを強制したい。ES modulesのままバンドルしたい。IE11以外の旧環境を切れる

新規にjQueryを入れる理由が「DOM操作を少し楽にしたい」だけなら、jQuery自体を入れずに済ませる選択肢もあります。HTML属性で振る舞いを書く[Alpine.jsの実装とCSP対応](/tech/details/16008/)や、サーバーとの部分更新に絞った[htmxのhx-属性の使い方](/tech/details/15371/)が、jQueryのよくある用途を置き換えます。

## よくある質問

### jQuery 4.0.0のリリース日はいつですか？

公式ブログでの公開は2026年1月17日（米国時間）で、npmには2026年1月18日（UTC）に登録されています。2026年10月15日時点で4.0.xのパッチ版は出ておらず、4.0.0が最新です。

### jQuery 4で$.trimは使えなくなりましたか？

使えません。4.0.0では `$.trim` は undefined で、呼ぶと TypeError になります。`$.trim(str)` は `str.trim()` に置き換えます。null や undefined が入りうる変数なら `String(str == null ? "" : str).trim()` のように先に文字列化します。この書き方なら、IE11が解釈できないnull合体演算子も避けられます。

### jQuery 4.0でDeferredは廃止されましたか？

廃止されていません。Deferred・Callbacks・queueが外れたのはslimビルドだけで、通常版の4.0.0には残っています。3.7.0で改名された `jQuery.Deferred.getStackHook`（現 `getErrorHook`）の旧名だけが削除されました。

### WordPressのjQueryは4.0になっていますか？

2026年10月時点ではなっていません。WordPress 7.1.3の同梱はjQuery 3.7.1とMigrate 3.4.1で、開発版でもjQuery本体は3.7.1のままです。WordPressのサイトで4.0の影響を確かめたい場合は、ステージング環境で差し替えてテーマとプラグインの動作を確認します。

### jQuery Migrateは3.5.2・3.6.0・4.0.2のどれを使えばよいですか？

使っているjQuery本体の版で決まります。jQuery 3.xのまま非互換を洗い出すなら `jquery-migrate-3.6.0.js`（3.5.2より警告の範囲が広い）、jQuery 4.0.0へ上げた後は `jquery-migrate-4.0.2.js` です。どちらも非圧縮版を使います。圧縮版の `.min.js` は警告を出さないため、洗い出しには使えません。npmでは `npm install jquery-migrate@4.0.2` のように版を指定して入れます。

## 関連記事

- [外部スクリプトとは？script srcの読み込み方とSRI・CSPで安全に使う方法](/tech/details/1465/)
- [JSONPとは？読み方・仕組みとCORSとの違い、fetchで使えない理由とXSS対策](/tech/details/8182/)
- [コンテンツセキュリティポリシー（CSP）とは？nonce方式の設定とXSS防御の実装判断を解説](/tech/details/16358/)
- [Alpine.jsとは？18ディレクティブの実装とCSP対応・採用判断を解説](/tech/details/16008/)
- [npmとは？CLIとレジストリの役割・package.jsonとv12の変更点を解説](/tech/details/17664/)

---

出典: [jQuery 4.0とは｜4.0.0の変更点・CDNとSRI・3系からの移行手順](<https://www.issoh.co.jp/tech/details/10659/>)（株式会社一創）
