Какие плюсы и минусы подхода с immutable state

«Какие плюсы и минусы подхода с immutable state» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы:

  1. Предсказуемость — состояние не меняется, создаются новые объекты
  2. Легче отслеживать изменения (можно сравнивать по ссылке)
  3. Упрощает отладку (история изменений сохраняется)
  4. Совместимость с PureComponent/React.memo
  5. Потокобезопасность (важно для многопоточных сред)

Минусы:

  1. Производительность — создание новых объектов требует памяти
  2. Сложность обновления глубоко вложенных структур
  3. Больше boilerplate-кода (особенно без библиотек типа Immer)

Пример с Redux reducer:

// mutable (плохо)
function reducer(state, action) {
  state.items.push(action.payload); // мутация!
  return state;
}

// immutable (правильно)
function reducer(state, action) {
  return {
    ...state,
    items: [...state.items, action.payload]
  };
}