В показанном обновлении нет нарушения иммутабельности: возвращается новый объект, а streak вычисляется из предыдущего состояния и актуальных props. Без дополнительных условий объявлять код ошибочным нельзя.
Исправьте JSX и имя компонента с заглавной буквы. Подписку создавайте в эффекте с cleanup; не запускайте новый бесконечный интервал на каждый клик и каждый рендер.
Подписка scroll в теле App создаётся на каждом рендере и никогда не удаляется. Для прилипающей панели обычно достаточно position: sticky; счётчик обновляйте функционально, повторяющиеся Item создайте из списка.
Добавьте отдельное состояние user и обновляйте name через новый объект. Остальной JSX сохраните; обработчик новой кнопки не должен мутировать прежний объект состояния.
Вторая кнопка не планирует рендер: она мутирует count2.name, но вообще не вызывает setCount2. Изменение может проявиться позже при обновлении другого состояния.
Добавьте стабильный key в список, типизируйте Todo и не выводите img без imagesrc. Для поиска можно нормализовать регистр; управляемый input уже реализован правильно.
setCoordinate не меняет coordinate в текущем замыкании, поэтому handleUpload отправляет предыдущее значение. Передавайте в Service.send координату непосредственно из события.
Используйте настоящий input type='checkbox' внутри label и отдельный декоративный трек. Состояние checked управляет цветом фона и сдвигом круга на 26px.
После первого клика надпись кнопки удвоится: при исходном 'a' станет 'aa', при следующем клике — 'aaaa'. React обновит текст существующей кнопки после изменения состояния.
Храните checkbox в состоянии, вычисляйте отфильтрованный список и считайте количество как сумму count, а стоимость как сумму price × count. Не храните производные итоги отдельным состоянием.
setUser(user) передаёт ту же ссылку, поэтому React обычно пропустит обновление по Object.is. Мутация уже произошла и может неожиданно проявиться при другом рендере.
При обновлении только state внутри MainFc OtherFc не обязан рендериться заново: children остаётся тем же JSX-объектом, созданным App. Сам App из-за этого состояния не обновляется.