{"id":147,"date":"2026-01-19T00:00:00","date_gmt":"2026-01-18T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/lt\/jquery-4-0-0-ka-realiai-reiskia-pirmas-didelis-atnaujinimas-per-beveik-desimtmeti\/"},"modified":"2026-01-19T00:00:00","modified_gmt":"2026-01-18T23:00:00","slug":"jquery-4-0-0-ka-realiai-reiskia-pirmas-didelis-atnaujinimas-per-beveik-desimtmeti","status":"publish","type":"post","link":"https:\/\/helloblog.io\/lt\/jquery-4-0-0-ka-realiai-reiskia-pirmas-didelis-atnaujinimas-per-beveik-desimtmeti\/","title":{"rendered":"jQuery 4.0.0: k\u0105 realiai rei\u0161kia pirmas didelis atnaujinimas per beveik de\u0161imtmet\u012f"},"content":{"rendered":"\n<p>2026-aisiais jQuery sukako 20 met\u0173: 2006-01-14 John Resig pristat\u0117 bibliotek\u0105 BarCamp renginyje Niujorke, o dabar jQuery komanda paskelb\u0117 galutin\u0119 jQuery <strong>4.0.0<\/strong> versij\u0105. Tai pirmas \u201emajor\u201c leidimas per beveik 10 met\u0173 \u2013 su ai\u0161kia kryptimi: daugiau moderni\u0173 standart\u0173, ma\u017eiau istorini\u0173 kompromis\u0173, ma\u017eesnis kodas ir \u0161varesnis vie\u0161as API.<\/p>\n\n\n\n<p>Svarbiausia praktin\u0117 \u017einut\u0117: tai yra \u201ebreaking changes\u201c turintis atnaujinimas, tod\u0117l prie\u0161 keldamas \u012f produkcij\u0105 praeik per oficial\u0173 <a href=\"https:\/\/jquery.com\/upgrade-guide\/4.0\/\">upgrade guide<\/a> ir pasinaudok <a href=\"https:\/\/github.com\/jquery\/jquery-migrate\/\">jQuery Migrate plugin<\/a> (\u012frankiu, kuris padeda aptikti\/u\u017eglaistyti nesuderinamumus). Komanda taip pat pra\u0161o: jei rasi problem\u0173 \u2013 registruok jas per <a href=\"https:\/\/github.com\/jquery\/jquery\/issues\">jQuery issue tracker<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kur gauti jQuery 4.0.0 (CDN, npm, slim)<\/h2>\n\n\n\n<p>Leidimas publikuojamas oficialiame jQuery CDN ir per npm. Tre\u010di\u0173j\u0173 \u0161ali\u0173 CDN paprastai \u012fsikelia kiek v\u0117liau (j\u0173 grafiko jQuery komanda nekontroliuoja), tod\u0117l grei\u010diausiam startui logi\u0161ka laikinai naudoti oficial\u0173 CDN.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Pilna versija (unminified): https:\/\/code.jquery.com\/jquery-4.0.0.js<\/li>\n\n\n<li>Pilna versija (minified): https:\/\/code.jquery.com\/jquery-4.0.0.min.js<\/li>\n\n\n<li>Slim build (unminified): https:\/\/code.jquery.com\/jquery-4.0.0.slim.js<\/li>\n\n\n<li>Slim build (minified): https:\/\/code.jquery.com\/jquery-4.0.0.slim.min.js<\/li>\n\n\n<li>npm: <code>npm install jquery@4.0.0<\/code><\/li>\n\n\n<li>Bendra atsisiuntimo informacija: https:\/\/jquery.com\/download\/<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Kod\u0117l \u0161is leidimas \u201elau\u017eo\u201c: s\u0105moningas \u201elegacy\u201c valymas<\/h2>\n\n\n\n<p>Did\u017eioji dalis nesuderinamum\u0173 atsirado ne \u0161iaip sau. Komanda pagaliau gal\u0117jo padaryti poky\u010dius, kuriuos met\u0173 metus buvo ne\u012fmanoma \u012fd\u0117ti \u012f \u201epatch\u201c ar \u201eminor\u201c: i\u0161mesta pasenusi logika, pa\u0161alinti anks\u010diau depreikuoti API, i\u0161valyti vie\u0161\u0173 funkcij\u0173 vidiniai (nedokumentuoti) parametrai, ir atsisakyta kai kuri\u0173 \u201emagical\u201c elgsen\u0173, kurios buvo per daug komplikuotos ir brangios palaikyti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nar\u0161ykli\u0173 palaikymas: IE<11 \u2013 viskas, IE11 \u2013 dar ne (kol kas)<\/h2>\n\n\n\n<p>jQuery 4.0 oficialiai nebesupportina <strong>IE 10 ir senesni\u0173<\/strong>. Nat\u016bralus klausimas \u2013 kod\u0117l nepa\u0161alintas IE11? Atsakymas paprastas: palaikymas bus nuimamas etapais, o kitas \u017eingsnis planuojamas <strong>jQuery 5.0<\/strong> (tai nurodyta per nuorod\u0105 \u012f planuojam\u0105 pakeitim\u0105: https:\/\/github.com\/jquery\/jquery\/pull\/5077). 4.0 etape i\u0161metamas b\u016btent kodas, skirtas IE versijoms senesn\u0117ms nei 11.<\/p>\n\n\n\n<p>Kartu nustota taikyti ir kit\u0173 itin sen\u0173 nar\u0161ykli\u0173 palaikym\u0105: <strong>Edge Legacy<\/strong>, <strong>iOS versijos senesn\u0117s nei paskutin\u0117s 3<\/strong>, <strong>Firefox senesn\u0117s nei paskutin\u0117s 2<\/strong> (i\u0161skyrus Firefox ESR), bei <strong>Android Browser<\/strong>. Komanda pabr\u0117\u017eia, kad daugumai projekt\u0173 papildom\u0173 veiksm\u0173 nereik\u0117s. Jei tau vis dar b\u016btina palaikyti \u0161iuos nar\u0161ykli\u0173 variantus \u2013 prakti\u0161kas patarimas vienas: lik su <strong>jQuery 3.x<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Saugumas ir politika: Trusted Types + CSP draugi\u0161kesnis script transportas<\/h2>\n\n\n\n<p>jQuery 4.0 \u012fsiveda palaikym\u0105 <strong>Trusted Types<\/strong> \u2013 tai nar\u0161ykli\u0173 mechanizmas, kuris padeda ma\u017einti XSS rizik\u0105 ir geriau integruojasi su grie\u017etesn\u0117mis saugumo politikomis. Konkre\u010diai: HTML, supakuotas \u012f <strong>TrustedHTML<\/strong> (MDN: https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/TrustedHTML), gali b\u016bti naudojamas kaip \u012fvestis jQuery DOM manipuliavimo metoduose taip, kad nepa\u017eeist\u0173 <code>require-trusted-types-for<\/code> <strong>Content Security Policy (CSP)<\/strong> direktyvos.<\/p>\n\n\n\n<p>\u0160alia to buvo sutvarkytas ir script u\u017ekrovimas per AJAX: nors kai kurios u\u017eklausos jau anks\u010diau naudojo <code>&lt;script&gt;<\/code> tag\u2019\u0105 atributams (pvz., <code>crossdomain<\/code>) i\u0161laikyti, dabar komanda <a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4763\">daugum\u0105 asinchronini\u0173 script u\u017eklaus\u0173 perjung\u0117 \u012f <code>&lt;script&gt;<\/code> tag\u2019us<\/a>. Tikslas \u2013 i\u0161vengti CSP klaid\u0173, kurios da\u017enai kyla naudojant inline script\u2019us.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Svarbi praktin\u0117 detal\u0117 apie headers<\/h4>\n\n\n<p>Vis dar yra keli atvejai, kai asinchroniniam script request\u2019ui naudojamas XHR, pvz., kai perduodi <code>&quot;headers&quot;<\/code> opcij\u0105. Komandos rekomendacija: vietoje to naudok <code>scriptAttrs<\/code>.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Vidus modern\u0117ja: jQuery \u0161altinis migruotas \u012f ES modules<\/h2>\n\n\n\n<p>Vienas did\u017eiausi\u0173 architekt\u016brini\u0173 poky\u010di\u0173 \u2013 jQuery \u0161altinis <code>main<\/code> \u0161akoje perkeliamas nuo <strong>AMD<\/strong> (kod\u0117l AMD: https:\/\/requirejs.org\/docs\/whyamd.html) prie <strong>ES modules<\/strong>. jQuery \u0161altinis ir anks\u010diau buvo publikuojamas per npm ir GitHub, bet jo nebuvo galima tiesiogiai importuoti kaip moduli\u0173 be <strong>RequireJS<\/strong> (https:\/\/requirejs.org\/), nes istori\u0161kai tai buvo pasirinktas build \u012frankis.<\/p>\n\n\n\n<p>Dabar paketavimui naudojamas <strong>Rollup<\/strong> (https:\/\/rollupjs.org\/introduction\/), o testai ES moduliams vykdomi atskirai. Rezultatas: jQuery geriau \u012fsipai\u0161o \u012f \u0161iuolaikinius build tool\u2019us, dev workflow\u2019us ir net \u012f \u201enativ\u0173\u201c nar\u0161yklin\u012f scenarij\u0173 su <code>&lt;script type=module&gt;<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pa\u0161alinti depreikuoti API: k\u0105 i\u0161met\u0117 ir kuo keisti<\/h2>\n\n\n\n<p>Kadangi tai \u201emajor\u201c leidimas, jQuery 4.0 galutinai atsisako funkcij\u0173, kurios buvo depreikuotos per kelias ankstesnes versijas. Dalis j\u0173 buvo planuota tik vidiniam naudojimui, o dalis \u0161iandien turi nat\u016bralius atitikmenis visose jQuery 4.0 palaikomose nar\u0161ykl\u0117se.<\/p>\n\n\n\n<p>Pa\u0161alintos funkcijos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>jQuery.isArray<\/code><\/li>\n\n\n<li><code>jQuery.parseJSON<\/code><\/li>\n\n\n<li><code>jQuery.trim<\/code><\/li>\n\n\n<li><code>jQuery.type<\/code><\/li>\n\n\n<li><code>jQuery.now<\/code><\/li>\n\n\n<li><code>jQuery.isNumeric<\/code><\/li>\n\n\n<li><code>jQuery.isFunction<\/code><\/li>\n\n\n<li><code>jQuery.isWindow<\/code><\/li>\n\n\n<li><code>jQuery.camelCase<\/code><\/li>\n\n\n<li><code>jQuery.nodeName<\/code><\/li>\n\n\n<li><code>jQuery.cssNumber<\/code><\/li>\n\n\n<li><code>jQuery.cssProps<\/code><\/li>\n\n\n<li><code>jQuery.fx.interval<\/code><\/li>\n\n<\/ul>\n\n\n\n<p>Vietoje j\u0173 si\u016bloma pereiti prie \u201enative\u201c atitikmen\u0173, pvz.: <code>Array.isArray()<\/code>, <code>JSON.parse()<\/code>, <code>String.prototype.trim()<\/code>, <code>Date.now()<\/code> ir pan.<\/p>\n\n\n\n<p>\u012edomus \u201ebonus\u201c: vien \u0161i\u0173 API pa\u0161alinimas kartu su sen\u0173 IE palaikymo kodo i\u0161metimu suma\u017eino bibliotekos dyd\u012f <strong>daugiau nei 3k bait\u0173 gzipped<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">jQuery prototype apsivalymas: push\/sort\/splice i\u0161mesti<\/h2>\n\n\n\n<p>Ilg\u0105 laik\u0105 jQuery prototype tur\u0117jo Array metodus, kurie elg\u0117si ne taip, kaip kiti jQuery metodai, ir realiai buvo skirti tik vidui. Kalba apie <code>push<\/code>, <code>sort<\/code> ir <code>splice<\/code>. jQuery 4.0 jie pa\u0161alinti i\u0161 jQuery prototype.<\/p>\n\n\n\n<p>Jei ka\u017ekur seniau buvai prisiri\u0161\u0119s prie tokios konstrukcijos kaip <code>$elems.push( elem )<\/code>, komanda si\u016blo pakeitim\u0105 \u012f standartin\u012f Array proto kvietim\u0105:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ jQuery 3.x (veik\u0117, bet buvo bloga praktika)\n$elems.push(elem);\n\n\/\/ jQuery 4.x (rekomenduojamas pakaitalas)\n[].push.call($elems, elem);\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#6A737D\">\/\/ jQuery 3.x (veik\u0117, bet buvo bloga praktika)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">$elems.<\/span><span style=\"color:#B392F0\">push<\/span><span style=\"color:#E1E4E8\">(elem);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ jQuery 4.x (rekomenduojamas pakaitalas)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">[].push.<\/span><span style=\"color:#B392F0\">call<\/span><span style=\"color:#E1E4E8\">($elems, elem);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Focus\/blur \u012fvyki\u0173 tvarka: dabar pagal W3C (ir tai gali u\u017ekli\u016bti)<\/h2>\n\n\n\n<p>Vienas nemalonesni\u0173 \u201ebreaking\u201c poky\u010di\u0173 \u2013 focus\/blur event\u2019\u0173 tvarka. Istori\u0161kai nar\u0161ykl\u0117s nesutar\u0117 d\u0117l <code>focusin<\/code>, <code>focusout<\/code>, <code>focus<\/code>, <code>blur<\/code> eili\u0161kumo, tod\u0117l jQuery kadaise pasirinko nuosekli\u0105 (bet ne visada sutampan\u010di\u0105 su standartais) tvark\u0105.<\/p>\n\n\n\n<p>Dabar, naujausios nar\u0161ykl\u0117s, kurias palaiko jQuery 4.0, suvienod\u0117jo\u2026 bet j\u0173 tvarka skiriasi nuo jQuery ankstesnio pasirinkimo. Nuo jQuery 4.0 biblioteka <strong>nebeperra\u0161o native elgsenos<\/strong>. Rezultatas: visos nar\u0161ykl\u0117s, i\u0161skyrus IE, seka dabartin\u0119 W3C specifikacij\u0105:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>blur<\/li>\n\n\n<li>focusout<\/li>\n\n\n<li>focus<\/li>\n\n\n<li>focusin<\/li>\n\n<\/ol>\n\n\n\n<p>Ankstesn\u0117 jQuery tvarka buvo: <code>focusout<\/code>, <code>blur<\/code>, <code>focusin<\/code>, <code>focus<\/code>. Paradoksas: vienintel\u0117 nar\u0161ykl\u0117, kuri realiai laik\u0117si senos W3C spec (iki jos atnaujinimo 2023 m.), buvo Internet Explorer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Slim build dar plonesnis: neb\u0117ra Deferreds ir Callbacks<\/h2>\n\n\n\n<p>jQuery 4.0.0 \u201eslim\u201c build\u2019as tapo dar ma\u017eesnis \u2013 i\u0161 jo pa\u0161alinti <strong>Deferreds<\/strong> ir <strong>Callbacks<\/strong> moduliai. Dabar jis apie <strong>19.5k bait\u0173 gzipped<\/strong>. Pagrindin\u0117 logika: Deferreds seniai palaik\u0117 <strong>Promises A+<\/strong> (https:\/\/promisesaplus.com\/), o \u0161iandien \u201enative\u201c Promise\u2019iai daugeliu atvej\u0173 u\u017etenka.<\/p>\n\n\n\n<p>Svarbi i\u0161lyga \u2013 \u201enative\u201c Promise\u2019ai yra visose jQuery palaikomose nar\u0161ykl\u0117se <strong>i\u0161skyrus IE11<\/strong>. Deferreds turi ir papildom\u0173 galimybi\u0173, kuri\u0173 Promise\u2019ai neturi, bet daugum\u0105 tipini\u0173 scenarij\u0173 galima perra\u0161yti \u012f Promise metodus. Jei tau b\u016btinas IE11, komanda rekomenduoja naudoti piln\u0105 build\u2019\u0105 arba prid\u0117ti polyfill\u2019\u0105 Promise\u2019ams.<\/p>\n\n\n\n<p>Beje, jQuery komanda pabr\u0117\u017eia, kad jQuery dydis \u0161iandien retai b\u016bna reali performance problema, bet slim build vis tiek yra apie <strong>8k gzipped<\/strong> bait\u0173 ma\u017eesnis u\u017e piln\u0105 variant\u0105.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trumpai apie poky\u010di\u0173 apimt\u012f: pilnas changelog ir sritys<\/h2>\n\n\n\n<p>Jei migruoji rimtesn\u0119 codebase\u2019\u0105 (ypa\u010d su \u012fdomesniu AJAX, selektoriais ar CSP), verta perb\u0117gti piln\u0105 pakeitim\u0173 s\u0105ra\u0161\u0105. Oficialus palyginimas: <strong>Full changelog: <a href=\"https:\/\/github.com\/jquery\/jquery\/compare\/3.7.1...4.0.0\">4.0.0<\/a><\/strong>.<\/p>\n\n\n\n<p>Changelog\u2019e poky\u010diai skirstomi \u012f sritis: Ajax, Attributes, CSS, Core, Data, Deferred, Deprecated, Dimensions, Docs, Effect\/Effects, Event, Manipulation, Offset, Release, Selector, Support, Traversing. Tai ne vien kosmetika \u2013 pvz., Ajax dalyje yra pakeitim\u0173 d\u0117l binary data\/FormData, JSONP elgsenos, script vykdymo s\u0105lyg\u0173 ir CSP klaid\u0173 prevencijos; Event dalyje \u2013 focus\/blur, <code>event.which<\/code> shim pa\u0161alinimas ir kt.; Core dalyje \u2013 <code>$.parseHTML<\/code> per\u0117jimas prie <code>DOMParser<\/code>, ESM\/CommonJS suderinamumo tvarkymai ir pan.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reunion ir 20-me\u010dio momentas<\/h2>\n\n\n\n<p>Smagus kontekstas: jQuery bendruomen\u0117 20-me\u010dio proga susitiko Dalase, o John Resig prisijung\u0117 per Zoom. Leidimas paskelbtas b\u016btent tuo metu, kai komanda buvo kartu.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1804\" height=\"1359\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/20\/2026\/01\/jquery-reunion-group-edited.jpeg\" alt=\"jQuery komandos ir bendruomen\u0117s susitikimo nuotrauka per 20-me\u010dio reunion Dalase\" class=\"wp-image-146\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/20\/2026\/01\/jquery-reunion-group-edited.jpeg 1804w, https:\/\/helloblog.io\/app\/uploads\/sites\/20\/2026\/01\/jquery-reunion-group-edited-300x226.jpeg 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/20\/2026\/01\/jquery-reunion-group-edited-1024x771.jpeg 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/20\/2026\/01\/jquery-reunion-group-edited-768x579.jpeg 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/20\/2026\/01\/jquery-reunion-group-edited-1536x1157.jpeg 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/20\/2026\/01\/jquery-reunion-group-edited-400x301.jpeg 400w\" sizes=\"auto, (max-width: 1804px) 100vw, 1804px\" \/><figcaption class=\"wp-element-caption\">jQuery 20-me\u010dio reunion Dalase (nuotrauka i\u0161 oficialaus jQuery blogo \u012fra\u0161o). \u2014 <em>Forr\u00e1s: blog.jquery.com<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Pad\u0117kos prisid\u0117jusiems<\/h2>\n\n\n\n<p>\u0160iame leidime dalyvavo daug \u017emoni\u0173 \u2013 nuo patais\u0173 ir bug report\u0173 iki testavimo. Oficialiai pamin\u0117ti: <a href=\"https:\/\/github.com\/sashashura\">Alex<\/a>, <a href=\"https:\/\/github.com\/aelafifi\">Ahmed S. El-Afifi<\/a>, <a href=\"https:\/\/github.com\/fecore1\">fecore1<\/a>, <a href=\"https:\/\/github.com\/fras2560\">Dallas Fraser<\/a>, <a href=\"https:\/\/github.com\/gibson042\">Richard Gibson<\/a>, <a href=\"https:\/\/github.com\/mgol\">Micha\u0142 Go\u0142\u0119biowski-Owczarek<\/a>, <a href=\"https:\/\/github.com\/pgrimaud\">Pierre Grimaud<\/a>, <a href=\"https:\/\/github.com\/gabibguti\">Gabriela Gutierrez<\/a>, <a href=\"https:\/\/github.com\/vanillajonathan\">Jonathan<\/a>, <a href=\"https:\/\/github.com\/Necmttn\">Necmettin Karakaya<\/a>, <a href=\"https:\/\/github.com\/andersk\">Anders Kaseorg<\/a>, <a href=\"https:\/\/github.com\/wonseop\">Wonseop Kim<\/a>, <a href=\"https:\/\/github.com\/simon04\">Simon Legner<\/a>, <a href=\"https:\/\/github.com\/ShashankaNataraj\">Shashanka Nataraj<\/a>, <a href=\"https:\/\/github.com\/patocallaghan\">Pat O&#8217;Callaghan<\/a>, <a href=\"https:\/\/github.com\/coliff\">Christian Oliff<\/a>, <a href=\"https:\/\/github.com\/DimitriPapadopoulos\">Dimitri Papadopoulos Orfanos<\/a>, <a href=\"https:\/\/github.com\/wonhyoung05\">Wonhyoung Park<\/a>, <a href=\"https:\/\/github.com\/bubbatls\">Bruno PIERRE<\/a>, <a href=\"https:\/\/github.com\/renbaoshuo\">Baoshuo Ren<\/a>, <a href=\"https:\/\/github.com\/beatrizrezener\">Beatriz Rezener<\/a>, <a href=\"https:\/\/github.com\/skrobinson\">Sean Robinson<\/a>, <a href=\"https:\/\/github.com\/edg2s\">Ed Sanders<\/a>, <a href=\"https:\/\/github.com\/Krinkle\">Timo Tijhof<\/a>, <a href=\"https:\/\/github.com\/gaohuia\">Tom<\/a>, <a href=\"https:\/\/github.com\/wenz\">Christian Wenz<\/a>, <a href=\"https:\/\/github.com\/ygj6\">ygj6<\/a> ir visa jQuery komanda.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Greita migravimo \u201emintin\u0117\u201c (k\u0105 pasitikrinti prie\u0161 upgrade)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Jei tavo auditorijoje dar yra IE10 ar senesni \u2013 jQuery 4.0 tau netinka (lik su 3.x).<\/li>\n\n\n<li>Jei turi grie\u017et\u0105 CSP (ypa\u010d su <code>require-trusted-types-for<\/code>) \u2013 \u012fvertink Trusted Types poky\u010dius ir script transporto elgsen\u0105.<\/li>\n\n\n<li>Jei tavo kode dar yra <code>jQuery.isArray<\/code>, <code>jQuery.parseJSON<\/code>, <code>jQuery.trim<\/code>, <code>jQuery.now<\/code> ir pana\u0161\u016bs \u201edeprecated\u201c helper\u2019iai \u2013 perra\u0161yk \u012f native atitikmenis.<\/li>\n\n\n<li>Jei ka\u017ekur nety\u010dia naudoji <code>$elems.push\/sort\/splice<\/code> \u2013 persira\u0161yk \u012f <code>Array.prototype.*.call(...)<\/code>.<\/li>\n\n\n<li>Jei aplikacijoje remiesi focus\/blur event\u2019\u0173 eili\u0161kumu \u2013 patestuok form\u0173 validacijas, fokusavimo logik\u0105, modalus ir pan.<\/li>\n\n\n<li>Jei naudoji slim build: \u012fsivertink, ar tau nereikia Deferreds\/Callbacks, ir k\u0105 darysi d\u0117l Promise\u2019\u0173 IE11 atveju (pilnas build arba polyfill).<\/li>\n\n\n<li>Prie\u0161 produkcij\u0105 praeik oficial\u0173 upgrade guide: https:\/\/jquery.com\/upgrade-guide\/4.0\/ ir, jei reikia, \u012fsijunk jQuery Migrate: https:\/\/github.com\/jquery\/jquery-migrate\/.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Nuorodos \/ \u0160altiniai<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/blog.jquery.com\/2026\/01\/17\/jquery-4-0-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery 4.0.0<\/a><\/li><li><a href=\"https:\/\/jquery.com\/upgrade-guide\/4.0\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery Upgrade Guide 4.0<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery-migrate\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery Migrate plugin release<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/compare\/3.7.1...4.0.0\" target=\"_blank\" rel=\"noopener noreferrer\">Full changelog: 4.0.0<\/a><\/li><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/TrustedHTML\" target=\"_blank\" rel=\"noopener noreferrer\">TrustedHTML &#8211; MDN<\/a><\/li><li><a href=\"https:\/\/promisesaplus.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Promises\/A+<\/a><\/li><li><a href=\"https:\/\/requirejs.org\/docs\/whyamd.html\" target=\"_blank\" rel=\"noopener noreferrer\">AMD: Why AMD?<\/a><\/li><li><a href=\"https:\/\/requirejs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">RequireJS<\/a><\/li><li><a href=\"https:\/\/rollupjs.org\/introduction\/\" target=\"_blank\" rel=\"noopener noreferrer\">Rollup Introduction<\/a><\/li><li><a href=\"https:\/\/jquery.com\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery download<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/5077\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery 5.0 IE11 removal plan (PR #5077)<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4763\" target=\"_blank\" rel=\"noopener noreferrer\">Switch async script requests to use &lt;script&gt; tags (PR #4763)<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>jQuery 4.0.0 pagaliau oficialiai i\u0161leistas: ma\u017eiau \u201elegacy\u201c, daugiau \u0161iuolaikinio nar\u0161ykli\u0173 pasaulio, bet kartu ir keli s\u0105moningi lau\u017eantys poky\u010diai. \u0160iame \u012fra\u0161e susid\u0117liojam, kas pasikeit\u0117 ir kur da\u017eniausiai u\u017ekli\u016bsi migruodamas nuo 3.x.<\/p>\n","protected":false},"author":55,"featured_media":145,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[95],"tags":[97,98,48,96,53],"class_list":["post-147","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-csp","tag-es-modules","tag-javascript","tag-jquery","tag-migracija"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/posts\/147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/comments?post=147"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/posts\/147\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/media\/145"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/media?parent=147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/categories?post=147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/lt\/wp-json\/wp\/v2\/tags?post=147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}