Щороку JavaScript непомітно змінюється. Поки ми обговорюємо черговий фреймворк, десь у специфікації ECMA-262 тихо лагодять речі, через які ми роками писали костилі. Версія ECMAScript 2026 — саме про це: менше болю, менше lodash, більше «працює з коробки».
Головний вайб релізу — мова починає захищати розробника від власних помилок.
1. Масиви більше не зраджують
Скільки разів ти ловив баг через sort() або reverse(), які змінюють вихідний масив? У React це класика: відсортував — і стан поїхав.
Тепер є ось такі методи:
users.toSorted()
users.toReversed()
Оригінал цілий, карма чиста. Для джуна — мінус цілий клас загадкових багів, для мідла — код ближче до нормального функціонального стилю.
2. Set нарешті став корисним
Раніше порівняти дві множини = написати цикл або тягнути бібліотеку. Тепер:
a.union(b)
a.intersection(b)
a.difference(b)
Фільтри, теги, права доступу — усе робиться нативно й читабельно. Мінус самописні утиліти з папки helpers.
3. Регулярки без пасток
Динамічні RegExp — джерело сюрпризів і дір у безпеці. З’явився:
RegExp.escape(userInput)
Ввів користувач .* — і застосунок не зламався. Маленька функція, але економить години дебагу.
4. Ітератори як у дорослих
З ними тепер можна працювати майже як із масивами:
iterator.map(x => x * 2).take(3).toArray()
Крок до більш читабельного і продуктивного JS.
5. Асинхронність стала чистіша
Замість обгорток із try/catch:
Promise.try(() => fn())
Дрібниця, а код стає значно зручніше.
6) Temporal: тепер з датами можна жити, а не виживати.
Коротко про те, що реально змінює Temporal.
Тепер ти можеш:
✔️ порівнювати дати без getTime() і математики в мілісекундах;
✔️ рахувати діапазони: скільки днів між подіями, скільки місяців до дедлайну;
✔️ працювати з календарями без страху літнього часу;
✔️ мати «тільки дату» або «тільки час», а не дивний Date з усім одразу;
✔️ додавати «1 місяць» так, щоб це був справді місяць, а не 30 днів;
✔️ не ламати стан у React через мутабельність.
Як це виглядає:
Порівняння без магії:
date1.equals(date2)
Temporal.PlainDate.compare(a, b)
Діапазони та різниця:
start.until(end, { largestUnit: "days" })Арифметика дат:
date.add({ months: 1 })
date.subtract({ days: 10 })Чіткі типи замість хаосу:
PlainDate — просто дата
PlainTime — тільки час
ZonedDateTime — дата + зона
Instant — точний момент у UTC
Duration — інтервали
Часові зони без сліз:
event.withTimeZone("Europe/Kyiv")Головний ефект для фронтенду:
календарі та пікери дат — без бібліотек;
буккінг та підписки — без костилів;
міжнародні проєкти — без «чому в березні зникла година».
І найважливіше: Temporal немутабельний. Жоден метод тихо не перепише твою дату в стейті.
Це той момент, коли JavaScript вперше за 25 років отримав нормальну модель часу.
Що все це означає?
JavaScript явно рухається трьома рейками:
1) Менше магії.
Те, що ми копіювали зі StackOverflow, переїжджає у стандарт.
2) Безпека за замовчуванням.
Менше мутацій, менше неочікуваних ефектів.
3) Мінус залежності.
Багато задач, заради яких тягнули lodash та утиліти, вирішуються нативно.
Якщо ти джун — вітаю: мова, яку ти вчиш зараз, набагато дружелюбніша за ту, на якій писали «старші».
Якщо мідл — час потроху викидати самописні хелпери й переписувати їх на нові API.
ES2026 — JavaScript стає нуднішим, передбачуванішим і дорослішим. І це, мабуть, найкращий комплімент мові.
👉 Зберігай, щоб потім на рев’ю сказати: «навіщо lodash, у нас тепер все нативне».
https://tc39.es/ecma262/