SvelteKit. Його переваги й недоліки

Алекс Монахов

Фреймворк який підтримує SSR і SSG, але має суттєву перевагу над Next.js та Nuxt.js.

Перевага полягає у тому, що оскільки SvelteKit не юзає Virtual DOM, то для нього гідрація на клієнті не така страшна як для Next.js та Nuxt.js.

Нагадаю, шо там відбувається під час SSR-рендерингу.

  1. Ми рендеримо на сервері.
  2. Результат рендеру конвертуємо в HTML (на інішл лоаді).
  3. Віддаємо HTML + JS (який потрібен для гідрації).
  4. Браузер отримав HTML і шоб відтворити Virtual DOM, ще раз рендерить документ.
  5. Тільки після рендеру навішуються обробники подій, що робить сторінку інтерактивною.

Тобто, проблема на кроці 4 призводить до того, що:

  1. JS-файл, який сервер віддає клієнту, є великим;
  2. Вантажиться він довше;
  3. Юзає CPU клієнта для повторного рендеру.

Цю траблу частково хендлять в Next.js серверні компоненти, які не гідруются на клієнті. Але ж не всі компоненти серверні. Клієнтські компоненти так само мають цю проблему, просто тепер обсяг проблеми — не абсолютно всі компоненти, а тільки клієнтські, що все ще не ідеально.

В SvelteKit, оскільки ми не маємо Virtual DOM, при гідрації ми просто одразу навішуємо обробники подій на певні DOM-елементи.

Тобто, JS-файл, який ми відправляємо на клієнта, у нас менший, бо там тільки код для обробки подій. Також ми не «жремо» CPU клієнта, бо нам не треба рендерити Virtual DOM на клієнті.

Тому в SvelteKit немає потреби в серверних компонентах, так як проблеми, яку вони вирішують, просто нема у SvelteKit.

Є одна проблема…

У SvelteKit при цьому є інший мінус, з яким я зіштовхнувся. Це мале ком’юніті. Тобто, наприклад, якшо взяти Angular, то навколо нього вибудовуєтся той же Firebase, з Next.js — той Vercel, який дає комфортно юзати останні фічі фреймворку.

З SvelteKit поки не знайшов прям комфортного рішення. Спочатку глянув Firebase, там зараз активно розвивають App Hosting фічу — хостінг додатків, збудованих на SSR-фреймворках, поки що підтримує Angular та Next.js.

SvelteKit можна розгорнути на Firebase, але на cloud-функціях. Але, узявши до уваги, що вже розроблятся той же App Hosting як більш привабливе рішення, то влазити в cloud-функції не дуже хочеться.

Потім глянув, що там у Vercel, як там розгорнути SvelteKit. Це здалося простіше, ніж у Firebase, але все ж не так просто, як Next.js.

Ще один момент — хотів спокійно взяти shadcn-лібу. Для SvelteKit є fork оригінальної ліби, але також не дуже хочеться брати у прод щось, що є fork-ом.

Таких моментів ще було декілька, де рішення наче є, але глянувши на фреймворки з більшим ком’юніті, аналогічні рішення просто стабільніші.

Тому на даному етапі, все ж таки муваюсь у сторону Next.js з Vercel.

Цей текст взято з особистого блогу після отримання дозволу автора.

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

Останні статті

Навіщо тестові, коли є портфоліо?

Одразу два офтопи: Я також виконувала тестові; Тестове має бути коротким, чітким, і, бажано, оплачуваним.…

25.07.2025

Припиніть писати код, як ніби ви працюєте в Google

Давайте відразу розставимо крапки над «і». Ви не працюєте в Google. Я теж. Більшість з…

24.07.2025

Штучний інтелект Tesla. Навіщо?

Моя Tesla зробила мене поганою водійкою. Я завжди приїжджала на кілька хвилин пізніше, ніж передбачав…

23.07.2025

Слабкий пароль зруйнував 158‑річну британську компанію

Логістична компанія KNP Logistics Group, відома під брендом Knights of Old, припинила роботу після того, як хакери з угруповання…

23.07.2025

Чи маєте відчуття цінності в компанії, де працюєте?

Поговорімо на важливу тему — відчуття власної цінності в компанії. Чи завжди ви відчуваєте, що…

22.07.2025

Як я провела експеримент та отримала карʼєрну консультацію від ChatGPT

Одразу проговорю, що версія ChatGPT безкоштовна. Отже, попросила свого Альта уявити, що він — карʼєрний…

21.07.2025