Svelte

Svelte — свободный и открытый веб-фреймворк компонентной архитектуры для разработки frontend-приложений и одновременно язык программирования[2], созданный Ричем Харрисом и поддерживаемый командой Svelte[3].

В отличие от традиционных JavaScript-библиотек, Svelte не является монолитной библиотекой, импортируемой приложениями: вместо этого, Svelte-компилятор преобразует шаблоны HTML в специализированный код, который напрямую взаимодействует с DOM, что позволяет уменьшить размер передаваемых файлов и повысить производительность[4]. Пользовательский код также анализируется компилятором, который вставляет вызовы для автоматического пересчёта данных[5] и рендеринга элементов интерфейса при изменении зависимостей[6]. Такой подход избавляет от накладных расходов на промежуточные представления в рантайме, например, виртуальный DOM[7]; в то время как традиционные фреймворки (такие как React и Vue.js) основную работу выполняют в браузере, на этапе выполнения[3][4][5][6][7][8].

Сам компилятор написан на JavaScript[8][9], распространяется под лицензией MIT и размещён на GitHub[8]. Среди популярных frontend-фреймворков Svelte известен одним из самых маленьких размеров итоговых бандлов — порядка 2 КБ[10].

Общие сведения
Svelte
Тип Веб-фреймворк
Автор Rich Harris
Разработчики Разработчики Svelte и различные участники сообщества, включая Rich Harris, Conduitry, Tan Li Hau, Ben McCann, Simon Holthausen
Написана на JavaScript (с компонентами на TypeScript)
Операционная система кроссплатформенность
Первый выпуск 26 ноября 2016[1]
Аппаратная платформа Веб-платформа
Последняя версия 5.55.0 (23 марта 2026)
Репозиторий github.com/sveltejs/svel…
Лицензия MIT
Сайт svelte.dev

История

Прототипом Svelte стал проект Ractive.js, созданный Ричем Харрисом в 2013 году[11].

Первая версия Svelte была написана на JavaScript и вышла 29 ноября 2016 года; название Svelte выбрал Рич Харрис и его коллеги в редакции The Guardian.

Вторая версия вышла 19 апреля 2018 года; разработчики устранили ряд недочётов предыдущей редакции, например, заменив двойные фигурные скобки на одиночные.

Третья версия, написанная на TypeScript, была выпущена 21 апреля 2019 года и представила новую модель реактивности, где компилятор прозрачно отслеживает присваивания[5].

В октябре 2020 года был анонсирован фреймворк SvelteKit, а в марте 2021 года — открыт бета-доступ[12]. Релиз SvelteKit 1.0 состоялся в декабре 2022 года[13].

Версия 4 появилась 22 июня 2023 года как обслуживание, отличаясь меньшим размером и большей скоростью по сравнению с третьей[14]. Существенной частью стало внутреннее переписывание с TypeScript обратно на JavaScript с типизацией через JSDoc[9], что вызвало дискуссии среди разработчиков[15][16].

Пятая версия Svelte была представлена 19 октября 2024 года на конференции Svelte Summit Fall 2024 — выпуск произошёл публично с участием команды и Рича Харриса. Svelte 5 — переработка архитектуры фреймворка с изменением ключевых концепций реактивности и повторного использования кода[17]. Главное нововведение — руны (runes), особый синтаксис объявления реактивных состояний и связанного кода, которые помогают компилятору отслеживать связи между состояниями и DOM[18]. В Svelte 5 также реализованы сниппеты — повторно используемые фрагменты кода внутри компонентов[19].

На том же саммите в 2024 году Бен МакКанн анонсировал официальную Svelte CLI под именем sv в npm[20].

В начале 2025 года команда представила Asynchronous Svelte — экспериментальный набор возможностей асинхронной реактивности с использованием выражений await[21]; на август 2025 года эта возможность доступна через экспериментальную опцию компилятора[22]. Параллельно был представлен механизм удалённых функций (remote functions) для RPC во фреймворке SvelteKit[23].

Ключевые ранние участники проекта: Conduitry с момента выпуска первой версии, Tan Li Hau с 2019 года, Ben McCann — с 2020 года. В 2022 году Рич Харрис и Саймон Холтхаузен присоединились к Vercel для работы над Svelte на постоянной основе[24]. В 2023 году к ним присоединился Доминик Ганнавей из команды React[25].

Синтаксис

Приложения и компоненты Svelte определяются в файлах с расширением .svelte, представляющих собой HTML-документы с расширениями для шаблонов на базе JavaScript, по синтаксису схожие с JSX.

Ключевые возможности Svelte реализованы через руны (runes): синтаксические элементы, выглядящие как вызовы функций, но используемые компилятором как макросы:

  • $state — объявление реактивного состояния;
  • $derived — объявление состояния, выводимого из одного или нескольких других состояний;
  • $effect — код, который выполняется при изменении зависимостей.

Синтаксис { ... } позволяет выводить значения JavaScript прямо в шаблоне элементов и компонентов[26], аналогично интерполяции в JavaScript. Такой синтаксис также применяется в атрибутах элементов — для двустороннего связывания данных, обработки событий и задания CSS-стилей.

Ниже приведён пример To-do списка на Svelte:

<script>
	let value = $state();
	const todos = $state([]);
	const all = $derived(todos.length);
	const done = $derived(todos.filter(todo => todo.done).length);

	function onsubmit(e) {
			e.preventDefault();
			todos.push({ text: value, done: false });
			e.target.reset();
	}
</script>

<span>Todo List</span>
<small>completed {done}/{all}</small><br />

{#each todos as { text, done }, index}
	<input type="checkbox" bind:checked={todos[index].done} id={text} />	
	<label for={text} class:done>{text}</label>
	<button onclick={() => todos.splice(index, 1)}>Remove</button>
	<br />
{/each}

<form {onsubmit}>
	<br />
	<label for="input">Add todo</label>
	<br />
	<input type="text" name="input" bind:value />
</form>

<style>
	span {
		font-size: 20px;
		font-weight: bold;
	}

	.done {
		text-decoration-line: line-through;
	}
</style>

Связанные проекты

Разработчики Svelte создали SvelteKit как официальный инструмент для построения приложений на базе Svelte. Это фреймворк в духе Next.js, значительно сокращающий количество кода, отправляемого в браузер. До этого у команды был проект Sapper, предшественник SvelteKit[27].

Разработчики Svelte поддерживают ряд интеграций с популярными программными инструментами и экосистемами: Vite, Rollup, Webpack, TypeScript, VS Code, Chrome DevTools, ESLint, Prettier[28]. Также внешние проекты, такие как Storybook, реализуют интеграции с Svelte и SvelteKit.

Влияние

Vue.js во многом заимствовал принципы API и концепцию однокомпонентных файлов у Ractive.js — предшественника Svelte[11].

Распространение

Svelte получил широкое признание среди разработчиков, регулярно занимая лидирующие позиции в крупных опросах. В 2021 году он занял первое место среди веб-фреймворков по любви по версии Stack Overflow и был признан фронтенд-фреймворком с наибольшей удовлетворённостью пользователей в опросе State of JS 2020 года[29][30].

В 2024 году Svelte вновь вошёл в число наиболее положительно оцениваемых frontend-фреймворков по результатам State of JS[31]. Согласно опросу Stack Overflow 2024 года, 73 % разработчиков, работавших с Svelte, хотят продолжить его использовать; команда Stack Overflow применила Svelte для создания сайта с результатами опроса[32].

Svelte был принят рядом крупных интернет-компаний: The New York Times, Google, Apple, Spotify, Radio France, Square, Yahoo!, ByteDance, Rakuten, Bloomberg, Reuters, IKEA, Facebook, Logitech, Brave[33][34][35][36].

Независимое сообщество Svelte Society организует конференции Svelte Summit, издаёт новостную рассылку, ведёт подкаст и каталог инструментов и шаблонов для Svelte[37].

Примечания

  1. https://svelte.dev/blog/frameworks-without-the-framework
  2. Harris, Rich The truth about Svelte (амер. англ.). GitHub Gist (26 ноября 2018). Дата обращения: 21 декабря 2022. Архивировано 25 апреля 2025 года.
  3. 1 2 Krill, Paul Slim, speedy Svelte framework puts JavaScript on a diet. InfoWorld (2 декабря 2016). Архивировано 17 февраля 2024 года.
  4. 1 2 React vs. Svelte, the JavaScript build-time framework. react-etc.net. Архивировано 15 июля 2025 года.
  5. 1 2 3 Svelte 3: Rethinking reactivity (англ.). svelte.dev (22 апреля 2019). Дата обращения: 7 августа 2021. Архивировано 8 августа 2025 года.
  6. 1 2 Svelte 3 Front-End Framework Moves Reactivity into the JavaScript Language, Q&A with Rich Harris. InfoQ. Архивировано 3 октября 2025 года.
  7. 1 2 Virtual DOM is pure overhead (англ.). svelte.dev (27 декабря 2018). Архивировано 15 сентября 2025 года.
  8. 1 2 3 GitHub - sveltejs/svelte: Cybernetically enhanced web apps. GitHub (11 января 2020). Архивировано 14 января 2020 года.
  9. 1 2 TS to JSDoc Conversion #8569. GitHub.com. Архивировано 8 сентября 2025 года.
  10. Frontendeng.dev. Svelte vs React: Что лучше? (англ.). frontendeng.dev (1 августа 2023). Архивировано 13 декабря 2024 года.
  11. 1 2 О фреймворке Svelte (амер. англ.). ValueLogic (19 ноября 2020). — «Кстати, синтаксис Vue был вдохновлён Ractive.js, прямым предшественником Svelte.» Дата обращения: 10 июня 2021. Архивировано 27 марта 2022 года.
  12. Harris, Rich SvelteKit is in public beta (амер. англ.). svelte.dev (23 марта 2021). Дата обращения: 3 августа 2021. Архивировано 4 августа 2025 года.
  13. Accouncing SvelteKit 1.0 (14 декабря 2022). Дата обращения: 16 декабря 2022. Архивировано 17 сентября 2025 года.
  14. team, The Svelte Announcing Svelte 4 (англ.). svelte.dev (22 июня 2023). Дата обращения: 8 августа 2023. Архивировано 28 июля 2025 года.
  15. TS to JSDoc Conversion. Hacker News (news.ycombinator.com) (10 мая 2023). Архивировано 1 августа 2025 года.
  16. Lordy, I did not expect an internal refactoring PR to end up #1 on Hacker News. ... Hacker News (news.ycombinator.com) (10 мая 2023). Архивировано 26 июля 2025 года.
  17. Svelte 5 is alive. svelte.dev (22 октября 2024). Архивировано 16 сентября 2025 года.
  18. Introducing runes. svelte.dev (20 сентября 2023). Архивировано 16 октября 2025 года.
  19. {#snippet ...}. svelte.dev.
  20. McCann, Ben Introducing the new Svelte CLI (англ.). svelte.dev (24 октября 2024). Дата обращения: 20 декабря 2024. Архивировано 26 июля 2025 года.
  21. Harris, Rich Asynchronous Svelte · sveltejs/svelte · Discussion #15845 (28 апреля 2025). Архивировано 20 сентября 2025 года.
  22. await • Docs • Svelte. Дата обращения: 13 августа 2025. Архивировано 6 октября 2025 года.
  23. Holthausen, Simon Remote Functions · sveltejs/kit · Discussion #13897 (17 июня 2025). Архивировано 5 августа 2025 года.
  24. Harris, Rich Событие для @sveltejs: теперь я перешёл в @vercel для полноценной работы над проектом! (амер. англ.). Twitter (11 ноября 2021). Дата обращения: 4 сентября 2022. Архивировано 4 сентября 2022 года.
  25. trueadm/status/1640761270566633472 (англ.). X (formerly Twitter). Дата обращения: 30 сентября 2023. Архивировано 29 марта 2023 года.
  26. Svelte tutorial page. svelte.dev. Дата обращения: 6 июля 2022. Архивировано 30 января 2020 года.
  27. Harris, Rich Sapper: Towards the ideal web app framework (амер. англ.). svelte.dev (31 декабря 2017). Дата обращения: 29 ноября 2022. Архивировано 21 июня 2025 года.
  28. Svelte (амер. англ.). GitHub. Дата обращения: 3 августа 2021. Архивировано 11 октября 2025 года.
  29. Stack Overflow Developer Survey 2021 (амер. англ.). Stack Overflow. Дата обращения: 26 октября 2021. Архивировано 25 июня 2022 года.
  30. State of JS 2020: Front-end Frameworks (англ.). 2020.stateofjs.com. Дата обращения: 26 октября 2021. Архивировано 13 января 2021 года.
  31. State of JavaScript 2024: Front-end Frameworks (англ.). 2024.stateofjs.com. Дата обращения: 28 июня 2025. Архивировано 9 октября 2025 года.
  32. 2024 Stack Overflow Developer Survey (англ.). Stack Overflow. Дата обращения: 28 июня 2025. Архивировано 9 октября 2025 года.
  33. Radio France migrated their site to SvelteKit (амер. англ.). reddit.com (2 сентября 2021). Дата обращения: 4 июня 2024. Архивировано 4 июня 2024 года.
  34. Svelte • Cybernetically enhanced web apps (амер. англ.). svelte.dev. Дата обращения: 3 августа 2021.
  35. Websites using Svelte - Wappalyzer. www.wappalyzer.com. Дата обращения: 3 августа 2021. Архивировано 12 июля 2025 года.
  36. Your Profile, Your Home Experience (амер. англ.). yourhome.fb.com. Дата обращения: 1 декабря 2021.
  37. Home - Svelte Society (англ.). sveltesociety.dev. Дата обращения: 3 августа 2021.

Ссылки