Сейчас попробую измерить изменения в производительности. Мы в течение последних двух недель на проекте потихоньку избавляемся от native-base и она сейчас "островками" только осталась... в каких-то блоках Text оттуда, где-то ещё что-то... А была везде - drawer, navigation header, screen container и т.п.
В целом я бы даже остался с ней, возни меньше, но в этом проекте её умудрились начать использовать без создания кастомной темы и вся кастомизация шла через стили, что как бы убило весь смысл её использования, только мешающее поведение осталось типа невозможности избавиться от хэндлинга статусбара в хидере и т.п.
Как раз собирался оценить как что поменялось.
Ну вот смотрите, тут конечно native-base не доконца выпилен и менялось не только это. Но тем неменее, что есть, проект живой. Померил два экрана, условно две версии "old" -> "new". В старой версии native-base используется относительно широко, главное для хидера. Иерархия это вложенность компонентов (я их брал выборочно). Root - это корень дерева рендера, оно большое, потому как react-navigation.
Эран с тяжелым списком и табами (они остались на native-base):
- Root: 92ms -> 84ms
⁃ PollsListScreen: 66ms -> 59ms
⁃ ScreenHeader: 22ms -> 6ms (вот здесь выпилился native-base)
⁃ ScrollableTabView: 42ms -> 49ms
⁃ Styled(DefaultTabBar): 10ms -> 12ms
⁃ Styled(Tab): 26ms -> 29ms
⁃ ActivePollsTab: 24ms -> 27ms (здесь менялась логика но чуть-чуть, из-за этого видимо выше по дереву какие-то изменения, не анализировал подробно)
Экран с почти статическим контентом (там тоже остался native-base, но в виде пары Text):
- Root: 70ms -> 37ms
- HelpScreen: 39ms -> 15ms
- ScreenHeader: 22ms -> 4ms (да-да, тот же самый ScreenHeader, что и выше)
Картинки (только кусочки, вообще с этим нормально можно только динамически работать в профайлере):
- старый:
http://vovkasm.skitch.vovkasm.org/PollsListScreen-v1_0_2_23CF9495.png- новый:
http://vovkasm.skitch.vovkasm.org/PollsListScreen-v1_1_0_23CF9FB2.png