Зараз читаютьПрактичні новини про код, AI та технології — без інформаційного шуму
Розробка4 хв читання

Svelte 5.57.0 виправив SSR, hydration і реакції та розширив server API

Реліз додає server-side типи, context.has і методи SvelteMap, а також усуває граничні помилки форм, error boundaries, transitions і reactive graph.

Svelte 5.57.0 виправив SSR, hydration і реакції та розширив server API

Svelte 5.57.0 додав нові server-side типи, метод has для context API, defaultValue для select і методи get-or-insert для SvelteMap. Значно важливішим за короткий список функцій є великий блок виправлень у SSR, hydration, reactions, transitions і продуктивності. Реліз не змінює основну модель Svelte 5, але закриває граничні випадки, які могли призводити до витоків реакцій, подвійних подій або різниці між серверним та клієнтським DOM.

Абстрактна редакційна ілюстрація реактивного вебінтерфейсу, серверного рендерингу та захисної межі помилок
Редакційна AI-ілюстрація до огляду Svelte 5.57.0; вона не входить до першоджерела й не відтворює інтерфейс Svelte.

Server API став зручнішим для бібліотек

Модуль svelte/server тепер експортує RenderOutput, SyncRenderOutput, Csp і Sha256Source. Це дає авторам адаптерів і SSR-інструментів офіційні типи замість локальних копій внутрішніх структур. Менше дублювання означає простіше оновлення, але нові exports не гарантують сумісності будь-якого стороннього адаптера — його тести все одно потрібні.

Для context API додано has, що дозволяє перевірити наявність значення без спроби його отримати. Це корисно для компонентів із необов’язковим провайдером. У SvelteMap з’явилися getOrInsert і getOrInsertComputed: вони прибирають повторювану послідовність «перевірити — створити — записати», зберігаючи реактивне спостереження за Map.

Форми й hydration отримали точкові виправлення

select тепер підтримує defaultValue, а компілятор виправляє статичні value-атрибути й function bindings для select під час SSR. Також збережено defaultChecked у hydrated radio inputs зі spread attributes і правильне застосування статичного значення textarea під час CSR.

Ці зміни важливі для форм, що рендеряться на сервері, а потім «оживають» у браузері. Якщо HTML від сервера й очікування клієнта розходяться, користувацьке значення може бути перезаписане. Після оновлення варто тестувати не тільки initial render, а й введення до завершення hydration, reset форми та навігацію назад.

Реакції та error boundaries

Помилки teardown у $derived тепер проходять через invoke_error_boundary. Виправлено залежності reaction, що кидає виняток: прочитані derived-значення більше не повинні залишатися витеклими або «застрягати» у помилковому стані. Server rendering також викликає onDestroy, навіть коли render завершується винятком.

Для production це означає передбачуваніше прибирання ресурсів, але error boundary не замінює спостережуваність. Помилка може бути локально оброблена й не обвалити сторінку, проте її слід передати в logging або tracing, інакше команда побачить лише деградований UI без причини.

Практичний висновок: додайте тест, у якому derived або SSR-компонент навмисно кидає виняток, і перевірте одночасно fallback, cleanup та запис у систему моніторингу.

Швидші реактивні графи та SSR

Сортування legacy $: statements із Map lookup прискорено з квадратичної до лінійної складності. Для великих компонентів це зменшує час підготовки реактивного порядку. Інші оптимізації повторно використовують кеш у select guard, об’єднують SSR markers, прискорюють просту деструктуризацію в @const і не створюють зайвий CSS для exported snippets.

Окремо виправлено подвійний onoutroend при HMR, вимірювання вкладених transitions, елементи без layout box у slide transition та «воскресіння» вузлів під час pause/resume ancestor block. Це граничні випадки, але саме вони часто породжують нестабільні UI-тести.

План оновлення

  • Оновити Svelte у staging разом із сумісними версіями SvelteKit та адаптера.
  • Прогнати SSR/hydration тести для select, textarea, radio, custom elements і boolean attributes.
  • Перевірити error boundaries, onDestroy та reactions, які завершуються винятком.
  • Окремо перевірити transitions і HMR, але не використовувати HMR-поведінку як доказ production-коректності.
  • Для великих legacy-компонентів порівняти compile time і runtime profile до та після оновлення.

Реліз включає десятки дрібніших виправлень whitespace, character references, CSS tree-shaking, URL ports і ownership mutation. Через ширину змін найкраща стратегія — повний regression suite та canary, особливо якщо застосунок сильно залежить від SSR і складних форм.

Джерело та права

Матеріал є самостійним українським перекладом-переказом release notes Svelte 5.57.0, опублікованих 28 серпня 2026 року учасниками Svelte. Код, документація та release notes офіційного репозиторію поширюються за MIT License. Перекладено, адаптовано й доповнено редакцією «Бібліотеки програміста». Обкладинка створена редакцією за допомогою AI і не входить до першоджерела.

Першоджерело:Svelte ↗
Автор:Svelte Contributors
Ліцензія:MIT License ↗

Матеріал перекладено, переказано та доповнено редакцією українською мовою.

</>

Читайте далі — ми вже розбираємо наступну важливу тему.

Далі за темою

Схожі матеріали