← Все статьи

React-Redux 9.4: селекторы на сигналах

В альфе React-Redux — необязательный useSignalSelector: пересчёт только тех селекторов, чьи данные реально изменились.

React-Redux 9.4: селекторы на сигналах
Содержание

Коротко

В выпуске React Status отметили альфу React-Redux 9.4 с новым хуком useSignalSelector. Идея простая: вместо того чтобы гонять все селекторы на каждый dispatch, отслеживать, какие куски состояния читал каждый, и будить только затронутых. Рядом в том же дайджесте — критическое исправление удалённого выполнения кода в ImageResponse у Next.js 16.3.6 и переход интеграции Astro с React на Oxc.

Что произошло

Классический useSelector в больших приложениях работает как сирена на весь дом: любое действие в одном шкафу поднимает всех жильцов проверить, не их ли это дело. Redux на каждый dispatch прогоняет все смонтированные селекторы. На маленьком экране это незаметно. На огромном дереве подписок — уже заметная цена.

Альфа 9.4 предлагает необязательный useSignalSelector на сигналах. Хук запоминает, какие поля состояния селектор реально читал. Следующий dispatch пересчитывает только тех, чьи данные изменились. Остальные спят. Автор библиотеки Mark Erikson опубликовал разбор; в первой альфе уже поправили ошибку и уточнили замеры. Среда исполнения сигналов заметно легче React, но без параллельной отрисовки, без лицензии в привычном виде и пока явно экспериментальна.

В том же номере React Status коротко: Next.js 16.3.6 закрывает критическую удалённую выполнение кода в ImageResponse для веток с next/og на Node (затронуты v16.2+); на следующей неделе обещают ещё девять правок. Интеграция Astro с React дошла до 7.0: вместо Babel — Oxc, плюс опция compiler: true для React Compiler. Vercel объединил программу поиска уязвимостей в одну публичную, куда входит и Next.js.

Почему это важно

Селекторы — привычный способ не тащить всё хранилище в компонент. Но привычка «подписался и забыл» плохо стыкуется с ростом числа подписчиков: каждый dispatch становится общим налогом на весь интерфейс. Сигнальный селектор меняет модель с «проверить всех» на «разбудить только тех, кого коснулось изменение» — ближе к тому, как уже думают про тонкую реактивность вне классического Redux.

Для команды с тяжёлым клиентским хранилищем это повод смотреть альфу на стенде, а не переписывать продакшен завтра. Ограничения по параллельной отрисовке и статус эксперимента важнее маркетинговой формулировки «сигналы в Redux». Параллельно дайджест напоминает: дыры в разметке Open Graph у Next.js и смена цепочки сборки у Astro — отдельные срочные темы, не фон для эксперимента с селекторами.

На практике

Если у вас уже болит стоимость селекторов на частых действиях, имеет смысл прочитать объяснение к альфе и сравнить useSignalSelector с текущим useSelector на одном горячем экране. Не смешивайте ожидания: это необязательный режим и альфа, а не замена всей модели подписок в одном релизе.

По безопасности и сборке из того же выпуска:

  1. На Node с next/og — обновитесь до Next.js 16.3.6 и следите за пакетом правок на следующей неделе.
  2. Astro + React: оцените 7.0 и переход на Oxc, если Babel ещё в критическом пути сборки.
  3. Сигнальные селекторы — только за флагом эксперимента и с замером на вашем дереве подписок, не «на всякий случай везде».

Итог

Главная новость выпуска — не «сигналы вместо Redux», а более узкий пересчёт селекторов в альфе 9.4. Дом больше не обязан просыпаться целиком от каждого щелчка замка: будят только комнаты, где что-то изменилось. Остальное из дайджеста — про закрытие дыры в ImageResponse и свежую цепочку сборки Astro — держите рядом как отдельные списки проверок.

Комментарии

Загрузка комментариев…