я переехал и выпилил через неделю))) может неправильно готовлю, но мне redux под тайпскриптом больше зашел
Почти все его неправильно готовят, пытаются на нем эмулировать redux, потому что в сети огромное множество примеров по redux. Так же почти все пытаются писать на React, используя его как фреймворк для построения приложений, хотя он только библиотека, слой UI.
К примеру даже в документации по mobx зачем-то вводится понятие "store", хотя оно не нужно в принципе. Зачем там store, зачем его куда-то передавать. Всё что представляет из себя mobx, это event emitter на стероидах с инструментами автоматической подписки/отписки, удобным выражением вычисляемых данных, агрегации и рейт лимитинга. С помощью mobx удобно создавать нормальное ядро приложения (модель данных и слой логики), просто помечая все динамические данные как observable, эти данные удобно группируются с методами, это всё можно тестировать отдельно от React'а, это можно использовать в нескольких приложениях, к примеру web, RN и консольное приложение. Этими данными потом пользуются различные сервисы реагируя на их изменения и слой UI здесь вместе со всем реактом - просто один из сервисов.
Более того, reaction или, если брать React-компоненты, observer'у глубоко начихать откуда к нему попала ссылка на observable. Можно из синглтона забрать, можно через св-ва в компонент передать, можно в самом компоненте объявить (да-да, с mobx вообще становится state не нужен), главное одно, изменится observable, компонент-observer перерендерится.
При этом из-за точечных гранулярных подписок, mobx дергает только нужных подписчиков, в результате, возвращаясь к RN, где производительности надо уделять больше внимания, чем в вебе (потому что проц в телефоне слабее, потому что JIT отсутствует, потому что архитектура у RN такая, что если JS поток встаёт, то всё, лаги), так вот, точечные подписки дают ререндер такими мелкими "островками", только нужных компонентов. Это получается абсолютно автоматически, естественно.
Чтобы такое было с redux, надо специально об этом думать, писать селекторы, коннектить к стору большую часть мелких компонентов и... это всё равно не работает, потому что потом на каждый чих (action) у вас будет вызываться сотня подписчиков и чихать, что в каждом один if выполнится, сотня функций в RN это не бесплатное удовольствие.
В mobx не всё тоже гладко, но там хотя бы есть куда и что оптимизировать, redux архитектура же в принципе не масштабируется нормально. Просто возьмите стор с глубиной вложенности в 3 уровня (классика: первый уровень разбивка по функционалу, второй нормализация (все эти byId) и третий сами данные модели) и попробуйте посчитать кол-во операций (можно для простоты каждую инструкцию js считать одной операцией, кроме циклов, но Object.assign - это цикл) и посмотрите, по какому закону это кол-во растет с увеличением стора, с увеличением кол-ва акшнов.