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 — Сходимость на сигналах это один из главных трендов, разобранный отдельно и собранный здесь в общую картину