Vit
айпод.....
Pavel
Только сегодня задавался вопросом как статистику глянуть - чего там в бандл залетело
Vit
мдя у эпла по марке девайса статы нету
Vit
айфон и всё)
Gena
Только сегодня задавался вопросом как статистику глянуть - чего там в бандл залетело
Вот здесь описывал технику: https://github.com/invertase/react-native-firebase/issues/1571
Pavel
Вот, значит не я один заметил это) Уже подумываю о том, чтобы выпилить его из проекта
Pavel
Вот здесь описывал технику: https://github.com/invertase/react-native-firebase/issues/1571
Блин, у меня lodash дважды целиком впихнут. Видимо, разные версии
Pavel
И это несмотря на аккуратные импорты вида import debounce from 'lodash/debounce';
Vit
пакеты тянут)
Vit
в вебе бы так заморачивались)
Pavel
там вообще дичь
Vit
ну там джун «можно я либу добавлю» смотрю +50кб к бандлу, смотрю по смыслу - 10 строк вёрстки)
Pavel
Из-за аккуратных импортов он вставил библиотеку два раза: один раз лодаш целиком, другой - точечные импорты
Vit
азазазазаза
Vit
чото ржу)
Pavel
+ пакет rn-camera со своим lodash-ем приходит
Gena
)))
Stas
Ничем не плох, кроме того, что возможно не нужен )
Меня больше скорость старта беспокоит на андроиде. Ведь в любом случае это будет быстрее любого бандла.
Stas
На андроиде реакт в довесок с собой таскает старую как хвост мамонта библиотеку js core - ~4 мб на ARM и 5 на Intel. И всё это должно загрузиться в память ещё до того, как вы увидите хотя бы первый экран. К счастью, большинство смартфонов достаточно быстрые, чтобы сделать это
proguard, отдельные билды для каждую архитектуру. Firebase умеет в модульность, можно подключать только нужное. Ещё можно сделать сплеш скрин нативным или ресурсом, во втором случае будет показываться сразу после клика на приложение.
Stas
Можно из натива выжать все, что можно, потом пробовать эти эксперименты. Я ещё видел как кто загружал часть js через eval. хз можно ли так скажем загрузить redux)
Stas
Или на xamarin.
Pavel
Там вроде тоже не бесплатно
Stas
А че ужас. Опенсорс, stable, шарп даст фору хоть котлину, хоть js, в плане выразительности и системы типов. Не хайп, и экосистема хуже.
Stas
А котлин нейтив почему не сжечь?
Gena
Или на xamarin.
А у него так же как у nativescript нет абстракций над нативным ui?
Gena
Я ещё раз сделаю с последним метро... через пару часов, как до компа доберусь
http://vovkasm.skitch.vovkasm.org/mainbundle_21722A0D.png Красное - не должно было попасть в бандл ни при каких обстоятельствах и тут даже dead code elimination не нужен… просто надо правильно es-импорты реализовать Оранжевое - вот здесь умный транслятор должен засечь и вырезать куски неиспользуемого кода… это, однако, довольно сложная задача Зеленое - это код наших моделей и приложения. С моделями (core) интересно другое - размер сейчас 89Kb, этот модуль перед установкой компилится rollup в один es модуль(файл), который после минификации в приложении 89Kb. Фишка в том, что если его не бандлить через rollup, а целиком поставлять в приложение в исходниках, то его размер после минификации составит 91Kb… т.е. каким-то магическим образом metro на каждый файл/модуль имеет ещё оверхид…
Gena
Итого, если просто не включать в бандл то, что не импортится, размер RN упадет по меньшей мере с 525Kb -> 400Kb, т.е. на ~20%
Gena
Это собственно попытка объяснить почему я так упорно последние недели эту тему мусолю...
Gena
Это только ядро RN и только при тупом не включении того, что не используется на уровне es модулей и только грубая оценка - ну в картинке видно, как я её получил...
Gena
Просто сложил всё, что красным обведено внутри папки node_modules/react-native получилось 125Кб примерно... Если суммарно бандл на 20% уменьшится - это само по себе хорошо, но не будет стоить вставки кастомного процессинга и всех экспериментов с closure-compiler... Но это очень грубая оценка... я от closure-compiler больше ожидаю
Gena
Я просто теперь не могу это "развидеть" ))) Меня прям грызет ощущение, что у меня в продакшн бандле лежит ненужный экспериментальный Fabric рендерер ))) Вот до степени, что работать мешает )
Dmitry
на самом деле тут в бабке не ходи, там куча говна
Stas
можно написать плагин для babel который будет заменять импорты на пустые файлы для списка ненужных модулей. может уже такое есть
Gena
можно написать плагин для babel который будет заменять импорты на пустые файлы для списка ненужных модулей. может уже такое есть
Мне кажется в доках к ram-bundle что-то такое упоминалось... но это совсем уж ручная настройка...
Gena
Я на это обратил внимание, потому что хотябы куски RN неиспользуемые хочу повыкинуть (Fabric, Experimental...)
Stas
до сих пор не понимаю, почему бы просто не включить ram-bundle и ждать лучших времен? время старта будет быстрее. ну пусть эти 20% лежат в билде, но никогда не загружаются.
Gena
Возможно, в итоге я так и сделаю ))))
Gena
Правда, я далеко не уверен, что с таким бандлингом ram был оправдан... ведь при этом загрузка каждого чанка становится медленнее
Gena
Но это так... без измерений "пальцем в небо"
Stas
ну можно похекать: на первом компоненте грузить самый минимум модулей. потом через inline require грузить второй, у которого в top level require все тяжелые модули, даже если они не нужны конкретно для него
Stas
измерит надо, это да
Dmitry
народ, а кто нибудь знает такие сервисы, типа codeopen только для RN ?
Dmitry
чтобы рисовать визуальный компоненты ?
Demuz
Здарова всем. Подскажите пожалуйста, опять старый проект мозги крутит при сборке. В чем может быть проблема? Не могу понять
Dmitry
Ну так дубликат же
Артём
Ребят, кто-нибудь делал bottomTabNavigator, динамически скрывающийся при прокрутке какого-либо списка? (как на гифке)
Dmitry
https://builderx.io/
Спасибо!
Dmitry
Ребят, кто-нибудь делал bottomTabNavigator, динамически скрывающийся при прокрутке какого-либо списка? (как на гифке)
Думаю, что надо делать кастомный с анимацией и просто вешать смену позиции на onScroll
Ivan
Всем привет! Возникла проблема с RefreshControl на iOS. RefreshControl принимает refreshing={a || b || c}. 'a' 'b' или 'с' приходят из пропсов. Проблема в том что контент не смещается вниз когда refreshing === true и спинера не видно соответсвенно. Бывает видно как контент на пару пикселей смещается и всё. Иногда срабатывает нормально после того как ручками немного "помочь застрявшему рефрешеру" (чуть-чуть свайпнуть вниз). Сталкивался кто-нибудь с таким?
Ivan
Правильно я понимаю, что это в связке с ScrollView или FlatList используется? Если да, то какая версия RN?
Да, со ScrollView. а RN - expo 28. Плюс забыл упомянуть что все это внутри Container от NativeBase.
Gena
Expo не по моей части... в RN правили несколько багов на эту тему, они легко ищутся в issues...
Gena
Но у нас до сих пор есть специальный код, который на начальной загрузке данных, вместо списка рендерит отдельный RefreshControl, и только когда данные приходят, заменяет его на список уже со своим pull-to-refresh
Alex
привет. Скажите кто-нибудь, как очистить кеш приложения в React Native ? Например если хочу создать конпку для настроек приложения "очистить кеш" Не нашел ни одного рабочего подходящего модуля.
Alex
а кеш чего? Если вы про AsyncStorage, то http://facebook.github.io/react-native/docs/asyncstorage#clear
у меня приложение само сохраняет некий кеш, из-за чего некоторые данные не обновляется пока я не зайду в настройки телефона и не удалю для этого приложения весь кеш.
Yergali
Всем привет. Здесь есть кто с Алматы?
Alex
Что значит само? Вы сами его писали? ;-)
да. И я конечно же не сохранял никакие данные. Но при этом если зайти в настройки телефона, выбрать приложение, там есть кнопка a delete all data . Есил ее нажать, то начинае отображать актуальные данные, Из чего я и сделал вывод что ОС сама кеширует некие данных типа как это делает браузер,
Alex
да, это внешний запрос. При этом в дебаге данные изменены как надо, но отображаются старые. Впрочем, если ось сама не кеширует, значит нужно искать где я сам ошибся и модуль для удаления кеша никчему
Aynur
я так понимаю, что это Android. То есть, если закрыть (не свернуть, а именно закрыть) приложение, и зайти обратно - данные старые?
Alex
да
Aynur
wtf? запишите видео пожалуйста
Stas
андроид на нативном уровне в некоторых случаях сохраняет куки автоматически. https://github.com/facebook/react-native/issues/14063
Stas
и вы не поймете это без дебага кода на джава)
Alex
нет, это была все-таки логическая ошбика.
Alex
спасибо за помощь,
roman G
Ребят, как выполнить этот шаг (я впервые на линуксе)
Eugene
Ребят, как выполнить этот шаг (я впервые на линуксе)
Через терминал. Заходишь в хомяк, создаёшь файл,если его нет, и потом добавляешь нужные строки
roman G
Через терминал. Заходишь в хомяк, создаёшь файл,если его нет, и потом добавляешь нужные строки
Что такое хомяк и как в него зайти? (Как я понял это $HOME, но второй вопрос открыт) И ещё вопрос, эти настройки потом сохранятся глобально?
Eugene
Что такое хомяк и как в него зайти? (Как я понял это $HOME, но второй вопрос открыт) И ещё вопрос, эти настройки потом сохранятся глобально?
Хомяк - папка home для твоего юзера. Настройки сохраняться для твоего юзера. Каждый пользователь на компе сам может создавать и редактировать свой башпрофайл.