Всем привет! На связи руководители 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)


  1. radtie
    13.12.2024 10:23

    Надо бы было в опросе добавить пункт "Не использую ИИ", было бы интересно увидеть процент пуристов ;)


    1. PML
      13.12.2024 10:23

      Причины не использования могут быть связанны с юридической стороны проекта.


      1. websanya
        13.12.2024 10:23

        В крупных компаниях давно подняли свои локальные модели, а к ним также можно подключиться через плагины.


  1. gen1lee
    13.12.2024 10:23

    RTK Query ни разу не стал стандартом - он даже не поддерживает такие базовые вещи как бесконечная пагинация и нормализация, а апи сильно переусложнено на пустом месте, если сравнивать с тем же tanstack query.

    Советую посмотреть в сторону react-redux-cache.


    1. websanya
      13.12.2024 10:23

      Постараюсь объяснить:

      • подавляющее большинство проектов использует Redux и переход на RTK Query будет сильно плавнее, чем на tanstack;

      • в RTK Query есть из коробки механизм useLazyQuery, чтобы подобное накостылить на tanstack, нужно изгаляться с enabled и refetch;

      • возможностей у него конечно меньше, поэтому разумеется нужно подбирать инструмент под каждый конкретный кейс.


      1. gen1lee
        13.12.2024 10:23

        useLazyQuery все объяснило спасибо. Сэкономлю одну строчку с `enabled: false`.

        Нет конечно, смешно даже читать такое - это все что "руководителю отдела frontend разработки" пришло в голову сравнивая две эти библиотеки?

        Про плавный переход - а вы вообще дочитали мой комментарий до конца перед тем как объяснять? Я не предлагаю использовать tanstack query с redux.


        1. websanya
          13.12.2024 10:23

          Еееее срач.

          Просто объяснил почему мой коллега написал про стандарт. Сравнению этих двух библиотек можно посвятить отдельную статью/доклад/воркшоп, да что угодно.

          Что касается реакта: его плюсом и минусом как раз является то, что там кучи вариантов использования всего со всем.

          Всем добра ☺️


  1. PML
    13.12.2024 10:23

    UnUse


  1. Legendary8971
    13.12.2024 10:23

    >Vue 3 имеет лучшую поддержку TypeScript

    По сравнению с чем?


    1. websanya
      13.12.2024 10:23

      По сравнению с Vue 2, конечно. =)


  1. Akargozerov
    13.12.2024 10:23

    Функциональный подход к DI и управлению потоком

    В Angular 19 значительно изменился подход к внедрению зависимостей (DI) и управлению потоком данных. Новая функция inject() заменяет традиционный конструктор, делая код более лаконичным и гибким:

    Так написано, как будто до Angular 19 не было функции inject() ...


  1. undersunich
    13.12.2024 10:23

    Шеф!Все пропало! Deno забыли!


    1. websanya
      13.12.2024 10:23

      Да ну его, но да: таки анонсировали Deno 2.0!


  1. c_kotik
    13.12.2024 10:23

    Странно, никто не упомянул про мол, который ещё на этапе проектирования был идеальным и не нуждается в улучшениях. /sarcasm


    1. Kuch
      13.12.2024 10:23

      Давайте соберём конференцию и большим коллегиальным решением уже примем раз и навсегда взвешенное окончательное: мол или смоль?


    1. websanya
      13.12.2024 10:23

      Я может сейчас фронтенд-скуфом буду выглядеть, но что такое мол?


      1. RigelGL
        13.12.2024 10:23

        Фреймворк $mol, за авторством Дмитрия Карловского.

        Сам глубоко в $mol не погружался - отталкивает гонор автора и язвительная модель рекламы $mol, что в совокупности множит на ноль возможно хорошие идеи фреймворка.


        1. websanya
          13.12.2024 10:23

          Понял, про Карловыча слышал только мемы, мы больше на всемирное комьюнити ориентировались пока писали, локальные штуки не так интересны.


          1. nin-jin
            13.12.2024 10:23

            Пока всемирное комьюнити жуёт сопли, мы уже и 3d движок на $mol запилили, и децентрализованную базу данных. Я уж молчу про те фичи, которые у нас уже 10 лет как есть, а вы даже не в курсе, что так можно было.


            1. websanya
              13.12.2024 10:23

              Это, безусловно, прекрасно. Но я все ещё мыслю в перспективе нескольких лет: что будет с поддержкой, будет ли заменяемость специалистов и прочие штуки. Где и как быстро мне нанять людей под это дело и как сильно нужно удерживать уже существующих. Ничего личного, просто бизнес.


              1. nin-jin
                13.12.2024 10:23

                Ответы на все эти вопросы есть на видео.


                1. 0whitewolf0
                  13.12.2024 10:23

                  Не нашел внятных готовых примеров. У вас есть хоть один пример полноценного приложения которое можно посмотреть, в идеале боевой? на сайте не нашел даже примера банальной тудушки. на том же vue/nuxt далеко ходить не надо, открыть один из русскоязычных маркетплейсов, оценить производительность и т.д.

                  Я неоднократно видел ваши комментарии с рекламой фреймворка, но должны же быть публичные проекты, которое могут продемонстрировать возможности в бою?



            1. kaufmanendy
              13.12.2024 10:23

              слежу много лет за этим проектом и его кодом, очень нравится движ вокруг этого фрейма, сам не рискну юзать...

              в качестве работника я не смогу работу найти по такой специальности ((

              в качестве директоре я не смогу найти грамотных специалистов по этой специальности ((

              ну тема мне интересна очень, так как не каждый рискнет мутить чет свое крупное и на столько отличающееся от обычных практик