Всем привет! На связи руководители Frontend‑практики ГК Юзтех. В этой статье мы подводим итоги 2024 года и делимся нашими прогнозами на 2025 год. Приводим мнение трех экспертов по ключевым трендам фронтенд‑разработки и фреймворков, которые будут актуальными в следующем году.
Angular: упрощение архитектуры и новые подходы
Александр Малиновский, руководитель практики Angular в ГК Юзтех, расскажет о том, как Angular продолжает эволюционировать, и последние версии фреймворка демонстрируют значительные изменения в подходах к управлению состоянием и реактивности приложений. Одним из ключевых нововведений стали Signals — механизм, призванный упростить работу с реактивными данными:
Signals: новый подход к реактивности
Одним из самых заметных изменений в Angular стали Signals — новые примитивы для работы с реактивными данными. Этот механизм предлагает более интуитивный и производительный способ управления состоянием приложения. «Сигналы» особенно эффективны в случаях, когда требуется:
Синхронное обновление UI;
Простоту отслеживания изменений значений;
Оптимизацию производительности через гранулярные обновления.
Сигналы идеально подходят для синхронных операций, однако для более сложных асинхронных сценариев RxJS остается более мощным инструментом.
RxJS: проверенное решение для асинхронности
RxJS продолжает оставаться незаменимым инструментом для работы со:
Сложными потоками данных;
Отменой запросов;
Обработкой ошибок в асинхронных операциях;
Комбинированием различных источников данных.
Это подтверждается и трендом, который мы наблюдаем с выходом Angular 17 и 19 — RxJS может стать опциональной зависимостью, давая большую гибкость в выборе инструментов, уменьшая размер бандла и упрощая порог входа для новых разработчиков.
Standalone компоненты как стандарт
С выходом Angular 19 все компоненты будут по умолчанию standalone. Ранее разработчики вручную прописывали атрибут standalone: true
, теперь он станет избыточным и будет автоматически удален при обновлении до Angular 19.
Такой шаг отражает стремление команды Angular к упрощению архитектуры приложений и отказу от излишней модульной структуры в пользу более прямолинейного подхода к организации кода.
Функциональный подход к DI и управлению потоком
В Angular 19 значительно изменился подход к внедрению зависимостей (DI) и управлению потоком данных. Новая функция inject() заменяет традиционный конструктор, делая код более лаконичным и гибким:
Чистый и читабельный код;
Гибкость — можно внедрять зависимости в любом месте приложения;
Лучше совместимость с функциональными компонентами.
Кроме того, новый синтаксис для Control Flow и структурных директив делает шаблоны проще и понятнее, приближая их к синтаксису чистого JavaScript.
Автоматическая миграция к новому API
Angular 19 также представляет инструменты для автоматической миграции к новому APIв рамках перехода на Signals. Например:
Преобразование декораторов
@Input()
в новоеinput()
API;Преобразование
@Output()
в функциональныйoutput()
API.
Эти новшества не только сокращают количество кода, но и делают его более производительным, что важно для поддержания современных приложений на платформе Angular.
React: интересные нововведения
Константин Поздникин, руководитель практики React в ГК Юзтех, делится множеством интересных нововведений в экосистеме React, которые в 2025 году будут способствовать значительным улучшениям в производительности и пользовательском опыте.
React 19: что нового?
С выходом React 19 разработчики получили доступ к мощным инструментам, упрощающим создание современных приложений:
Серверные компоненты — React 19 улучшил поддержку Server Components, делая их более удобными для работы с серверным рендерингом. Это позволяет быстрее загружать контент в крупных проектах. Эти компоненты идеально подходят для работы с динамическими данными, что особенно важно для крупных корпоративных приложений.
Actions — Новый API, который упрощает обработку пользовательских действий и управление состоянием. Это делает работу с формами и интерактивными элементами более понятной и эффективной. Например, при отправке данных на сервер можно избежать лишних обновлений интерфейса и точнее контролировать состояние компонента.
Контекст выполнения — Директивы
use client
иuse server
в Next.js помогают явно указать, где должен выполняться код (на клиенте или сервере). Это не часть стандартного React, но активно используется в фреймворках на его основе, что упрощает отладку и поддержку приложений.Оптимизация загрузки ресурсов — Директивы
preload
иpreinit
позволяют заранее загружать важные ресурсы, что помогает ускорить работу приложения. Это особенно полезно для приложений с высокой нагрузкой и множеством внешних зависимостей.
React Canaries: ранний доступ к новым функциям
React Canaries — это новый канал релизов, позволяющий разработчикам опробовать отдельные новые функции React до их официального выпуска в стабильных версиях. В отличие от экспериментального канала, Canaries включают только те функции, которые, по мнению команды React, готовы к использованию. Это позволяет фреймворкам и библиотекам интегрировать новые возможности React без ожидания полного релиза.
Новые хуки в React 19
React 19 представил целый набор новых хуков, которые повышают производительность и упрощают разработку:
useEvent — предотвращает избыточные рендеры, стабилизируя обработчики событий.
useOptimistic — позволяет мгновенно обновить UI, показывая предполагаемый результат, до того как операция будет завершена на сервере.
useActionState — улучшенный хук для управления состоянием форм и других интерактивных компонентов.
useDeferredValue — полезен для отложенной обработки значений и оптимизации работы с большими объемами данных.
useMutableSource — позволяет интегрировать внешние источники данных, избегая лишних перерисовок, что делает его полезным при работе с данными, изменяющимися вне React.
React compiler
Одним из значимых нововведений стал React Compiler — инструмент, который автоматически оптимизирует код на этапе сборки. Он анализирует компоненты и хуки, применяя автоматическую мемоизацию, что снижает количество ненужных перерисовок и повышает производительность приложений. React Compiler учитывает правила React и JavaScript, обеспечивая безопасную оптимизацию без необходимости переписывать существующий код. В октябре 2024 года была выпущена бета‑версия React Compiler, доступная для раннего тестирования и обратной связи от сообщества.
Обновления экосистемы
Помимо обновлений самого React, в экосистеме произошло множество улучшений:
React Query 5 (TanStack Query) — улучшенная поддержка серверного рендеринга и интеграция с React Server Components. Это делает работу с асинхронными данными более удобной, предоставляя разработчикам мощные инструменты для кэширования и синхронизации данных.
React Table 8 (TanStack Table) — расширение возможностей работы с таблицами, включая поддержку нескольких фреймворков (Vue, Solid, Svelte). Таблицы стали более производительными и гибкими, что важно для аналитических и корпоративных систем.
Redux — Redux продолжает упрощаться, RTK Query стал стандартом для работы с серверными данными, предлагая эффективные инструменты для управления состоянием. Современный Redux минимизирует сложность конфигурации, позволяя разработчикам сосредоточиться на бизнес‑логике.
Vue: новый уровень производительности и универсальности
Александр Гончаров, руководитель Frontend‑разработки в ГК Юзтех, считает, что Vue продолжает быть одним из самых популярных фреймворков для веб‑разработки, привлекая разработчиков своей простотой, гибкостью и мощной экосистемой. В 2025 году Vue продолжит развиваться, приспосабливаясь к новым требованиям и технологиям.
Дальнейшее развитие инструментов, таких как Vite и Nuxt, интеграция с TypeScript и внедрение новых технологий, например, Vapor Mode, открывают новые горизонты для создания высокопроизводительных приложений.
Vue 3: полное доминирование и массовое внедрение
Третья версия Vue давно стала стандартом, и большинство проектов завершили миграцию с Vue 2. Один из ключевых элементов — Composition API, который стал основным инструментом для новых проектов. Этот подход помогает разработчикам создавать более чистую и поддерживаемую архитектуру, что важно для крупных приложений с сложной логикой.
Основные особенности (для тех, кто еще почему‑то не вник):
Composition API: Улучшение гибкости и читабельности кода. Подходит для крупных проектов, позволяя легко организовать бизнес‑логику и повторное использование компонентов.
Глубокая интеграция с TypeScript: Vue 3 имеет лучшую поддержку TypeScript, что позволяет использовать типы в проектах по умолчанию, улучшая стабильность и производительность кода.
В 2025 году все больше проектов совершит миграцию с Options API, а все сообщество будет ожидать следующей мажорной версии.
SSR и SSG с Nuxt 3 и подготовка к Nuxt 4
Nuxt 3 продолжает быть основным фреймворком для серверного рендеринга (SSR) и статической генерации (SSG). Однако Nuxt 4 приносит важные улучшения, которые значительно улучшат производительность и гибкость разработки.
Turbo Mode ускоряет сборку до 10 раз, что особенно важно для крупных проектов с множеством компонентов. Это позволяет разработчикам быстрее видеть изменения, что делает процесс разработки более эффективным.
Поддержка Vue 3.3+ в Nuxt 4 интегрирует новые возможности Composition API, такие как улучшенные хуки и улучшенная работа с анимациями и переходами между компонентами. Это делает пользовательский интерфейс более плавным и динамичным.
Интеграция с Vite в Nuxt 4 теперь полностью поддерживает SSR, улучшая скорость сборки и рендеринга. Эта оптимизация позволяет быстрее разрабатывать сложные проекты и повышает общую производительность приложения.
Native Edge Server предоставляет возможность запускать приложения ближе к пользователю, что снижает задержки и ускоряет время загрузки. Это особенно полезно для глобальных приложений, где важна высокая производительность.
Nuxt Devtools включает новые инструменты для улучшения отладки и мониторинга, такие как визуализация маршрутов и управление состоянием приложения. Это упрощает процесс разработки и помогает быстро устранять ошибки.
Nuxt 4 будет фокусироваться на улучшении производительности, упрощении настройки и улучшении SEO‑оптимизации, продолжая поддерживать лучшие практики серверного рендеринга.
Vapor Mode и Vue
Vapor Mode представляет собой значительное улучшение производительности во Vue, заменяя традиционный виртуальный DOM на прямую работу с реальным DOM. Это улучшает скорость рендеринга, снижает задержки и ускоряет обновления интерфейса.
Отказ от виртуального DOM — место использования виртуального DOM для синхронизации с реальным, Vapor Mode работает напрямую с реальным DOM, что ускоряет рендеринг и уменьшает накладные расходы.
Оптимизированная компиляция — новый механизм компиляции с использованием промежуточного представления (IR) генерирует более эффективный код для работы с DOM, что значительно ускоряет процессы рендеринга.
Улучшенная производительность — благодаря минимизации дополнительных шагов и оптимизированному управлению DOM, приложения становятся более быстрыми и отзывчивыми, что особенно важно для сложных интерфейсов и высоконагруженных систем.
Поддержка анимаций и переходов — прямое взаимодействие с реальным DOM позволяет создавать более плавные анимации и переходы между компонентами без дополнительных вычислительных затрат.
Меньший размер бандла — отсутствие виртуального DOM и улучшенная производительность позволяют уменьшить размер бандла, что ускоряет загрузку приложения и снижает потребление памяти.
Общие тенденции во Frontend-разработке
Все эксперты сходятся во мнении, что в 2025 году основные тренды JavaScript будут связанны с общими мета‑инструментами для работы с любыми фреймворками.
Vite 6: Лидерство в сборке проектов и универсальность
Vite 6 продолжает укреплять свои позиции как основной инструмент сборки для Vue‑приложений, но теперь его возможности значительно расширены, чтобы поддерживать не только Vue, но и другие фреймворки, такие как React, Svelte и Angular. В этой версии Vite становится ещё более универсальным инструментом для сборки современных веб‑приложений.
Модульная архитектура — в Vite 6 появилась новая система плагинов, которая значительно расширяет возможности по кастомизации сборки. Разработчики могут адаптировать процесс сборки под уникальные требования, что повышает гибкость при работе с разными проектами.
Поддержка мультифреймворковой разработки — Vite теперь позволяет использовать несколько фреймворков одновременно в одном проекте, что упрощает работу с гибридными приложениями. Это делает его отличным выбором для сложных проектов, в которых могут использоваться компоненты как на Vue, так и на других фреймворках.
Интеграция с WebAssembly и WebGPU — в Vite 6 улучшена поддержка WebAssembly и WebGPU, что позволяет разрабатывать высокопроизводительные приложения для 3D‑рендеринга или вычислительных задач прямо в браузере. Это открывает новые возможности для разработчиков, работающих с графикой и сложными вычислениями.
Стабильный HMR (Hot Module Replacement) — в новой версии Vite улучшена поддержка HMR, что делает обновления в реальном времени ещё быстрее и надежнее, критически важное для больших проектов с множеством зависимостей.
Vite 6 стал универсальным инструментом для сборки, который теперь поддерживает все популярные фреймворки, улучшает скорость и производительность, а также предоставляет больше возможностей для гибкости и кастомизации в процессе разработки.
Интеграция с ИИ и использование новых технологий
В 2025 году одним из важнейших трендов будет интеграция ИИ во Frontend приложения. Уже сейчас доступны такие решения, как GPT-4 через API, которые позволяют создавать интеллектуальные функции: автокомплит, персонализация контента и анализ текста.
Еще одним из примеров использования ИИ является интеграция моделей для чата и голосовых помощников в приложения, что добавляет элемент интерактивности и персонализации в пользовательские интерфейсы. В 2025 году эти решения становятся всё более распространёнными и востребованными.
Мультимодальные помощники: Cursor Copmoser и Windsurf
Новые мультимодальные помощники, такие как Cursor Composer и Windsurf, интегрируются в рабочие процессы frontend‑разработчиков, помогая генерировать код и улучшать взаимодействие с приложением. Cursor Composer позволяет работать с текстом и кодом в рамках одного интерфейса, оптимизируя процесс написания и рефакторинга. Windsurf, в свою очередь, предоставляет контекстные рекомендации и визуальные подсказки, упрощая работу с большими кодовыми базами.
Все эти инструменты становятся незаменимыми для повышения продуктивности и качества разработки и вскоре сложно будет представить свою работу без них.
Bun: Менеджмент пакетов и среда исполнения для JavaScript/TypeScript
Bun — это новый, высокоскоростной инструмент для JavaScript и TypeScript‑разработки, который объединяет несколько ключевых функций в одном пакете, обеспечивая более быструю и эффективную работу с веб‑приложениями. Ниже рассмотрим две основные киллер‑фичи на данный момент.
Менеджмент пакетов
Bun включает встроенный менеджер пакетов, который является более быстрым и эффективным по сравнению с традиционными решениями, такими как npm и yarn. Он использует оптимизированную архитектуру для быстрого разрешения зависимостей и установки пакетов. Это существенно сокращает время, которое обычно тратится на установку и обновление зависимостей в крупных проектах.
Менеджер пакетов в Bun совместим с npm и yarn, что позволяет разработчикам легко переходить на Bun, не меняя структуру своих проектов. Поддержка стандартных пакетов делает его удобным инструментом для работы с любыми JavaScript/TypeScript приложениями.
Среда исполнения для JavaScript и TypeScript
Bun представляет собой новую среду исполнения для JavaScript и TypeScript, предлагая более быстрый и эффективный опыт по сравнению с Node.js. Это особенно полезно для серверного рендеринга (SSR), где требуется высокая производительность при запуске серверного кода.
Bun использует Zig для компиляции, что позволяет значительно ускорить выполнение кода. Вместо традиционного использования Node.js, Bun оптимизирует выполнение приложений и серверных скриптов, что помогает значительно уменьшить задержки при обработке запросов, особенно для SSR.
Поддержка TypeScript встроена прямо в Bun, что упрощает разработку и запуск TypeScript‑приложений без дополнительных настроек. Это делает Bun привлекательным выбором для разработчиков, которым нужна быстрая и стабильная среда для исполнения кода как на сервере, так и на клиенте.
Bun уже сегодня значительно улучшает опыт разработчиков, предлагая эффективный менеджер пакетов и среду исполнения, которая может заменить Node.js для многих задач. Встроенный сборщик Bun работает быстрее Vite, но пока не собирает приложения на популярных фреймворках, поэтому будем следить за развитием этого инструмента в 2025 году!
Так чего же ждать?
2025 год принесет новые возможности для фронтенд‑разработки. Разработчики смогут использовать более быстрые и эффективные инструменты, такие как Bun, которые ускорят сборку и выполнение приложений, улучшая производительность. Ожидается, что фронтенд‑инструменты станут еще более гибкими и адаптируемыми, позволяя быстро решать задачи даже для крупных и сложных приложений.
Одним из главных изменений станет интеграция искусственного интеллекта. Уже сейчас ИИ помогает автоматизировать задачи, такие как генерация кода, обработка данных и создание интерактивных интерфейсов. В 2025 году использование ИИ станет стандартом, ускоряя процесс разработки и улучшая пользовательский опыт.
Этот год обещает быть временем перемен, когда новые инструменты и технологии сделают разработку более продуктивной и гибкой, а возможности для создания масштабируемых приложений выйдут на новый уровень.
Что думаете? Какие ещё тренды фронтенда вы видите на горизонте?
Комментарии (25)
gen1lee
13.12.2024 10:23RTK Query ни разу не стал стандартом - он даже не поддерживает такие базовые вещи как бесконечная пагинация и нормализация, а апи сильно переусложнено на пустом месте, если сравнивать с тем же tanstack query.
Советую посмотреть в сторону react-redux-cache.websanya
13.12.2024 10:23Постараюсь объяснить:
подавляющее большинство проектов использует Redux и переход на RTK Query будет сильно плавнее, чем на tanstack;
в RTK Query есть из коробки механизм useLazyQuery, чтобы подобное накостылить на tanstack, нужно изгаляться с enabled и refetch;
возможностей у него конечно меньше, поэтому разумеется нужно подбирать инструмент под каждый конкретный кейс.
gen1lee
13.12.2024 10:23useLazyQuery
все объяснило спасибо. Сэкономлю одну строчку с `enabled: false`.Нет конечно, смешно даже читать такое - это все что "руководителю отдела frontend разработки" пришло в голову сравнивая две эти библиотеки?
Про плавный переход - а вы вообще дочитали мой комментарий до конца перед тем как объяснять? Я не предлагаю использовать tanstack query с redux.
websanya
13.12.2024 10:23Еееее срач.
Просто объяснил почему мой коллега написал про стандарт. Сравнению этих двух библиотек можно посвятить отдельную статью/доклад/воркшоп, да что угодно.
Что касается реакта: его плюсом и минусом как раз является то, что там кучи вариантов использования всего со всем.
Всем добра ☺️
Akargozerov
13.12.2024 10:23Функциональный подход к DI и управлению потоком
В Angular 19 значительно изменился подход к внедрению зависимостей (DI) и управлению потоком данных. Новая функция inject() заменяет традиционный конструктор, делая код более лаконичным и гибким:
Так написано, как будто до Angular 19 не было функции inject() ...
c_kotik
13.12.2024 10:23Странно, никто не упомянул про мол, который ещё на этапе проектирования был идеальным и не нуждается в улучшениях. /sarcasm
Kuch
13.12.2024 10:23Давайте соберём конференцию и большим коллегиальным решением уже примем раз и навсегда взвешенное окончательное: мол или смоль?
websanya
13.12.2024 10:23Я может сейчас фронтенд-скуфом буду выглядеть, но что такое мол?
RigelGL
13.12.2024 10:23Фреймворк $mol, за авторством Дмитрия Карловского.
Сам глубоко в $mol не погружался - отталкивает гонор автора и язвительная модель рекламы $mol, что в совокупности множит на ноль возможно хорошие идеи фреймворка.
websanya
13.12.2024 10:23Понял, про Карловыча слышал только мемы, мы больше на всемирное комьюнити ориентировались пока писали, локальные штуки не так интересны.
nin-jin
13.12.2024 10:23Пока всемирное комьюнити жуёт сопли, мы уже и 3d движок на $mol запилили, и децентрализованную базу данных. Я уж молчу про те фичи, которые у нас уже 10 лет как есть, а вы даже не в курсе, что так можно было.
websanya
13.12.2024 10:23Это, безусловно, прекрасно. Но я все ещё мыслю в перспективе нескольких лет: что будет с поддержкой, будет ли заменяемость специалистов и прочие штуки. Где и как быстро мне нанять людей под это дело и как сильно нужно удерживать уже существующих. Ничего личного, просто бизнес.
nin-jin
13.12.2024 10:23Ответы на все эти вопросы есть на видео.
0whitewolf0
13.12.2024 10:23Не нашел внятных готовых примеров. У вас есть хоть один пример полноценного приложения которое можно посмотреть, в идеале боевой? на сайте не нашел даже примера банальной тудушки. на том же vue/nuxt далеко ходить не надо, открыть один из русскоязычных маркетплейсов, оценить производительность и т.д.
Я неоднократно видел ваши комментарии с рекламой фреймворка, но должны же быть публичные проекты, которое могут продемонстрировать возможности в бою?
kaufmanendy
13.12.2024 10:23слежу много лет за этим проектом и его кодом, очень нравится движ вокруг этого фрейма, сам не рискну юзать...
в качестве работника я не смогу работу найти по такой специальности ((
в качестве директоре я не смогу найти грамотных специалистов по этой специальности ((
ну тема мне интересна очень, так как не каждый рискнет мутить чет свое крупное и на столько отличающееся от обычных практик
radtie
Надо бы было в опросе добавить пункт "Не использую ИИ", было бы интересно увидеть процент пуристов ;)
PML
Причины не использования могут быть связанны с юридической стороны проекта.
websanya
В крупных компаниях давно подняли свои локальные модели, а к ним также можно подключиться через плагины.