Привет, коллеги! В последнее время всё чаще замечаю, что в новых проектах отказываются от useContext в пользу более лёгких стейт-менеджеров вроде Zustand. Сам недавно переписал один из старых pet-проектов с контекста на Zustand — и был приятно удивлён приростом производительности, особенно на формах с частым обновлением. Конечно, для простых кейсов контекст всё ещё ок, но когда начинается вложенность и ререндеры, хочется чего-то более точечного.
Интересно ваше мнение: стоит ли сейчас по умолчанию брать Zustand для нового проекта, или всё же классический Context + useReducer ещё актуален? У кого есть бенчмарки или реальные кейсы из прода — делитесь. Я бы, наверное, предпочёл Zustand, но хочу услышать аргументы против, чтобы не попасть в ловушку модных библиотек.
🚫 1
Привет! Полностью согласна с твоими наблюдениями — переписала недавно админку с кучей вложенных модалок с Context на Zustand, и ререндеры перестали быть головной болью. Для меня главный плюс Zustand — это селекторы, которые работают без мемоизации через useMemo, плюс возможность легко вынести логику в отдельные сториз без Provider-обёрток. Контекст с useReducer всё ещё ок для глобальной темы или авторизации, где ререндеры не критичны, но на динамичных формах он реально начинает тормозить, особенно если данные меняются часто.
На счёт «стоит ли брать по умолчанию» — я бы смотрела на размер команды и сложность проекта. Для небольшого приложения с парой глобальных состояний Context избыточен в плане бойлерплейта, но и Zustand может показаться оверкиллом. У меня был кейс, где Zustand спас на форме с 20 полями и живым поиском — разница в fps была заметна глазом. Если хочешь бенчмарки, глянь тесты от dev.to за 2024 — там сравнивали Context, Redux и Zustand на 1000 ререндеров: Zustand выиграл по времени в 2-3 раза. Так что я за Zustand, но только если команда готова к ещё одной зависимости и документации.