Why Zustand is better than Redux
Почему Zustand — это лучше, чем Redux в 2025 году (мой опыт после 7 лет с Redux)
Я начал использовать Redux в 2016 году. Тогда это был единственный нормальный способ управлять состоянием в больших приложениях. Сегодня у меня 14 коммерческих проектов за плечами, и в последних трёх я полностью отказался от Redux в пользу Zustand.
Первая причина — boilerplate. В Redux, чтобы добавить одно поле “isSidebarOpen”, нужно:
- создать action type
- создать action creator
- написать case в редьюсере
- написать селектор
- подключить через useDispatch/useSelector
В Zustand это одна строчка:
const useStore = create(() => ({
isSidebarOpen: false,
toggleSidebar: () => set((state) => ({ isSidebarOpen: !state.isSidebarOpen })),
}));
Вторая причина — производительность из коробки. В Redux каждый dispatch → ререндер всех компонентов, которые используют любой кусочек стора (если не завернуть селекторы в reselect). В Zustand подписка гранулярная по умолчанию: компонент перерисовывается только если изменилось именно то поле, на которое он подписан.
Третье — devtools. У Zustand они тоже есть и даже удобнее: можно путешествовать во времени, импортировать/экспортировать состояние одним кликом.
Четвёртое — middleware. Мне часто нужны persist и devtools:
const useStore = create(
persist(
devtools((set) => ({
user: null,
login: (user) => set({ user }),
}))
)
);
В Redux это 20+ строк конфигурации.
Пятое — TypeScript. В Zustand типизация просто летает. Никаких PayloadAction<...> и createSlice<{...}>. Всё выводится само.
Шестое — размер. Zustand без devtools — 1 КБ. Redux Toolkit — 12–15 КБ (всё равно много для мобильных приложений).
Седьмое — простота асинхронных действий. Никаких thunks и saga:
const useStore = create((set) => ({
user: null,
fetchUser: async (id) => {
const user = await api.getUser(id);
set({ user });
},
}));
Да, я знаю про RTK Query, но он решает только кэширование данных, а не весь стейт приложения.
Единственный случай, когда я всё ещё могу взять Redux — это огромные enterprise-приложения с 50+ разработчиками, где нужна строгая архитектура и code-generation. Во всех остальных случаях — Zustand.
Если вы до сих пор мучаетесь с Redux “потому что так принято” — попробуйте один маленький проект на Zustand. Скорее всего, назад дороги не будет.