immer для изменения иммутабельных структур данных в мутабельном виде нужен, к редьюсерам он никакого отношения не имеет, просто он нужен, чтобы избавиться от spread hell'а
Вот именно. Но линзы теоретически должны помочь не только для иммутабельных структур, а и для описанной в моей либе проблеме
Кстати, приведённая либа с линзами в dev-режиме
делает Object.freeze, чтоб убедиться, что мутации не происходят