State Management

Тренды и будущее state management

Ещё в 2020 году ответ на вопрос об управлении состоянием был коротким: возьми Redux и положи туда всё. К 2026 году картина другая. Серверное состояние ушло в TanStack Query, состояние URL в nuqs, реактивность сходится на сигналах, а серверные компоненты React убирают целые куски глобального клиентского store. Recoil, на который многие ставили, архивирован. Главный тренд не в новой библиотеке-победителе, а в том, что глобальный клиентский store сжимается, уступая место более специализированным решениям.

  • Сходимость на сигналах: Angular, Solid, Preact и Vue на общей модели реактивности
  • Мышление от серверного состояния: данные с сервера это кэш под TanStack Query, а не клиентский store
  • Серверные компоненты React, отрисовывающие данные на сервере и убирающие нужду в глобальном клиентском store
  • Состояние URL через nuqs: фильтры и вкладки в адресной строке вместо клиентского store
  • Recoil в архиве как напоминание, что ставка на конкретную библиотеку рискованнее ставки на принципы

Предварительные знания

  • Дерево решений выбора инструмента и дефолтный стек 2026 года
  • Разделение серверного, клиентского и URL-состояния
  • Базовая идея сигналов и серверного рендеринга
  • Как выбрать инструмент

Глобальный клиентский store сжимается

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

Что раньше клали в глобальный storeКуда ушло к 2026
Список и профиль с сервераTanStack Query: серверный кэш
Активная вкладка и фильтрыnuqs: состояние URL
Данные, отрисованные на сервереСерверные компоненты React
Реактивные производные значенияСигналы фреймворка
Открытые панели, выбранный инструментZustand: то немногое, что осталось

Это объясняет, почему вопрос управления состоянием изменился. Он перестал быть выбором единственной библиотеки и стал распределением состояния по видам. Глобальный клиентский store не исчез, но из главного героя превратился в один из нескольких инструментов, отвечающий за узкую и честно клиентскую часть.

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

Как изменилась роль глобального клиентского store к 2026 году?

Серверное состояние, RSC и URL

Три силы сжимают глобальный клиентский store. Первая - мышление от серверного состояния: признание, что большая часть данных приходит с сервера и является кэшем, а не источником истины на клиенте. Эту часть забирает TanStack Query со свежестью и инвалидацией. Вторая - серверные компоненты React (RSC), которые отрисовывают данные прямо на сервере.

RSC меняют расклад тем, что данные, нужные только для отрисовки, не обязаны попадать в клиентское состояние вовсе. Серверный компонент берёт данные на сервере и отдаёт уже готовую разметку. Раньше тот же список тянули в браузер и держали в глобальном store ради рендера. С RSC значительная часть этого глобального состояния просто не нужна на клиенте.

Третья сила - состояние URL. Фильтры, активная вкладка, строка поиска и страница пагинации по природе принадлежат адресной строке: их хочется делить ссылкой и листать кнопкой назад. nuqs возвращает это состояние в URL, снимая его с клиентского store. Вместе три силы объясняют, почему глобальный store отвечает за всё меньшую долю.

RSC не означают конец клиентского состояния. Интерактивность - открытая модалка, выбранный инструмент, черновик формы - остаётся на клиенте. RSC убирают из глобального store данные для отрисовки, но не клиентскую интерактивность. Путаница этих двух вещей ведёт к попытке отрисовать на сервере то, что по сути интерактивно.

Как серверные компоненты React сокращают потребность в глобальном клиентском store?

Recoil и ставка на принципы

Recoil это библиотека состояния от команды Facebook, представленная в 2020 году с интересной моделью атомов и селекторов. Многие команды поставили на неё как на будущий стандарт React. К 2026 году Recoil архивирован: активная разработка прекращена. Проекты, построившие ядро состояния вокруг него, столкнулись с миграцией на поддерживаемые альтернативы.

Урок здесь не в том, что Recoil был плох технически. Урок в риске ставки на конкретную библиотеку как на фундамент. Библиотека может быть заброшена независимо от качества идей. Ставка же на принципы - разделение серверного и клиентского состояния, colocation, предсказуемое чистое ядро - переживает смену конкретных инструментов, потому что принципы переносятся между ними.

  • Ставка на конкретную библиотеку — Ядро приложения завязано на API одной библиотеки. Если её забросят, как Recoil, миграция затрагивает всё состояние. Риск не в качестве идей, а в зависимости от судьбы одного проекта
  • Ставка на принципы — Ядро построено на разделении видов состояния, colocation и чистых функциях. Конкретный инструмент сменить можно, принципы остаются. Переносимость знаний и кода между библиотеками выше

Так капстоун замыкает курс. Дефолтный стек 2026 года - Zustand, TanStack Query, nuqs, сигналы, RSC - это снимок настоящего, а не вечная истина. Завтра инструменты сменятся, как сменился Recoil. Что останется - это принципы: правильно классифицировать вид состояния, держать его близко к месту использования, отделять логику от представления и не превращать клиентский store в самописный кэш серверных данных.

Поле движется к тому, что управление состоянием это не выбор библиотеки-победителя, а архитектурная дисциплина распределения состояния по видам. Инструменты приходят и уходят, дерево решений и принципы остаются опорой, переживающей конкретные библиотеки.

Какой главный вывод даёт архивация Recoil для выбора подхода к состоянию?

Связь с другими темами

Капстоун собирает нити курса воедино:

  • Как выбрать инструмент — Будущее это смещение акцентов в том же дереве: меньше глобального store, больше серверного состояния и URL
  • Сигналы: сходящаяся парадигма — Сходимость на сигналах это один из главных трендов, здесь он встроен в общую картину будущего

Итог

  • Главный тренд: глобальный клиентский store сжимается, уступая серверному состоянию, URL и сигналам
  • Реактивность сходится на сигналах в Angular, Solid, Preact и Vue, хотя стандарт TC39 ещё в комитете
  • Мышление от серверного состояния: данные с сервера это кэш под TanStack Query, а не клиентское состояние
  • Серверные компоненты React отрисовывают данные на сервере и убирают целые куски глобального клиентского store
  • Состояние URL через nuqs возвращает фильтры и вкладки в адресную строку, разгружая клиентский store
  • Архивация Recoil это поучительный пример: ставка на принципы переживает ставку на конкретную библиотеку

Связанные уроки

  • sm-40-choosing — Будущее это смещение акцентов в том же дереве решений: меньше глобального клиентского store, больше серверного состояния и URL
  • sm-39-signals-convergence — Сходимость на сигналах это один из главных трендов, разобранный отдельно и собранный здесь в общую картину
Тренды и будущее state management

0

1

Войти