<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>ReactNative - info</title><generator>teletype.in</generator><description><![CDATA[Информация которая поможет каждому react native разработчику]]></description><image><url>https://img1.teletype.in/files/c1/16/c1166b20-5647-4f9f-bd19-43ff3209c63b.jpeg</url><title>ReactNative - info</title><link>https://teletype.in/@react_native_info</link></image><link>https://teletype.in/@react_native_info?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/react_native_info?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/react_native_info?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Mon, 25 May 2026 21:55:23 GMT</pubDate><lastBuildDate>Mon, 25 May 2026 21:55:23 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@react_native_info/rn-update-0-76</guid><link>https://teletype.in/@react_native_info/rn-update-0-76?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info</link><comments>https://teletype.in/@react_native_info/rn-update-0-76?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info#comments</comments><dc:creator>react_native_info</dc:creator><title>Обновление React Native 0.76: Новая Архитектура по Умолчанию, React Native DevTools и Другие Улучшения</title><pubDate>Thu, 24 Oct 2024 06:20:47 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/47/a2/47a29a36-dd5f-44f8-bdd4-f1cd06055698.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/e9/10/e910a2a0-4e36-4b0c-bbf4-7ff8e50b632f.png"></img>Недавно вышло обновление React Native 0.76, которое принесло значительные изменения и улучшения в экосистему разработчиков. В этом выпуске по умолчанию включена Новая Архитектура, представлены React Native DevTools и внедрены другие важные обновления, результат многолетних усилий команды разработчиков и поддержки сообщества.]]></description><content:encoded><![CDATA[
  <p id="ztrM">Недавно вышло обновление <strong>React Native 0.76</strong>, которое принесло значительные изменения и улучшения в экосистему разработчиков. В этом выпуске по умолчанию включена Новая Архитектура, представлены React Native DevTools и внедрены другие важные обновления, результат многолетних усилий команды разработчиков и поддержки сообщества.</p>
  <p id="xByu"><strong>Основные Нововведения</strong></p>
  <p id="o10H">  1. <strong>Новая Архитектура React Native по умолчанию</strong></p>
  <p id="EMpa">  2. <strong>React Native DevTools</strong></p>
  <p id="otJH">  3. <strong>Ускоренная работа Metro</strong></p>
  <p id="SPIH">  4. <strong>Новые стилевые свойства: Box Shadow и Filter</strong></p>
  <p id="jdCK">  5. <strong>Изменения, нарушающие обратную совместимость</strong></p>
  <h2 id="kaBj"><strong>Новая Архитектура React Native по Умолчанию</strong></h2>
  <p id="Makh">С выходом версии <strong>0.76</strong> Новая Архитектура React Native становится стандартом для всех новых проектов. Эта переработка внутренних механизмов платформы направлена на улучшение производительности и упрощение разработки высококачественных нативных приложений с использованием React. Команда разработчиков объявила, что Новая Архитектура готова к использованию в продакшене, что открывает новые возможности для разработчиков и обещает значительное развитие React Native в будущем.</p>
  <h2 id="lx7P"><strong>React Native DevTools</strong></h2>
  <figure id="HJgG" class="m_column">
    <img src="https://img3.teletype.in/files/e9/10/e910a2a0-4e36-4b0c-bbf4-7ff8e50b632f.png" width="1600" />
  </figure>
  <p id="iwJv">Одним из ключевых обновлений стало введение <strong>React Native DevTools</strong> — нового инструмента для отладки приложений. Этот инструмент предлагает разработчикам знакомый интерфейс, основанный на Chrome DevTools, с надежными точками останова, просмотром значений переменных, пошаговой отладкой и мощной консолью JavaScript. Кроме того, интеграция с React DevTools улучшена, что позволяет быстрее и надежнее инспектировать компоненты и профилировать приложения.</p>
  <p id="Lzvp">Особо стоит отметить улучшенный пользовательский опыт: новое наложение «Paused in Debugger» ясно показывает, когда приложение приостановлено на точке останова, а предупреждения в LogBox теперь отображаются сводкой и скрываются при подключении DevTools. Также DevTools поддерживают мгновенный запуск без дополнительной настройки, что значительно упрощает процесс отладки.</p>
  <h2 id="Jwbu"><strong>Ускоренная работа Metro</strong></h2>
  <p id="VZGU">В версии <strong>0.76</strong> была значительно улучшена производительность <strong>Metro</strong>, сервера, отвечающего за сборку и разрешение модулей. Разработчики отметили, что разрешение модулей стало примерно в <strong>15 раз быстрее</strong>, а время сборки «теплых» сборок увеличилось примерно в <strong>4 раза</strong>. Эти улучшения существенно сокращают время ожидания разработчиков и делают процесс разработки более плавным и эффективным.</p>
  <figure id="pK5u" class="m_original">
    <img src="https://img4.teletype.in/files/33/ba/33ba885e-d4ba-49f8-8bdf-bd64d93e48b6.gif" width="600" />
  </figure>
  <h2 id="Q9Iw"><strong>Новые стилевые свойства: Box Shadow и Filter</strong></h2>
  <p id="fron">Обновление также включает два новых стилевых свойства, доступных только в Новой Архитектуре:</p>
  <p id="51OS"><strong>boxShadow style:</strong></p>
  <p id="HFi5">  • <strong>boxShadow</strong>: Позволяет добавлять тени к элементам с возможностью настройки позиции, цвета, размера и размытия тени. Поддерживает как строковый формат, аналогичный CSS, так и объектный формат для большей гибкости.</p>
  <figure id="QFMn" class="m_column">
    <img src="https://img2.teletype.in/files/d8/14/d8144e3a-5a08-4956-b89b-93cca6a3c6c7.png" width="794" />
    <figcaption>boxShadow example</figcaption>
  </figure>
  <p id="c41t"><strong>Ограничения:</strong></p>
  <p id="A8he">  • Цвет тени по умолчанию — чёрный.</p>
  <p id="0pHL">  • Поддержка обычных теней начиная с версии Android 9+ и поддержка inset-теней начиная с версии Android 10+.</p>
  <p id="ODAI"><strong>filter style:</strong></p>
  <p id="z0KQ">  • <strong>filter</strong>: Применяет графические фильтры к элементам, такие как яркость, насыщенность, оттенок, размытие и тени. Также поддерживает как строковый, так и объектный форматы.</p>
  <figure id="uRJP" class="m_column">
    <img src="https://img3.teletype.in/files/64/1c/641ce283-ab18-49be-8f3e-5cf9d1a063a5.png" />
  </figure>
  <p id="XVBK"><strong>Ограничения:</strong></p>
  <p id="BRf4">  • На iOS поддерживаются только яркость и непрозрачность.</p>
  <p id="HVMG">  • На Android фильтры размытия и теней поддерживаются только на Android 12+.</p>
  <p id="MlQa">  • Свойство filter подразумевает overflow: hidden, поэтому дочерние элементы будут обрезаться, если выходят за границы родителя.</p>
  <h2 id="breaking-changes-1">Breaking Changes</h2>
  <p id="z8j4">С обновлением пришли и некоторые изменения, которые могут потребовать внимания разработчиков:</p>
  <p id="WU2R">1. <strong>Удалена зависимость от </strong>@react-native-community/cli:</p>
  <p id="NR6J">React Native стал фреймворк-агностичным, что позволяет команде быстрее развивать проекты независимо друг от друга. Разработчикам, использующим CLI в своём рабочем процессе, необходимо явно добавить зависимости на CLI в package.json проекта.</p>
  <pre id="EP5H">// …
&quot;devDependencies&quot;: {
  // …
  &quot;@react-native-community/cli&quot;: &quot;15.0.0&quot;,
  &quot;@react-native-community/cli-platform-android&quot;: &quot;15.0.0&quot;,
  &quot;@react-native-community/cli-platform-ios&quot;: &quot;15.0.0&quot;,
},</pre>
  <p id="698E">2. <strong>Уменьшение размера Android-приложений на ~3.8 МБ</strong>:</p>
  <p id="Yzzk">За счёт слияния нативных библиотек в libreactnative.so размер приложений на Android уменьшился примерно на 3.8 МБ (около 20% от общего размера), а время запуска приложения сократилось на ~15 мс (~8%). Однако это изменение требует от разработчиков обновления метода onCreate в классе MainApplication для корректной загрузки новой библиотеки.</p>
  <pre id="qFwe">import com.facebook.react.soloader.OpenSourceMergedSoMapping
import com.facebook.soloader.SoLoader

class MainApplication : Application(), ReactApplication {

  override fun onCreate() {
    super.onCreate()
    SoLoader.init(this, OpenSourceMergedSoMapping)
  }
}</pre>
  <p id="pmes">3. <strong>Обновление минимальных требований к SDK</strong>:</p>
  <p id="CQky">  • <strong>iOS</strong>: с версии 13.4 до 15.1</p>
  <p id="rOaO">  • <strong>Android</strong>: с SDK 23 до SDK 24 (Android 7)</p>
  <p id="h1dj"><strong>Прочие Изменения</strong></p>
  <p id="DJpY">  • <strong>Анимации</strong>: Остановлено отправление обновлений состояния в React при зацикленных анимациях, что предотвращает ненужные перерисовки.</p>
  <p id="jI1T">  • <strong>DevTools</strong>: Удалены вкладки производительности и сети в инспекторе под Новой Архитектурой.</p>
  <p id="g39S">  • <strong>Текстовый движок</strong>: Всегда используется <code>AttributedStringBox</code> вместо <code>AttributedString</code> в <code>TextLayoutManager</code>.</p>
  <p id="tmEV">  • <strong>Android</strong>: Изменена реализация фона представлений.</p>
  <p id="y7At">  • <strong>iOS</strong>: Удалён макрос <code>RCT_EXPORT_CXX_MODULE_EXPERIMENTAL</code> для автосвязывания чистых C++ модулей.</p>
  <p id="Ures"><strong>Обновление до 0.76</strong></p>
  <p id="vmuG">Разработчикам рекомендуется воспользоваться <a href="https://react-native-community.github.io/upgrade-helper/" target="_blank">React Native Upgrade Helper</a> для просмотра изменений кода между версиями. Пользователи Expo смогут воспользоваться React Native 0.76 в составе Expo SDK 52. Для создания нового проекта через CLI можно использовать следующую команду:</p>
  <pre id="RlyR">npx @react-native-community/cli@latest init MyProject --version latest</pre>
  <p id="WMcy"><strong>Важно:</strong> Версия <strong>0.76</strong> теперь является последней стабильной версией React Native, а серия <strong>0.73.x</strong> больше не поддерживается. Для получения дополнительной информации следует ознакомиться с <a href="https://reactnative.dev/support-policy" target="_blank">политикой поддержки React Native</a>.</p>
  <p id="xXNp">В целом, обновление React Native 0.76 приносит значительные улучшения и новые возможности, делая платформу ещё более мощной и удобной для разработчиков. Сообщество с нетерпением ожидает дальнейших обновлений и новых функций, которые продолжат развивать экосистему React Native.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@react_native_info/jBpJL5FInUR</guid><link>https://teletype.in/@react_native_info/jBpJL5FInUR?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info</link><comments>https://teletype.in/@react_native_info/jBpJL5FInUR?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info#comments</comments><dc:creator>react_native_info</dc:creator><title>Делаем патч для Pods библиотеки</title><pubDate>Tue, 26 Apr 2022 12:44:56 GMT</pubDate><description><![CDATA[<img src="https://img4.teletype.in/files/fb/22/fb225fd6-aa8f-4633-a172-fcdbbc3a47ef.png"></img>Приветствую друзья на связи автор телеграм канала ReactNative - info, недавно столкнулся с одной интересной проблемой, сборка архива для iOS приложения постоянно завершалась такой ошибкой:]]></description><content:encoded><![CDATA[
  <p id="IIFj">Приветствую друзья на связи автор телеграм канала <a href="http://t.me/react_native_info" target="_blank">ReactNative - info</a>, недавно столкнулся с одной интересной проблемой, сборка архива для iOS приложения постоянно завершалась такой ошибкой:</p>
  <pre id="ctxZ">error: Abort trap: 6 (in target &#x27;iOSPhotoEditor&#x27; from project &#x27;Pods&#x27;)</pre>
  <p id="cdE7">В то время как локальные сборки на эмуляторы и устройства собирались корректно. </p>
  <p id="IGdS">Проблема оказалась в файле <em>CropView.swift который лежал в </em>директории<em> Pods</em>, нужно было подкорректировать один блок <em>if(), </em>заменив в нем <em>вызов функции UI_USER_INTERFACE_IDIOM() </em>на<em> UIDevice.current.userInterfaceIdiom. </em></p>
  <p id="YI67">После этих правок архив собрался успешно, но эти изменения нужно было как-то сохранить, иначе после повторной установки подов их там уже не будет.</p>
  <p id="qKBm">На GitHub давно висит issue с этой ошибкой и фиксом на нее, делать новый pull request смысла нет. Создавать свой форк и заливать его на GitHub/CocoaPods показалось бессмысленно ради одной строчки кода. Пришел к выводу что нужно сделать локальный патч который бы применялся после каждой установки <em>подов.</em></p>
  <p id="I76Q">Итак, приступим. Полазив на просторах Google нашел утилиту которая выполняет всю рутину за вас, но у меня ее запустить так и не удалось, но на всякий случай оставлю ссылку (<a href="https://github.com/DoubleSymmetry/cocoapods-patch" target="_blank">cocoapods-patch</a>).<br />Также есть второй минус у этого инструмента, его нужно будет установить всем разработчикам в вашем проекте, мой способ ниже позволит избежать этого.</p>
  <p id="68Vz"> Для начала необходимо сгенерировать <em>diff</em> изменений в проблемном файле. Чтобы это сделать необходимо дублировать наш файл и сделать в нем необходимые правки. Новый файл я назвал <em>CropViewPatched.swift.</em></p>
  <p id="NBm6">Далее из папки iOS проекта в терминале я выполнил следущую команду:</p>
  <pre id="axWF">git diff -u ./Pods/iOSPhotoEditor/Photo\ Editor/Photo\ Editor/CropView.swift ./Pods/iOSPhotoEditor/Photo\ Editor/Photo\ Editor/CropViewPatched.swift &gt; iOSPhotoEditor.patch</pre>
  <p id="NKkQ">Давайте разберемся что тут происходит:</p>
  <ul id="KoRU">
    <li id="XQl9">параметр <strong>-u </strong>генерирует diff патч;</li>
    <li id="tAlF">вторым  аргументом идет путь к оригинальному файлу <em><strong>CropView.swift</strong>;</em></li>
    <li id="IC7o">третьим аргументом идет путь к измененному файлу <em><strong>CropViewPatched.swift</strong>;</em></li>
    <li id="4jSB"><em>далее идет  такая конструкция <strong>&gt; iOSPhotoEditor.patch</strong></em> она позволяет сохранить полученный  diff изменений в файл <em>iOSPhotoEditor.patch </em>в той директории откуда вы запустили данную команду; </li>
  </ul>
  <p id="xMZ5">Полученный файл (<em>iOSPhotoEditor.patch</em>) будет выглядеть примерно так:</p>
  <figure id="du3m" class="m_column">
    <img src="https://img4.teletype.in/files/fb/22/fb225fd6-aa8f-4633-a172-fcdbbc3a47ef.png" width="1840" />
    <figcaption>iOSPhotoEditor.patch</figcaption>
  </figure>
  <p id="I8zS">Далее в папке iOS я создал папку <strong>patches</strong> чтобы в дальнейшем хранить там все патчи если это потребуется и поместил туда полученный <em>iOSPhotoEditor.patch.</em></p>
  <p id="Rqic">Остался финальный шаг, необходимо найти в вашем <strong>Podfile</strong> секцию <em>post_install</em></p>
  <pre id="NA11">post_install do |installer|
   ...
end</pre>
  <p id="a2GR">Если таковой нет то создайте ее в конце вашего файла. Обратите внимание на то что данная секция может быть только <strong>одна в вашем Podfile</strong>.</p>
  <p id="ksZz">Теперь в конце этой секции необходимо вставить следующую инструкцию:</p>
  <pre id="w2GA">post_install do |installer|
  ...
  puts &#x27;🟢 Патчим iOSPhotoEditor&#x27;
  %x(patch &#x27;./Pods/iOSPhotoEditor/Photo\ Editor/Photo\ Editor/CropView.swift&#x27; &lt; &#x27;./patches/iOSPhotoEditor.patch&#x27;)
end</pre>
  <p id="qOdS">Давайте разберемся что тут происходит:</p>
  <ul id="iTPg">
    <li id="lzPg"><strong>puts </strong>–позволяет нам вывести лог при выполнении команды <em>pod install</em></li>
    <li id="C7iV">с помощью <strong>%x(...)</strong> можно выполнить какую-либо <em>shell</em> команду вашем <em>Podfile.</em></li>
    <li id="PRb1"><strong>patch</strong> – применяет полученный патч файл к проблемому файлу</li>
    <li id="CO4L">вторым аргументом для patch идет путь к проблемному файлу относительно вашего <em>Podfile</em>  (обратите внимание на то что путь взят в одинарные кавычки и перед пробельным символом стоит <strong>\</strong>)</li>
    <li id="fK1W">третьим аргументом после <strong>&lt;</strong> идет путь к вашему патч файлу относительно вашего <em>Podfile</em></li>
  </ul>
  <p id="0fq4">Вот и все, теперь после выполнения команды <em>pod install</em> к вашему проблемному файлу будет применятся ваш патч.</p>
  <p id="dQ0l">Желаю всем удачных патчей </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@react_native_info/NNAogXLGbP3</guid><link>https://teletype.in/@react_native_info/NNAogXLGbP3?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info</link><comments>https://teletype.in/@react_native_info/NNAogXLGbP3?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info#comments</comments><dc:creator>react_native_info</dc:creator><title>Обзор новой архитектуры Fabric на примере react-native-screens</title><pubDate>Fri, 18 Feb 2022 13:20:37 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e1/a6/e1a653ea-3987-41e0-9188-a1c78b7e850b.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/8a/41/8a41f419-bb33-4766-a768-10394fe550f4.png"></img>Если вы следите за новостями из мира React Native, вы наверняка слышали о Fabric - новой архитектуре для React Native. Он использовался в течение довольно долгого времени внутри Facebook, и теперь основная команда решила заняться его более широким внедрением с открытым исходным кодом. С предстоящим выпуском React Native 0.68 перейти на новую архитектуру будет просто, необходимо всего лишь установить одну новую константу в вашем проекте перед сборкой приложения, что облегчит любому разработчику возможность попробовать новую архитектуру. Однако переход на Fabric будет невозможен для всех после выхода новой версии React Native, так как многие проекты React Native зависят от дополнительных библиотек, которые также должны быть адаптированы...]]></description><content:encoded><![CDATA[
  <figure id="AHxX" class="m_column">
    <img src="https://img1.teletype.in/files/8a/41/8a41f419-bb33-4766-a768-10394fe550f4.png" width="1400" />
  </figure>
  <p id="c5c5">Если вы следите за новостями из мира React Native, вы наверняка слышали о Fabric - новой архитектуре для React Native. Он использовался в течение довольно долгого времени внутри Facebook, и <a href="https://reactnative.dev/blog/2022/01/21/react-native-h2-2021-recap#the-new-architecture-rollout-and-releases" target="_blank">теперь основная команда решила заняться его более широким внедрением с открытым исходным кодом</a>. С предстоящим выпуском React Native 0.68 перейти на новую архитектуру будет просто, необходимо всего лишь установить одну новую константу в вашем проекте перед сборкой приложения, что облегчит любому разработчику возможность попробовать новую архитектуру. Однако переход на Fabric будет невозможен для всех после выхода новой версии React Native, так как многие проекты React Native зависят от дополнительных библиотек, которые также должны быть адаптированы к новой архитектуре. Это особенно актуально для библиотек, которые предоставляют дополнительные нативные функции или предоставляют нативные компоненты, специфичные для конкретной платформы. Мы надеемся увидеть большой толчок к принятию Fabric среди самых популярных проектов сообщества React Native. Как Software Mansion — автора ряда популярных библиотек React Native, мы хотим объявить о своем намерении портировать проекты, которые мы поддерживаем, и возглавить усилия по внедрению Fabric на собственном примере, чтобы как можно скорее включить новую архитектуру для каждого приложения React Native.</p>
  <p id="d729">Сегодня мы публикуем первую версию библиотеки react-native-screens, совместимую с Fabric. Это не только первая совместимая с Fabric версия этого очень популярного проекта (устанавливаемая на 70% чаще, чем react-native из NPM), но и первая нативная библиотека компонентов, совместимая с новой архитектурой React Native в целом. В этой статье мы обсудим, что нужно для переноса существующей библиотеки с собственными примерами кода на Fabric и покажем наш подход к разработке. Если вы заинтересованы в экспериментах с новой архитектурой, мы также покажем как вы можете использовать react-native-screens с вашим первым приложением на Fabric. Если вы поддерживаете свой собственный пакет для React Native, мы надеемся, что эта статья вдохновит вас на его миграцию в Fabric и даст вам хорошее представление об этом процессе —  для этого мы делимся ссылками на diff изменения и PR из нашего GitHub, которые касаются определенных этапов миграции. Мы были бы рады, если бы вы взяли конфигурацию проекта и идеи, которые мы здесь представляем, чтобы подготовить другие библиотеки для Fabric.</p>
  <h1 id="1333">Используйте react-native-screens с Fabric уже сегодня</h1>
  <p id="SW9j">Самый последний релиз-кандидат React Native (0.68) позволяет вам включить архитектуру Fabric в вашем проекте. Этот тип настройки призван помочь сделать процесс миграции на Fabric постепенным. Люди, которые хотят обновить версию React Native, могут безопасно сделать это, не задумываясь о Fabric. Как только приложение, включая его зависимости, будут готовы к новой архитектуре, вы сможете активировать новую архитектуры для своего проекта. Ядро React Native поддерживает как старую, так и новую архитектуру. Однако, как следствие, библиотеки должны с этим справляться. Если мы хотим сделать переход плавным, существующие пакеты должны обеспечивать аналогичный уровень совместимости. Именно так подготовлена ​​версия библиотеки react-native-screens@3.12. Вы можете использовать его с любой совместимой версией React Native через старую архитектуру, или вы можете активировать переключатель новой архитектуры в приложении React Native 0.68 и использовать его через Fabric.</p>
  <h2 id="72e7">Простой способ чтобы начать</h2>
  <p id="2639">Чтобы протестировать реализацию react-native-screens как с новой, так и со старой архитектурой, мы создали пример приложения в нашем основном репозитории GitHub, которое настроено на работу с Fabric. Самый простой способ протестировать его — клонировать репозиторий react-native-screens с GitHub и следовать инструкциям из папки <a href="https://github.com/software-mansion/react-native-screens/tree/main/FabricExample" target="_blank">FabricExample</a>.</p>
  <h2 id="c969">Создание вашего первого приложения Fabric с помощью react-native-screens </h2>
  <p id="b5f2">Как упоминалось ранее, включить Fabric очень просто, необходимо активировать одну константу перед сборкой вашего приложения. Вы можете попробовать это после обновления существующего приложения до 0,68, но ниже мы описываем процесс создания нового проекта react-native:</p>
  <ol id="EHgA">
    <li id="0fd2">Создайте новое приложение с помощью React Native CLI: <code>npx react-native init NewRN68App --version 0.68.0-rc.1</code></li>
    <li id="5bdf">Установите react-native-screens: <code>yarn add react-native-screens</code></li>
    <li id="8ca2">Для активации новой архитектуры для iOS необходимо запустить команду<code>pod install</code> в папке <code>ios</code> следующим образом:  <code>RCT_NEW_ARCH_ENABLED=1 pod install</code></li>
    <li id="03b0">Для андроид необходимо установить новое значение <code>newArchEnabled=true</code> в файле <code>android/gradle.properties</code></li>
    <li id="fd65">Теперь вы можете приступить к созданию приложения как обычно на Android и на iOS. Установленная версия react-native-screens автоматически определит, включен ли Fabric, и будет использовать соответствующую реализацию.</li>
  </ol>
  <p id="14f4">Обратите внимание, что реализация Fabric для react-native-screens пока не поддерживает все доступные параметры. Если вы хотите знать, почему это так, читайте дальше.</p>
  <h1 id="2805">Обзор процесса миграции</h1>
  <p id="4d88">На уровне архитектуры, Fabric представляет новый интерфейс кода JavaScript для взаимодействия с нативным ядром. Вместо использования моста вся связь между встроенными компонентами и компонентами JS осуществляется через JSI (C++ API для взаимодействия с виртуальной машиной JS). Информация с одной стороны на другую передается с помощью функций C++ вместо сериализации/десериализации для передачи по мосту. Из-за этого библиотеки, которые стремятся поддерживать новую архитектуру, должны адаптироваться к этому новому интерфейсу. Использовать его относительно просто, когда вы хотите создать совершенно новую библиотеку или набор собственных компонентов (мы обсудим некоторые детали позже), однако адаптация Fabric к существующей библиотеке создает некоторые дополнительные проблемы. В частности, мы хотим иметь возможность поддерживать как версию с Fabric, так и версию не относящиеся к Fabric, с как можно большим количеством общего кода между этими двумя реализациями. Это позволило бы нам улучшать библиотеку и исправлять ошибки, а также предлагать людям, которые могут перейти на Fabric, и тем, кто не может, одинаковый уровень поддержки.</p>
  <p id="6996">Ниже мы обсудим основные шаги процесса миграции существующей библиотеки. Цель состоит в том, чтобы иметь возможность распространять одну версию библиотеки, которая может работать как с Fabric, так и со старой архитектурой RN без дополнительной настройки для пользователя, то есть единственное, что мы ожидаем, это указать, должно ли приложение использовать Fabric или нет, и на основе этого выбрать соответствующую конфигурацию для библиотеки.</p>
  <p id="47f9">Первое, что мы сделали, это написали спецификации компонентов в Flow - диалекте JS. Этот код является источником истины для приложения. Он предоставляет спецификацию, используемую как на нативной стороне, так и на стороне JS. Затем мы изменили часть нашего нативного кода для хорошей работы с Fabric. На этом этапе мы добавили различные реализации, для обработки пропсов и событий. На Android кодовая база является общей между старой и новой архитектурой. На iOS нам нужно было создавать новые файлы, тем самым делая две реализации независимыми. Чтобы сохранить совместимость библиотеки с обеими архитектурами, у нас есть ряд файлов/классов, специфичных для данной архитектуры. В некоторых случаях мы решили разветвить небольшие части кода проверками архитектуры, так как иногда для нас было бы более целесообразно оставить большую часть данного файла или класса и иметь только небольшие фрагменты, специфичные для архитектуры — мы делаем это как в JS, так и в нативной кодовой базе.</p>
  <p id="66a2">Процесс миграции для нас постепенный. Мы начали с внедрения базовых функций в Screens и решили добавить остальное по позже. Теперь, когда мы опубликовали минимальную версию библиотеки, мы сосредоточимся на том, чтобы сделать все функции совместимыми с Fabric.</p>
  <p id="04c5">Если вы хотите глубже погрузиться в изменения, мы разделили их на несколько PR:</p>
  <ul id="d8tZ">
    <li id="ba01"><a href="https://github.com/software-mansion/react-native-screens/pull/1262" target="_blank">Базовые изменения в JS и iOS</a></li>
    <li id="581a"><a href="https://github.com/software-mansion/react-native-screens/pull/1263" target="_blank">Базовые изменения Android</a></li>
    <li id="40c8"><a href="https://github.com/software-mansion/react-native-screens/pull/1322" target="_blank">Улучшение процесса установки для Android</a></li>
    <li id="a285"><a href="https://github.com/software-mansion/react-native-screens/pull/1291" target="_blank">Исправление pop-анимации (работа в процессе)</a></li>
    <li id="2699"><a href="https://github.com/software-mansion/react-native-screens/compare/99117a8...main" target="_blank">Все изменения</a></li>
  </ul>
  <h1 id="dba6">Software Mansion &amp; Shopify</h1>
  <p id="e11e">Поскольку это первый большой релиз для нас в этом году, мы хотели бы воспользоваться этой возможностью, чтобы поблагодарить <a href="https://shopify.engineering/" target="_blank">Shopify </a>за помощь в наших усилиях, связанных с React Native. Третий год подряд мы сотрудничаем в улучшении экосистемы React Native путем создания и обслуживания основных библиотек с открытым исходным кодом. Одной из основных целей этого года является обеспечение более широкого внедрения новой архитектуры, и этот выпуск библиотеки react-native-screens является лишь первым из многих шагов в этом направлении, которые мы собираемся сделать благодаря поддержке <a href="https://shopify.engineering/" target="_blank">Shopify</a>.</p>
  <h1 id="887e">Что дальше</h1>
  <p id="sc0g">Выпуск совместимой с Fabric версии react-native-screens — важная веха на пути сообщества к адаптации новой архитектуры React Native. Мы надеемся, что за нами последуют другие разработчики поддерживающие свои библиотеки, и рады поделиться нашим опытом. Если у вас есть библиотека или вы планируете перенести свой проект на Fabric, не стесняйтесь обращаться к нам! Команда Open Source в Software Mansion намерена работать над портированием всех библиотек в ближайшем будущем, которые мы поддерживаем в настоящее время, поэтому следите за обновлениями и не забудьте подписаться на нас в <a href="https://twitter.com/swmansion" target="_blank">Twitter</a>.</p>
  <hr />
  <p id="7p4c">Перевод статьи <strong><a href="https://blog.swmansion.com/introducing-fabric-to-react-native-screens-fd17bf18858e" target="_blank">Introducing Fabric to react-native-screens</a></strong> выполнен для телеграмм канала <a href="https://t.me/react_native_info" target="_blank">ReactNative - info</a></p>
  <p id="1T5l">Автор оригинала: <a href="https://medium.com/@jakubtkacz?source=user_profile----------------------------------------" target="_blank">Jakub Tkacz</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@react_native_info/4WJ84wH7Owf</guid><link>https://teletype.in/@react_native_info/4WJ84wH7Owf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info</link><comments>https://teletype.in/@react_native_info/4WJ84wH7Owf?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info#comments</comments><dc:creator>react_native_info</dc:creator><title>Отладка релизной сборки React Native на максималках или как получить от тестировщиков внятное объяснение ошибки.</title><pubDate>Sun, 06 Feb 2022 01:45:50 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f5/d2/f5d23986-3e57-4878-b865-99f95f257766.png"></media:content><description><![CDATA[<img src="https://camo.githubusercontent.com/b7a468f053e85f9de4b86b17ddbb0d14687de195dcdda24ffd9b8949666cd5d8/68747470733a2f2f692e6962622e636f2f59506b67737a672f636f7665722e706e67"></img>Привет всем, представляю вашему вниманию отличный инструмент для отладки релизной сборки проекта без использования сторонних сервисов (применяем у себя на проде, теперь от тестеров есть логи с устройсва 🥳).]]></description><content:encoded><![CDATA[
  <figure id="GupL" class="m_column">
    <img src="https://camo.githubusercontent.com/b7a468f053e85f9de4b86b17ddbb0d14687de195dcdda24ffd9b8949666cd5d8/68747470733a2f2f692e6962622e636f2f59506b67737a672f636f7665722e706e67" width="2880" />
  </figure>
  <p id="WH2D">Привет всем, представляю вашему вниманию отличный инструмент для отладки релизной сборки проекта без использования сторонних сервисов (применяем у себя на проде, теперь от тестеров есть логи с устройсва 🥳).</p>
  <hr />
  <p id="Coeo">Что умеет данный инструмент:</p>
  <p id="dWXx">— Собирать <strong>логи</strong> с устройсва;</p>
  <p id="pOZo">— Собирать информацию об <strong>нативных</strong> и <strong>JS</strong> крашах;</p>
  <p id="C5ub">— Собирать информацию о запросах в сеть;</p>
  <p id="F79h">— Экспортировать собранные данные в JSON;</p>
  <hr />
  <p id="RFNr">Настройка довольно простая, сначала необходимо установить <a href="https://www.npmjs.com/package/mobile-app-debugger" target="_blank">этот <em>npm</em></a> <a href="https://www.npmjs.com/package/mobile-app-debugger" target="_blank">пакет</a>:</p>
  <p id="XJYv"><code>yarn add mobile-app-debugger</code></p>
  <p id="j4vt"></p>
  <p id="WQ2L">Далее для <em>Android</em> необходимо в <code>AndroidManifest.xml</code> в тэге <code>application</code> добавить следующую строчку:</p>
  <p id="3mmt"><code>&lt;application</code></p>
  <p id="nefx"><code>android:usesCleartextTraffic=&quot;true&quot;</code></p>
  <p id="HYc5"><code>…&gt;</code></p>
  <p id="VU0x"></p>
  <p id="yfho">Для <em>iOS</em> достаточно просто выполнить <code>pod install</code></p>
  <p id="hLo0"></p>
  <p id="QjDj">После установки пакета в главном <em>index.js</em> файле вашего проета добавте следующие строки:</p>
  <p id="j6xx"><code>import { AppDebugger } from &#x27;app-debugger&#x27;;</code></p>
  <p id="UwBn"><code>AppDebugger.configure({</code></p>
  <p id="g5kb"><code>port: 3000,</code></p>
  <p id="4keb"><code>isOverwriteConsole: true,</code></p>
  <p id="nkID"><code>});</code></p>
  <p id="CJld">Мы только что настроили дебаггер, чтобы он работал с <strong>3000</strong> портом, к этому мы еще вернемся.</p>
  <hr />
  <p id="mIeF">Дело осталось за малым, необходимо скачать приложение <strong>App Debugger</strong> для  нужной платформы:</p>
  <p id="9bKm">—  <a href="https://play.google.com/store/apps/details?id=ru.kirillag.mobileappdebugger" target="_blank">Android</a></p>
  <p id="njJb">—  <a href="https://apps.apple.com/app/app-debugger/id1605641206" target="_blank">iOS</a></p>
  <p id="5hJQ">Зайти в дебагер, ввести <strong>порт</strong> который мы передавали в метод <code>AppDebugger.configure</code>, не закрывая дебагер перейти в ваше RN приложение, проделать необходимые манипуляции, снова вернуться в дебагер и наслаждаться результатом 🙂<br /><br /></p>
  <figure id="SIw9" class="m_original">
    <img src="https://raw.githubusercontent.com/igroza/mobile-app-debugger/HEAD/example/img/example-1.gif" width="222" />
  </figure>
  <p id="CdeE">Более детальная информация по пакету: https://www.npmjs.com/package/mobile-app-debugger</p>
  <p id="106U">Ну а на этом все,  всем спасибо 🍀</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@react_native_info/EuXI59WBDjH</guid><link>https://teletype.in/@react_native_info/EuXI59WBDjH?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info</link><comments>https://teletype.in/@react_native_info/EuXI59WBDjH?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info#comments</comments><dc:creator>react_native_info</dc:creator><title>Вам больше не нужно сравнивать Flutter и React Native</title><pubDate>Thu, 03 Feb 2022 04:46:50 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/bd/36/bd36a0af-5e04-4b0b-84e0-8ecdfb19302c.png"></media:content><description><![CDATA[<img src="https://miro.medium.com/max/1400/1*vj0i5OYK6tMXA7Y8one2JA.png"></img>Flutter и React Native являются самыми популярными фреймворками для современной кроссплатформенной разработки мобильных приложений. Несомненно, нативная разработка на основе API для конкретной платформы по-прежнему является технически лучшим подходом к созданию приятных и хорошо работающих мобильных приложений. Тем не менее, для разработчиков очень трудно поддерживать отдельные кодовые базы для каждой мобильной платформы. Поэтому теперь почти каждая команда разработчиков выбирает Flutter или React Native для создания мобильных приложений.]]></description><content:encoded><![CDATA[
  <h2 id="966d">React Native исправляет основные проблемы с производительностью и становится равным Flutter</h2>
  <figure id="P2dk" class="m_custom">
    <img src="https://miro.medium.com/max/1400/1*vj0i5OYK6tMXA7Y8one2JA.png" width="700" />
    <figcaption>Фото <a href="https://unsplash.com/@alexacea?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" target="_blank">Alexandru Acea</a> на <a href="https://unsplash.com/s/photos/coding?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" target="_blank">Unsplash</a>, отредактированно с помощью Canva.</figcaption>
  </figure>
  <p id="b11b"><em>Flutter</em> и <em>React Native </em>являются самыми популярными фреймворками для современной кроссплатформенной разработки мобильных приложений. Несомненно, нативная разработка на основе <em>API</em> для конкретной платформы по-прежнему является технически лучшим подходом к созданию приятных и хорошо работающих мобильных приложений. Тем не менее, для разработчиков очень трудно поддерживать отдельные кодовые базы для каждой мобильной платформы. Поэтому теперь почти каждая команда разработчиков выбирает Flutter или React Native для создания мобильных приложений.</p>
  <p id="0558">Как и для любого другого фреймворка или технологического стека, мы задаем себе один и тот же вопрос. Что лучше? — <em>Flutter</em> или <em>React Native</em>. Некоторые разработчики могут голосовать за <em>Flutter,</em> из-за его почти нативной производительности и богатого набора виджетов. Между тем, некоторым разработчикам нравится React Native из-за его дружелюбности к разработчику и поддержки компонентов для конкретной платформы.</p>
  <p id="90a6">Приложения Flutter демонстрируют значительное повышение производительности по сравнению с приложениями React Native благодаря молниеносной связи Dart-to-Native. React Native взаимодействует с собственным API через мост JavaScript. Концепция моста JavaScript не работает хорошо для всех требований в разработке.</p>
  <p id="e41c">В результате сообщество разработчиков начало критиковать React Native, так как он показал низкую производительность на бюджетных устройствах из-за быстро разряженных батарей так как использование ресурсов было выше среднего. Теперь React Native решает основные проблемы связанные с производительностью путем перепроектирования своих основных модулей. Давайте обсудим, как новая архитектура React Native конкурирует с Flutter.</p>
  <hr />
  <h1 id="889f">Как Flutter решал проблемы производительности лучше, чем React Native</h1>
  <p id="87fe">Flutter становится все более популярным с каждым днем по двум основным причинам: производительность и гибкость. Элементы управления пользовательским интерфейсом, специфичные для платформы, ограничены для современных сценариев использования и удобства использования. Например, реализация бокового меню в iOS трудна без сторонней библиотеки, так как боковое меню не является частью рекомендаций Apple UX. Flutter не использует собственные элементы пользовательского интерфейса, специфичные для платформы, но предлагает свой собственный набор инструментов пользовательского интерфейса. Так Flutter поставляется со встроенной библиотекой 2D-рендеринга (<a href="https://github.com/google/skia" target="_blank">Skia</a>).</p>
  <p id="cc48">React Native отображает нативные элементы пользовательского интерфейса, специфичные для платформы, на основе компонентов React. Код React Native работает внутри движка JavaScript, а контекст JavaScript взаимодействует с нативным кодом (нативным хост-приложением) через мост. Мост JavaScript использует асинхронный коммуникационный подход на основе JSON. Если вы не используете <a href="https://github.com/facebook/hermes" target="_blank">Hermes</a>, среда выполнения React Native интерпретирует пакет JavaScript с помощью <a href="https://github.com/WebKit/webkit/tree/main/Source/JavaScriptCore" target="_blank">JavaScriptCore </a>(JSC). В результате приложения работают медленно и снижают удобство использования, когда вы так часто используете нативные API и добавляете больше JavaScript кода.</p>
  <p id="b58f">Flutter не использует JavaScript-мост и JIT-компикцию для приложений. Связь Flutter engine Dart-to-Native использует более быстрые двоичные буферы памяти.</p>
  <hr />
  <h1 id="a353">Области, где React Native работает лучше, чем Flutter</h1>
  <p id="905b">Когда вы делаете кроссплатформенное приложение с помощью Flutter, оно становится приложением Flutter, а не нативным приложением для конкретной платформы. Приложения Flutter поставляются с различными спецификациями пользовательского интерфейса и предоставляют пользователям различный UX. С другой стороны, React Native предлагает способ использования нативных элементов пользовательского интерфейса для конкретной платформы через кроссплатформенный интерфейс разработчика (React). В большинстве сценариев мы используем кроссплатформенные фреймворки, так как разработка нативных приложений занимает много времени для конкретной платформы. Но Flutter дает нам приложения Flutter, а не нативные приложения, такие как React Native.</p>
  <blockquote id="n3RT">(прим. ред.) По своей сути приложение на Flutter является канвасом</blockquote>
  <p id="CzVq"></p>
  <p id="cbfd">Разработка приложений становится проще, когда есть кроссплатформенная система компоновки. Вот почему Electron стал выбором номер один для создания кроссплатформенных десктопных приложений. Он использует HTML в качестве кроссплатформенной системы компоновки. Аналогичным образом, React Native также предоставляет кроссплатформенную систему компоновки на основе Flexbox для рендеринга элементов UI, специфичных для платформы. С другой стороны, Flutter не имеет удобной для фронтенд-разработчика системы компоновки, и он предлагает новый макет на основе дерева виджетов, который иногда сбивает с толку современных разработчиков, которые пришли из мира веб-разработки.</p>
  <p id="IJGY">Кроме того, Hermes подобный поддержке браузерного API JavaScript, и среда разработки на основе React повышают производительность разработчиков React Native по сравнению с Flutter.</p>
  <p id="6ce9">Как новая архитектура React Native решает проблемы с производительностью</p>
  <p id="a338">Основным недостатком React Native было отсутствие производительности на мобильных устройствах среднего и низкого класса. Ранее приложения на основе React-Native имели медленное время запуска, потому что среда выполнения JavaScriptCore интерпретировала пакет JavaScript при запуске приложения. Позже команда React Native создала Hermes и ускорила время запуска приложения, представив компиляцию AOT (с опережением времени) для пакета JavaScript. Концепция AOP Hermes помогла приложениям React Native снизить потребление батареи за счет сокращения использования ресурсов. React Native скоро будет использовать Hermes в качестве движка JavaScript по умолчанию для всех новых проектов из-за этих улучшений производительности.</p>
  <p id="3326">Но мост JavaScript не работает хорошо во всех случаях разработки, так как он использует асинхронную связь на основе JSON путем сериализации JavaScript/нативных объектов. React Native обновила свою текущую архитектуру для решения этих проблем с производительностью. Теперь новый компонент под названием <a href="https://github.com/facebook/react-native/blob/main/ReactCommon/jsi/jsi/jsi.cpp" target="_blank">JSI </a>(JavaScript Interface) заменяет текущий модуль моста. JSI позволяет контексту JavaScript вызывать нативные методы непосредственно без моста, удерживая нативные ссылки в контексте JavaScript. Кроме того, он позволяет нативному контексту React Native напрямую манипулировать объектами JavaScript.</p>
  <p id="67e8">Коммуникация событий пользовательского интерфейса новой архитектуры (также известная как <a href="https://github.com/react-native-community/discussions-and-proposals/issues/4" target="_blank">Fabric</a>) использует JSI. Новая архитектура также предлагает новую концепцию ленивой загрузки нативных модулей через TurboModules. TurboModules еще больше ускорит время запуска приложения.</p>
  <p id="2b66">Как видите, новая архитектура решает почти все проблемы производительности, с которыми в настоящее время сталкиваются приложения React Native. Реализация новой архитектуры React Native еще не выпущена, но она с открытым исходным кодом. Meta уже протестировала архитектуру со своими приложениями сделанными на React Native.</p>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="Rz2w" class="m_column">
      <img src="https://img2.teletype.in/files/9f/20/9f207d9c-87cb-493f-9a9d-b9959c3034e5.png" width="1078" />
      <figcaption><a href="https://twitter.com/joshuaisgross/status/1415099495285608453?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1415099495285608453%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fcdn.embedly.com%2Fwidgets%2Fmedia.html%3Ftype%3Dtext2Fhtmlkey%3Da19fcc184b9711e1b4764040d3dc5c07schema%3Dtwitterurl%3Dhttps3A%2F%2Ftwitter.com%2Fjoshuaisgross%2Fstatus%2F1415099495285608453image%3Dhttps3A%2F%2Fi.embed.ly%2F1%2Fimage3Furl3Dhttps253A252F252Fabs.twimg.com252Ferrors252Flogo46x38.png26key3Da19fcc184b9711e1b4764040d3dc5c07" target="_blank">Ссылка на пост</a></figcaption>
    </figure>
  </section>
  <hr />
  <h1 id="864e">Вывод: что лучше?</h1>
  <p id="ded5">Нет ничего под названием «Лучший кроссплатформенный фреймворк» — каждый фреймворк хорош в конкретных сценариях использования. Однако ранее многие разработчики согласились с тем, что Flutter является самым мощным кроссплатформенным фреймворком, когда-либо созданным из-за его производительности и гибкости. Я объяснил, почему Flutter лучше, чем React Native, <a href="https://betterprogramming.pub/5-reasons-why-flutter-is-better-than-react-native-cf2e9b077f66" target="_blank">в этой статье.</a></p>
  <p id="ea02">Новая архитектура будет приравниваться как к показателям React Native, так и к показателям Flutter. Наконец, мы можем рассмотреть React Native против Flutter как просто JavaScript/React против Dart/MaterialUI. Возможно, речь идет только об опыте разработчиков. Теперь мы можем игнорировать коэффициент сравнения производительности и сосредоточиться исключительно на том, что мы разрабатываем, чтобы выбрать лучшую структуру.</p>
  <p id="6f51">Другими словами, если вам нужен готовый UI, используйте Flutter. Если вам нужен собственный UI, используйте React Native. В противном случае, если вам нравится Dart, используйте Flutter, иначе используйте React Native.</p>
  <p id="6dfe">Спасибо, что прочитали.</p>
  <hr />
  <p id="oqji">Перевод статьи &quot;You Don’t Have to Compare Flutter and React Native Anymore&quot;, <a href="https://betterprogramming.pub/you-dont-have-to-compare-flutter-and-react-native-anymore-15ddc4c1342a" target="_blank">ссылка на оригинальный пост</a></p>
  <p id="meaw">Перевод выполнен для телеграм канала  <a href="https://t.me/react_native_info" target="_blank">ReactNative - info</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@react_native_info/fW5wQ211JHt</guid><link>https://teletype.in/@react_native_info/fW5wQ211JHt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info</link><comments>https://teletype.in/@react_native_info/fW5wQ211JHt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info#comments</comments><dc:creator>react_native_info</dc:creator><title>Зарплаты React Native разработчиков в 2022г</title><pubDate>Tue, 01 Feb 2022 08:57:31 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/8c/83/8c832e51-4d98-4673-a1c7-137419c52b6d.png"></media:content><description><![CDATA[<img src="https://img2.teletype.in/files/90/9d/909d3310-747b-4ea2-aa29-ecfb3fc00e44.png"></img>В опросе поучаствовало 50 разработчиков из 11 стран, всем огромное спасибо 🍀]]></description><content:encoded><![CDATA[
  <p id="FNCY">В опросе поучаствовало <strong>50</strong> разработчиков из <strong>11</strong> стран, всем огромное спасибо 🍀</p>
  <hr />
  <p id="Jsih">Минимальная зарплата для <strong>Junior</strong>: 100$ / месяц<em> (Индия)</em>;</p>
  <p id="PPPE">Максимальная зарплата для <strong>Junior</strong>: 1700$ / месяц <em>(Польша)</em></p>
  <p id="GSRH">Средняя зарплата для <strong>Junior</strong>: 900$ / месяц</p>
  <hr />
  <p id="FMER">Минимальная зарплата для <strong>Middle</strong>: 650$ / месяц <em>(Россия)</em></p>
  <p id="HXzF">Максимальная зарплата для <strong>Middle</strong>: 3900$ / месяц <em>(Россия)</em></p>
  <p id="8EYN">Средняя зарплата для <strong>Middle</strong>: 2300$ / месяц</p>
  <hr />
  <p id="S9Ui">Минимальная зарплата для <strong>Senior</strong>: 2000$ / месяц <em>(Russia)</em></p>
  <p id="fpJs">Максимальная зарплата для <strong>Senior</strong>: 12000$ / месяц <em>(USA)</em></p>
  <p id="UFws">Средняя зарплата для <strong>Senior</strong>: 5350$ / месяц</p>
  <hr />
  <blockquote id="79VH">Более подробные результаты можно найти в <a href="https://docs.google.com/spreadsheets/d/1bYx0uRYfLjcPP-RqOg9Iwq1oHmGVyGvAxifu-uqs-1w/edit?usp=sharing" target="_blank">Гугл таблице  (клик)</a></blockquote>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="mfQ2" class="m_column">
      <img src="https://img2.teletype.in/files/90/9d/909d3310-747b-4ea2-aa29-ecfb3fc00e44.png" width="1126" />
      <figcaption>таблица результатов</figcaption>
    </figure>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@react_native_info/terminal_comand</guid><link>https://teletype.in/@react_native_info/terminal_comand?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info</link><comments>https://teletype.in/@react_native_info/terminal_comand?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=react_native_info#comments</comments><dc:creator>react_native_info</dc:creator><title>Сборник полезных терминальных команд для разработки react-native приложения</title><pubDate>Tue, 07 Dec 2021 05:12:25 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/bd/e0/bde0f720-a1d5-4ed1-999e-0dcb9733de9a.jpeg"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/cf/a9/cfa9d639-3e25-460c-9ede-e8a75545d431.jpeg"></img>
iOS:
react-native run-ios --device --scheme release]]></description><content:encoded><![CDATA[
  <figure id="9IFN" class="m_original">
    <img src="https://img1.teletype.in/files/cf/a9/cfa9d639-3e25-460c-9ede-e8a75545d431.jpeg" width="640" />
  </figure>
  <h3 id="uS0w">Собрать релизную сборку на реальный девайс</h3>
  <p id="mcPe"><br /><strong>iOS:<br /></strong><code>react-native run-ios --device --scheme release</code></p>
  <p id="AlxM"><strong>Android:<br /></strong><code>react-native run-android device --variant=release</code><br /></p>
  <h3 id="nfVJ"><br />Отладка андроид приложения по WiFi через ADB</h3>
  <pre id="SwOT">adb tcpip 5555  
adb reverse tcp:8081 tcp:8081</pre>
  <h3 id="yTiP"><strong>Узнать MD5 SHA1 SHA256 подписи для apk</strong></h3>
  <p id="Hsfd">В директории android выполнить, где <strong>key0</strong> алиас ключа:</p>
  <pre id="c7Hq">keytool -list -v -keystore C:\absolute_path_to\keystore.jks -alias key0</pre>
  <h3 id="PDi4"><strong>Скрипт для автоматической очистки и сборки android проекта</strong></h3>
  <p id="ewPz">cd ./android &amp; gradlew.bat clean &amp; cd .. &amp; react-native run-android</p>
  <h3 id="v8CC"><strong>Генерация JS бандла</strong></h3>
  <p id="5SLw"><strong>iOS:</strong></p>
  <pre id="cAnw">react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios</pre>
  <p id="DZ1z"><strong>Android:  </strong></p>
  <pre id="BhBK">react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle</pre>
  <h3 id="tGhA">Как узнать кто занял порт дебагера или metro bundler (MacOS/Linux)</h3>
  <pre id="vtmp">sudo lsof -i :8081 // покажет список процессов
kill -9 &lt;PID&gt; // убивает ненужный процесс по PID</pre>
  <section style="background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <blockquote id="4WR1">Со временем список будет пополнятся </blockquote>
  </section>

]]></content:encoded></item></channel></rss>