Почему в Redux нельзя мутировать данные?
Все очень просто: дефолтный механизм проверки изменений в React — оператор ===. Соответственно, если вы измените объект, а не создадите новый, то компонент просто не перерендерится.
Ну а дальше уже начинаются архитектурные преимущества — отсутствие состояние -> чистые функции -> простота тестирования и дебага.
я встречался часто с тем, что стейт не успевает мутировать, а действие идет дальше и возникают ошибки. если просто производить замену, то такого не происходит.