<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aroldo Goulart</title>
    <description>The latest articles on DEV Community by Aroldo Goulart (@ogoul4rt).</description>
    <link>https://dev.to/ogoul4rt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3211584%2F23d34c4a-67b0-4aae-a3a1-4a532a8dda51.jpeg</url>
      <title>DEV Community: Aroldo Goulart</title>
      <link>https://dev.to/ogoul4rt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ogoul4rt"/>
    <language>en</language>
    <item>
      <title>React Native 0.80 Official: It's Out! What Really Changed?</title>
      <dc:creator>Aroldo Goulart</dc:creator>
      <pubDate>Thu, 12 Jun 2025 22:58:09 +0000</pubDate>
      <link>https://dev.to/ogoul4rt/react-native-080-official-its-out-what-really-changed-7l7</link>
      <guid>https://dev.to/ogoul4rt/react-native-080-official-its-out-what-really-changed-7l7</guid>
      <description>&lt;h4&gt;
  
  
  TL;DR 📌
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;React 19.1.0 update introduces native radial gradients, faster iOS builds, smaller Android APKs, frozen legacy architecture, deprecation warnings for deep imports, opt-in strict TypeScript API, official JSC support ending, and breaking changes with Kotlin 2.1.20, Java-to-Kotlin conversions, and ESLint updates.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hey there, dev folks! 👋 The official React Native 0.80 version is finally out! After following the RCs, we now have the stable version with all confirmed features. Let's see what actually made it in, what changed since the RCs, and what you need to know before updating your projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Major Confirmed Features! 🚀
&lt;/h2&gt;

&lt;h3&gt;
  
  
  React 19.1.0 Has Arrived!
&lt;/h3&gt;

&lt;p&gt;The final RN 0.80 version comes with fresh React 19.1.0 (&lt;a href="https://github.com/facebook/react-native/commit/0e11e6a28bf3a12e30b5c6a7e93f3a5653888375" rel="noopener noreferrer"&gt;0e11e6a28b&lt;/a&gt;)! This brings improvements like "owner stacks" to help identify which component caused a specific error (although there's a known bug if you use the &lt;code&gt;@babel/plugin-transform-function-name&lt;/code&gt; plugin).&lt;/p&gt;

&lt;h3&gt;
  
  
  No More Deep Imports! 🚫
&lt;/h3&gt;

&lt;p&gt;Those deep imports like &lt;code&gt;import {Alert} from 'react-native/Libraries/Alert/Alert'&lt;/code&gt; are now officially deprecated (&lt;a href="https://github.com/facebook/react-native/commit/319ba0afd2f694bc70a20250f0b8c79a06a36dc6" rel="noopener noreferrer"&gt;319ba0afd2&lt;/a&gt;, &lt;a href="https://github.com/facebook/react-native/commit/9fc2a9b9e660c330d665d987ff68c62a52bc6f65" rel="noopener noreferrer"&gt;9fc2a9b9e6&lt;/a&gt;). ESLint and the JS console will warn you when you do this (&lt;a href="https://github.com/facebook/react-native/commit/87809d9326f7463e30bbf78edca0ef2a2fa139d9" rel="noopener noreferrer"&gt;87809d9326&lt;/a&gt;). The idea is that in the future you'll only use direct imports from the root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before - deep import&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;Alert&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-native/Libraries/Alert/Alert&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Now - root import&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;Alert&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-native&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some APIs aren't available at the root and will actually disappear. This is intentional to reduce the surface area of the React Native API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Strict TypeScript API (Optional) 🧐
&lt;/h3&gt;

&lt;p&gt;There's a new option for more precise and safer TypeScript types (&lt;a href="https://github.com/facebook/react-native/commit/6ea24f7bb90829f0806210252dfce50ecee5666d" rel="noopener noreferrer"&gt;6ea24f7bb9&lt;/a&gt;)! These types are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated directly from the source code (more accurate)&lt;/li&gt;
&lt;li&gt;Restricted to React Native's index file (better defining the public API)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's opt-in for now, so you can migrate when you're ready. If you use standard APIs, you probably won't need to change anything.&lt;/p&gt;

&lt;h3&gt;
  
  
  Legacy Architecture Officially Frozen ❄️
&lt;/h3&gt;

&lt;p&gt;The New Architecture has been the default since version 0.76, and now the Legacy Architecture is officially frozen. This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No new bugfixes or features in the Legacy Architecture&lt;/li&gt;
&lt;li&gt;No testing on the Legacy Architecture during the development of new versions&lt;/li&gt;
&lt;li&gt;Warnings in DevTools for APIs that won't work in the New Architecture (&lt;a href="https://github.com/facebook/react-native/commit/706b6e878d7d503ed870d6635ae1f963a34e8ccd" rel="noopener noreferrer"&gt;706b6e878d&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can still choose to use the Legacy Architecture, but it will be removed in the future.&lt;/p&gt;

&lt;h3&gt;
  
  
  iOS Prebuilt Dependencies (Experimental) ⚡
&lt;/h3&gt;

&lt;p&gt;Tired of waiting for the first iOS build? Now there's an experimental option to use prebuilt dependencies that reduce initial build time by ~12%! To use it, just:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;RCT_USE_RN_DEP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 bundle &lt;span class="nb"&gt;exec &lt;/span&gt;pod &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or add to your Podfile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'RCT_USE_RN_DEP'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'1'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Slimmer Android APKs 📦
&lt;/h3&gt;

&lt;p&gt;Thanks to Interprocedural Optimization (IPO) enabled for React Native (&lt;a href="https://github.com/facebook/react-native/commit/f107c28d2fe03bd10eada503aecf23fa966be9c5" rel="noopener noreferrer"&gt;f107c28d2f&lt;/a&gt;) and Hermes (&lt;a href="https://github.com/facebook/react-native/commit/2da062f9d19196c338191cbc85c2e893a82f4107" rel="noopener noreferrer"&gt;2da062f9d1&lt;/a&gt;), Android APKs are ~1MB smaller! And you don't need to do anything besides updating to version 0.80.&lt;/p&gt;

&lt;h3&gt;
  
  
  New App Screen Redesign 🎨
&lt;/h3&gt;

&lt;p&gt;The template's initial screen has been moved to its own package (&lt;a href="https://github.com/facebook/react-native/commit/3cf01020071c76f40499878674cc7aaf5dbe168a" rel="noopener noreferrer"&gt;3cf0102007&lt;/a&gt;) and got a new look. This reduces initial boilerplate and improves the experience on larger screens.&lt;/p&gt;

&lt;h3&gt;
  
  
  Last Version with Official JSC Support ⚠️
&lt;/h3&gt;

&lt;p&gt;This is the last version of React Native with official JavaScriptCore support. In the future, support will be provided via the community package &lt;code&gt;@react-native-community/javascriptcore&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changed Since the RCs? 🔄
&lt;/h2&gt;

&lt;h3&gt;
  
  
  "exports" Field in package.json
&lt;/h3&gt;

&lt;p&gt;The "exports" field was added to react-native's package.json to prepare for the stable JavaScript API. For now, it still exposes all subpaths by default, but this may affect how modules are resolved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Metro, platform-specific extensions won't be automatically expanded&lt;/li&gt;
&lt;li&gt;In Jest, the ability to mock deep imports may be altered&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kotlin 2.1.20
&lt;/h3&gt;

&lt;p&gt;The Kotlin version was updated to 2.1.20, bringing new preview language features that you can start using in your modules/components.&lt;/p&gt;

&lt;h3&gt;
  
  
  More Internal Classes and Kotlin Migrations
&lt;/h3&gt;

&lt;p&gt;Several classes were marked as internal in Android, including &lt;code&gt;StateWrapperImpl&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/9f941c50c970e35ac6fcfa11848d1f7f5a0a9323" rel="noopener noreferrer"&gt;9f941c50c9&lt;/a&gt;), &lt;code&gt;ChoreographerCompat&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/f8b2956437c23dd63463becc704b569bd8fcb19e" rel="noopener noreferrer"&gt;f8b2956437&lt;/a&gt;), and &lt;code&gt;ModuleDataCleaner&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/6fa1864d52fc47c37aeb5e0f99d972dee92f6ede" rel="noopener noreferrer"&gt;6fa1864d52&lt;/a&gt;). Additionally, more classes were migrated from Java to Kotlin, including the entire &lt;code&gt;com.facebook.react.devsupport&lt;/code&gt; package (&lt;a href="https://github.com/facebook/react-native/commit/9da485b54c2deec324775f59cb36080baee9d4c9" rel="noopener noreferrer"&gt;9da485b54c&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking Changes You Need to Know 💥
&lt;/h2&gt;

&lt;h3&gt;
  
  
  JavaScript
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;ESLint Plugin React Hooks updated from v4.6.0 to v5.2.0 (&lt;a href="https://github.com/facebook/react-native/commit/4de592756bb39d4fc99698c96d2f69dea46d82e1" rel="noopener noreferrer"&gt;4de592756b&lt;/a&gt;), which may generate new lint errors&lt;/li&gt;
&lt;li&gt;Component names can no longer start with &lt;code&gt;_&lt;/code&gt; (underscore)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Android
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;StandardCharsets&lt;/code&gt; was removed (&lt;a href="https://github.com/facebook/react-native/commit/40b38d0a44c7c83d36e34c9689ec3a2ac5d85b6b" rel="noopener noreferrer"&gt;40b38d0a44&lt;/a&gt;) (use &lt;code&gt;java.nio.charset.StandardCharsets&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Classes like &lt;code&gt;ReactEditText&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/cac27d15bef39e1a4bf7e3279e85a7bae4ee3a9c" rel="noopener noreferrer"&gt;cac27d15be&lt;/a&gt;), &lt;code&gt;NetworkModule&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/8726e263486d07d71e0cd80eba5a4c52705fdb14" rel="noopener noreferrer"&gt;8726e26348&lt;/a&gt;), &lt;code&gt;ReactTextInputManager&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/ab47834eb1910b4da1c594843cf1ab5dc02d23c1" rel="noopener noreferrer"&gt;ab47834eb1&lt;/a&gt;) were converted to Kotlin&lt;/li&gt;
&lt;li&gt;Several classes were marked as internal and should not be accessed directly&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  iOS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;RCTFloorPixelValue&lt;/code&gt; was removed from &lt;code&gt;RCTUtils.h&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/dc97df10a2f243855b3c5c9135d01cbc0c543d87" rel="noopener noreferrer"&gt;dc97df10a2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;BridgeModuleBatchDidComplete&lt;/code&gt; configuration helpers were deleted (&lt;a href="https://github.com/facebook/react-native/commit/cbad8aafa541546c82e8079f6ef1a54ce8df83b3" rel="noopener noreferrer"&gt;cbad8aafa5&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Extra Confirmed Features 🌟
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Radial Gradients
&lt;/h3&gt;

&lt;p&gt;We finally have native support for radial gradients (&lt;a href="https://github.com/facebook/react-native/commit/1b45dc8033e1064b2485c8b855a05634e2c1163f" rel="noopener noreferrer"&gt;1b45dc8033&lt;/a&gt;, &lt;a href="https://github.com/facebook/react-native/commit/a2409941c20f63d0339e2f2b1c9a2e942d29ca2e" rel="noopener noreferrer"&gt;a2409941c2&lt;/a&gt;, &lt;a href="https://github.com/facebook/react-native/commit/d7533dce1cdb4c0bc70deeab68f53752d13becf2" rel="noopener noreferrer"&gt;d7533dce1c&lt;/a&gt;)!&lt;/p&gt;

&lt;h3&gt;
  
  
  More CSS Colors
&lt;/h3&gt;

&lt;p&gt;Support for &lt;code&gt;hwb()&lt;/code&gt; notation (&lt;a href="https://github.com/facebook/react-native/commit/692b05e77d42c9b3ef6dfcbb31f6a11ba0f1e5a3" rel="noopener noreferrer"&gt;692b05e77d&lt;/a&gt;) and alpha in &lt;code&gt;rgb()&lt;/code&gt; like &lt;code&gt;rgb(R G B / A)&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/7441127040f6da52f04b3bccc37894e51d09c6b2" rel="noopener noreferrer"&gt;7441127040&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Native URLSearchParams
&lt;/h3&gt;

&lt;p&gt;Native implementation of &lt;code&gt;URLSearchParams&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/af1f1e4fe5cb6514d2e806fe0ad5b505e86c0f4b" rel="noopener noreferrer"&gt;af1f1e4fe5&lt;/a&gt;) to handle query strings without needing extra libs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved Accessibility
&lt;/h3&gt;

&lt;p&gt;New &lt;code&gt;accessibilityOrder&lt;/code&gt; prop for Android and iOS (&lt;a href="https://github.com/facebook/react-native/commit/8cf4d5b531647375b202130bd2d3b8b2f6dce8e3" rel="noopener noreferrer"&gt;8cf4d5b531&lt;/a&gt;), plus &lt;code&gt;screenReaderFocusable&lt;/code&gt; for Android (&lt;a href="https://github.com/facebook/react-native/commit/4ce093154d8fe130fca1f8da57067a666171db7f" rel="noopener noreferrer"&gt;4ce093154d&lt;/a&gt;) and &lt;code&gt;accessibilityRespondsToUserInteraction&lt;/code&gt; for iOS (&lt;a href="https://github.com/facebook/react-native/commit/fd8a3456cac72634cc149904e157e07257dbf364" rel="noopener noreferrer"&gt;fd8a3456ca&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Pressable with onPressMove
&lt;/h3&gt;

&lt;p&gt;Now the &lt;code&gt;Pressable&lt;/code&gt; component exposes the &lt;code&gt;onPressMove&lt;/code&gt; prop (&lt;a href="https://github.com/facebook/react-native/commit/6df938c72eb9b71ad626462127164fbb6cd4947c" rel="noopener noreferrer"&gt;6df938c72e&lt;/a&gt;) for more control during touch interactions.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Update? 🛠️
&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://react-native-community.github.io/upgrade-helper/" rel="noopener noreferrer"&gt;React Native Upgrade Helper&lt;/a&gt; to see code changes between versions and follow the official upgrade documentation.&lt;/p&gt;

&lt;p&gt;If you use Expo, React Native 0.80 will be supported in a canary version of the Expo SDK.&lt;/p&gt;

&lt;h2&gt;
  
  
  In Summary... 🎯
&lt;/h2&gt;

&lt;p&gt;React Native 0.80 brings React 19.1, stabilizes the JavaScript API, officially freezes the Legacy Architecture, reduces Android APK size and iOS build time. It's a version focused on stability, performance, and preparation for the future without the Legacy Architecture.&lt;/p&gt;

&lt;p&gt;Now it's time to update your projects and enjoy all these improvements! Happy coding! 🚀&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Stay Tuned! 👀&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This review was updated for the final 0.80 version, based on the &lt;a href="https://reactnative.dev/blog/2025/06/12/react-native-0.80" rel="noopener noreferrer"&gt;official release post&lt;/a&gt; and the complete changelog.&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>React Native 0.80 Oficial: Saiu! O Que Mudou de Verdade?</title>
      <dc:creator>Aroldo Goulart</dc:creator>
      <pubDate>Thu, 12 Jun 2025 22:48:04 +0000</pubDate>
      <link>https://dev.to/ogoul4rt/react-native-080-oficial-saiu-o-que-mudou-de-verdade-fj7</link>
      <guid>https://dev.to/ogoul4rt/react-native-080-oficial-saiu-o-que-mudou-de-verdade-fj7</guid>
      <description>&lt;h4&gt;
  
  
  TL;DR 📌
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Atualização React 19.1.0 traz suporte a gradientes radiais, builds iOS mais rápidos, APKs Android menores, fim da arquitetura legada, novos avisos para deep imports, TypeScript estrito opt-in, descontinuação oficial do JSC, mudanças críticas com Kotlin 2.1.20 e ESLint, além de dependências iOS pré-compiladas.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E aí, galera dev! 👋 Finalmente saiu a versão oficial do React Native 0.80! Depois de acompanharmos os RCs, agora temos a versão estável com todas as novidades confirmadas. Vamos ver o que realmente entrou, o que mudou desde os RCs e o que você precisa saber antes de atualizar seus projetos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Grandes Novidades Confirmadas! 🚀
&lt;/h2&gt;

&lt;h3&gt;
  
  
  React 19.1.0 Chegou!
&lt;/h3&gt;

&lt;p&gt;A versão final do RN 0.80 vem com o React 19.1.0 fresquinho (&lt;a href="https://github.com/facebook/react-native/commit/0e11e6a28bf3a12e30b5c6a7e93f3a5653888375" rel="noopener noreferrer"&gt;0e11e6a28b&lt;/a&gt;)! Isso traz melhorias como "owner stacks" para ajudar a identificar qual componente causou um erro específico (embora tenha um bug conhecido se você usar o plugin &lt;code&gt;@babel/plugin-transform-function-name&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Chega de Deep Imports! 🚫
&lt;/h3&gt;

&lt;p&gt;Aqueles imports profundos tipo &lt;code&gt;import {Alert} from 'react-native/Libraries/Alert/Alert'&lt;/code&gt; agora estão oficialmente deprecados (&lt;a href="https://github.com/facebook/react-native/commit/319ba0afd2f694bc70a20250f0b8c79a06a36dc6" rel="noopener noreferrer"&gt;319ba0afd2&lt;/a&gt;, &lt;a href="https://github.com/facebook/react-native/commit/9fc2a9b9e660c330d665d987ff68c62a52bc6f65" rel="noopener noreferrer"&gt;9fc2a9b9e6&lt;/a&gt;). O ESLint e o console JS vão te avisar quando você fizer isso (&lt;a href="https://github.com/facebook/react-native/commit/87809d9326f7463e30bbf78edca0ef2a2fa139d9" rel="noopener noreferrer"&gt;87809d9326&lt;/a&gt;). A ideia é que no futuro você só use imports diretos da raiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Antes - import profundo&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;Alert&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-native/Libraries/Alert/Alert&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Agora - import da raiz&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;Alert&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-native&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Algumas APIs não estão disponíveis na raiz e vão sumir mesmo. Isso é intencional pra reduzir a superfície da API do React Native.&lt;/p&gt;

&lt;h3&gt;
  
  
  API TypeScript Estrita (Opcional) 🧐
&lt;/h3&gt;

&lt;p&gt;Tem uma nova opção de tipos TypeScript mais precisos e seguros (&lt;a href="https://github.com/facebook/react-native/commit/6ea24f7bb90829f0806210252dfce50ecee5666d" rel="noopener noreferrer"&gt;6ea24f7bb9&lt;/a&gt;)! Esses tipos são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gerados diretamente do código-fonte (mais precisos)&lt;/li&gt;
&lt;li&gt;Restritos ao arquivo index do React Native (definindo melhor a API pública)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É opt-in por enquanto, então você pode migrar quando estiver pronto. Se você usa APIs padrão, provavelmente nem vai precisar mudar nada.&lt;/p&gt;

&lt;h3&gt;
  
  
  Arquitetura Legacy Oficialmente Congelada ❄️
&lt;/h3&gt;

&lt;p&gt;A New Architecture é o padrão desde a versão 0.76, e agora a Legacy Architecture está oficialmente congelada. Isso significa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sem novos bugfixes ou features na Legacy Architecture&lt;/li&gt;
&lt;li&gt;Sem testes na Legacy Architecture durante o desenvolvimento de novas versões&lt;/li&gt;
&lt;li&gt;Avisos no DevTools para APIs que não funcionarão na New Architecture (&lt;a href="https://github.com/facebook/react-native/commit/706b6e878d7d503ed870d6635ae1f963a34e8ccd" rel="noopener noreferrer"&gt;706b6e878d&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você ainda pode optar por usar a Legacy Architecture, mas ela será removida no futuro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dependências iOS Pré-compiladas (Experimental) ⚡
&lt;/h3&gt;

&lt;p&gt;Cansado de esperar o primeiro build iOS? Agora tem uma opção experimental para usar dependências pré-compiladas que reduzem o tempo de build inicial em ~12%! Para usar, basta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;RCT_USE_RN_DEP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 bundle &lt;span class="nb"&gt;exec &lt;/span&gt;pod &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou adicionar no seu Podfile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'RCT_USE_RN_DEP'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'1'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  APKs Android Mais Enxutos 📦
&lt;/h3&gt;

&lt;p&gt;Graças à Otimização Interprocedural (IPO) habilitada para React Native (&lt;a href="https://github.com/facebook/react-native/commit/f107c28d2fe03bd10eada503aecf23fa966be9c5" rel="noopener noreferrer"&gt;f107c28d2f&lt;/a&gt;) e Hermes (&lt;a href="https://github.com/facebook/react-native/commit/2da062f9d19196c338191cbc85c2e893a82f4107" rel="noopener noreferrer"&gt;2da062f9d1&lt;/a&gt;), os APKs Android ficaram ~1MB menores! E você não precisa fazer nada além de atualizar para a versão 0.80.&lt;/p&gt;

&lt;h3&gt;
  
  
  Redesign da New App Screen 🎨
&lt;/h3&gt;

&lt;p&gt;A tela inicial do template foi movida para seu próprio pacote (&lt;a href="https://github.com/facebook/react-native/commit/3cf01020071c76f40499878674cc7aaf5dbe168a" rel="noopener noreferrer"&gt;3cf0102007&lt;/a&gt;) e ganhou um visual novo. Isso reduz o boilerplate inicial e melhora a experiência em telas maiores.&lt;/p&gt;

&lt;h3&gt;
  
  
  Última Versão com Suporte Oficial ao JSC ⚠️
&lt;/h3&gt;

&lt;p&gt;Esta é a última versão do React Native com suporte oficial ao JavaScriptCore. No futuro, o suporte será oferecido via pacote comunitário &lt;code&gt;@react-native-community/javascriptcore&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  O Que Mudou Desde os RCs? 🔄
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Campo "exports" no package.json
&lt;/h3&gt;

&lt;p&gt;Foi adicionado o campo "exports" no package.json do react-native para preparar a API JavaScript estável. Por enquanto, ele ainda expõe todos os subpaths por padrão, mas isso pode afetar como os módulos são resolvidos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No Metro, extensões específicas de plataforma não serão expandidas automaticamente&lt;/li&gt;
&lt;li&gt;No Jest, a capacidade de mockar imports profundos pode ser alterada&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kotlin 2.1.20
&lt;/h3&gt;

&lt;p&gt;A versão do Kotlin foi atualizada para 2.1.20, trazendo novos recursos de linguagem em preview que você pode começar a usar nos seus módulos/componentes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mais Classes Internas e Migrações para Kotlin
&lt;/h3&gt;

&lt;p&gt;Várias classes foram marcadas como internas no Android, incluindo &lt;code&gt;StateWrapperImpl&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/9f941c50c970e35ac6fcfa11848d1f7f5a0a9323" rel="noopener noreferrer"&gt;9f941c50c9&lt;/a&gt;), &lt;code&gt;ChoreographerCompat&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/f8b2956437c23dd63463becc704b569bd8fcb19e" rel="noopener noreferrer"&gt;f8b2956437&lt;/a&gt;) e &lt;code&gt;ModuleDataCleaner&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/6fa1864d52fc47c37aeb5e0f99d972dee92f6ede" rel="noopener noreferrer"&gt;6fa1864d52&lt;/a&gt;). Além disso, mais classes foram migradas de Java para Kotlin, incluindo todo o pacote &lt;code&gt;com.facebook.react.devsupport&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/9da485b54c2deec324775f59cb36080baee9d4c9" rel="noopener noreferrer"&gt;9da485b54c&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking Changes que Você Precisa Saber 💥
&lt;/h2&gt;

&lt;h3&gt;
  
  
  JavaScript
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;ESLint Plugin React Hooks atualizado de v4.6.0 para v5.2.0 (&lt;a href="https://github.com/facebook/react-native/commit/4de592756bb39d4fc99698c96d2f69dea46d82e1" rel="noopener noreferrer"&gt;4de592756b&lt;/a&gt;), podendo gerar novos erros de lint&lt;/li&gt;
&lt;li&gt;Nomes de componentes não podem mais começar com &lt;code&gt;_&lt;/code&gt; (underline)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Android
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;StandardCharsets&lt;/code&gt; foi removida (&lt;a href="https://github.com/facebook/react-native/commit/40b38d0a44c7c83d36e34c9689ec3a2ac5d85b6b" rel="noopener noreferrer"&gt;40b38d0a44&lt;/a&gt;) (use &lt;code&gt;java.nio.charset.StandardCharsets&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Classes como &lt;code&gt;ReactEditText&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/cac27d15bef39e1a4bf7e3279e85a7bae4ee3a9c" rel="noopener noreferrer"&gt;cac27d15be&lt;/a&gt;), &lt;code&gt;NetworkModule&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/8726e263486d07d71e0cd80eba5a4c52705fdb14" rel="noopener noreferrer"&gt;8726e26348&lt;/a&gt;), &lt;code&gt;ReactTextInputManager&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/ab47834eb1910b4da1c594843cf1ab5dc02d23c1" rel="noopener noreferrer"&gt;ab47834eb1&lt;/a&gt;) foram convertidas para Kotlin&lt;/li&gt;
&lt;li&gt;Várias classes foram marcadas como internas e não devem ser acessadas diretamente&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  iOS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;RCTFloorPixelValue&lt;/code&gt; foi removido de &lt;code&gt;RCTUtils.h&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/dc97df10a2f243855b3c5c9135d01cbc0c543d87" rel="noopener noreferrer"&gt;dc97df10a2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Helpers de configuração &lt;code&gt;BridgeModuleBatchDidComplete&lt;/code&gt; foram deletados (&lt;a href="https://github.com/facebook/react-native/commit/cbad8aafa541546c82e8079f6ef1a54ce8df83b3" rel="noopener noreferrer"&gt;cbad8aafa5&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Novidades Extras Confirmadas 🌟
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Gradientes Radiais
&lt;/h3&gt;

&lt;p&gt;Finalmente temos suporte nativo a gradientes radiais (&lt;a href="https://github.com/facebook/react-native/commit/1b45dc8033e1064b2485c8b855a05634e2c1163f" rel="noopener noreferrer"&gt;1b45dc8033&lt;/a&gt;, &lt;a href="https://github.com/facebook/react-native/commit/a2409941c20f63d0339e2f2b1c9a2e942d29ca2e" rel="noopener noreferrer"&gt;a2409941c2&lt;/a&gt;, &lt;a href="https://github.com/facebook/react-native/commit/d7533dce1cdb4c0bc70deeab68f53752d13becf2" rel="noopener noreferrer"&gt;d7533dce1c&lt;/a&gt;)!&lt;/p&gt;

&lt;h3&gt;
  
  
  Mais Cores no CSS
&lt;/h3&gt;

&lt;p&gt;Suporte para notação &lt;code&gt;hwb()&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/692b05e77d42c9b3ef6dfcbb31f6a11ba0f1e5a3" rel="noopener noreferrer"&gt;692b05e77d&lt;/a&gt;) e alpha no &lt;code&gt;rgb()&lt;/code&gt; tipo &lt;code&gt;rgb(R G B / A)&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/7441127040f6da52f04b3bccc37894e51d09c6b2" rel="noopener noreferrer"&gt;7441127040&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  URLSearchParams Nativo
&lt;/h3&gt;

&lt;p&gt;Implementação nativa de &lt;code&gt;URLSearchParams&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/af1f1e4fe5cb6514d2e806fe0ad5b505e86c0f4b" rel="noopener noreferrer"&gt;af1f1e4fe5&lt;/a&gt;) para manipular query strings sem precisar de libs extras.&lt;/p&gt;

&lt;h3&gt;
  
  
  Acessibilidade Melhorada
&lt;/h3&gt;

&lt;p&gt;Nova prop &lt;code&gt;accessibilityOrder&lt;/code&gt; para Android e iOS (&lt;a href="https://github.com/facebook/react-native/commit/8cf4d5b531647375b202130bd2d3b8b2f6dce8e3" rel="noopener noreferrer"&gt;8cf4d5b531&lt;/a&gt;), além de &lt;code&gt;screenReaderFocusable&lt;/code&gt; para Android (&lt;a href="https://github.com/facebook/react-native/commit/4ce093154d8fe130fca1f8da57067a666171db7f" rel="noopener noreferrer"&gt;4ce093154d&lt;/a&gt;) e &lt;code&gt;accessibilityRespondsToUserInteraction&lt;/code&gt; para iOS (&lt;a href="https://github.com/facebook/react-native/commit/fd8a3456cac72634cc149904e157e07257dbf364" rel="noopener noreferrer"&gt;fd8a3456ca&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Pressable com onPressMove
&lt;/h3&gt;

&lt;p&gt;Agora o componente &lt;code&gt;Pressable&lt;/code&gt; expõe a prop &lt;code&gt;onPressMove&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/6df938c72eb9b71ad626462127164fbb6cd4947c" rel="noopener noreferrer"&gt;6df938c72e&lt;/a&gt;) para mais controle durante interações de toque.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como Atualizar? 🛠️
&lt;/h2&gt;

&lt;p&gt;Use o &lt;a href="https://react-native-community.github.io/upgrade-helper/" rel="noopener noreferrer"&gt;React Native Upgrade Helper&lt;/a&gt; para ver as mudanças de código entre versões e siga a documentação oficial de upgrade.&lt;/p&gt;

&lt;p&gt;Se você usa Expo, o React Native 0.80 será suportado em uma versão canary do Expo SDK.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resumindo... 🎯
&lt;/h2&gt;

&lt;p&gt;O React Native 0.80 traz o React 19.1, estabiliza a API JavaScript, congela oficialmente a Legacy Architecture, reduz o tamanho dos APKs Android e o tempo de build iOS. É uma versão focada em estabilidade, performance e preparação para o futuro sem a Legacy Architecture.&lt;/p&gt;

&lt;p&gt;Agora é hora de atualizar seus projetos e aproveitar todas essas melhorias! Bom código! 🚀&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>React Native v0.80.0-rc in Focus: Key Changes You Should Know About</title>
      <dc:creator>Aroldo Goulart</dc:creator>
      <pubDate>Thu, 29 May 2025 20:38:03 +0000</pubDate>
      <link>https://dev.to/ogoul4rt/react-native-v0800-rc-in-focus-key-changes-you-should-know-about-3b93</link>
      <guid>https://dev.to/ogoul4rt/react-native-v0800-rc-in-focus-key-changes-you-should-know-about-3b93</guid>
      <description>&lt;h2&gt;
  
  
  Hey Devs! 👋
&lt;/h2&gt;

&lt;p&gt;React Native 0.80 is knocking on our doors with its Release Candidate (RC) versions.&lt;br&gt;
Let’s dive into what’s new, what’s been fixed, and what might need some extra love in your projects.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Now with commit links for the curious minds! 😉&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Heads-Up! 🚨 (Breaking Changes)
&lt;/h2&gt;

&lt;p&gt;There are always those changes that can break things. Keep an eye on the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Revamped Welcome Screen:&lt;/strong&gt; The default &lt;code&gt;NewAppScreen&lt;/code&gt; has been redesigned and moved to &lt;code&gt;react-native/new-app-screen&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/3cf01020071c76f40499878674cc7aaf5dbe168a" rel="noopener noreferrer"&gt;3cf0102007&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stricter Imports:&lt;/strong&gt; With the introduction of &lt;code&gt;"exports"&lt;/code&gt; in &lt;code&gt;package.json&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/319ba0afd2f694bc70a20250f0b8c79a06a36dc6" rel="noopener noreferrer"&gt;319ba0afd2&lt;/a&gt;, &lt;a href="https://github.com/facebook/react-native/commit/9fc2a9b9e660c330d665d987ff68c62a52bc6f65" rel="noopener noreferrer"&gt;9fc2a9b9e6&lt;/a&gt;), importing from internal folders (e.g., &lt;code&gt;react-native/Libraries/...&lt;/code&gt;) may no longer work. Stick to official paths! Direct imports from &lt;code&gt;react-native/virtualized-lists&lt;/code&gt; are now blocked (&lt;a href="https://github.com/facebook/react-native/commit/be8393c41b3d613385a2ee4632438030e80d6b2d" rel="noopener noreferrer"&gt;be8393c41b&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component Naming:&lt;/strong&gt; New ESLint rule (via &lt;code&gt;eslint-plugin-react-hooks&lt;/code&gt; v5.2.0): component names can no longer start with &lt;code&gt;_&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/4de592756bb39d4fc99698c96d2f69dea46d82e1" rel="noopener noreferrer"&gt;4de592756b&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Android Devs:&lt;/strong&gt; Lots of modules are now Kotlin! 🤖 If you extended classes like &lt;code&gt;ReactEditText&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/cac27d15bef39e1a4bf7e3279e85a7bae4ee3a9c" rel="noopener noreferrer"&gt;cac27d15be&lt;/a&gt;), &lt;code&gt;NetworkModule&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/8726e263486d07d71e0cd80eba5a4c52705fdb14" rel="noopener noreferrer"&gt;8726e26348&lt;/a&gt;), &lt;code&gt;ReactTextInputManager&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/ab47834eb1910b4da1c594843cf1ab5dc02d23c1" rel="noopener noreferrer"&gt;ab47834eb1&lt;/a&gt;), &lt;code&gt;DevSupportManagerBase&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/9da485b54c2deec324775f59cb36080baee9d4c9" rel="noopener noreferrer"&gt;9da485b54c&lt;/a&gt;), or &lt;code&gt;ReactInstanceDevHelper&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/09492075e827f96d9ce9a5d689ac7d0a44380a33" rel="noopener noreferrer"&gt;09492075e8&lt;/a&gt;), you may need to adjust method signatures. Classes like &lt;code&gt;ModuleDataCleaner&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/6fa1864d52fc47c37aeb5e0f99d972dee92f6ede" rel="noopener noreferrer"&gt;6fa1864d52&lt;/a&gt;) and &lt;code&gt;DeviceInfoModule&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/f02607badb5641ab235f41be8005ce62d2bd63d4" rel="noopener noreferrer"&gt;f02607badb&lt;/a&gt;) are now internal. &lt;code&gt;ChoreographerCompat&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/f8b2956437c23dd63463becc704b569bd8fcb19e" rel="noopener noreferrer"&gt;f8b2956437&lt;/a&gt;) and &lt;code&gt;StandardCharsets&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/40b38d0a44c7c83d36e34c9689ec3a2ac5d85b6b" rel="noopener noreferrer"&gt;40b38d0a44&lt;/a&gt;) have been deleted. The &lt;code&gt;loadSplitBundleFromServer&lt;/code&gt; function was removed from the &lt;code&gt;DevSupportManager&lt;/code&gt; interface (&lt;a href="https://github.com/facebook/react-native/commit/86cd31eb6bb72de0791a62b39b64a155c791f034" rel="noopener noreferrer"&gt;86cd31eb6b&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iOS Devs:&lt;/strong&gt; Configuration helpers like &lt;code&gt;BridgeModuleBatchDidComplete&lt;/code&gt; were deleted (&lt;a href="https://github.com/facebook/react-native/commit/cbad8aafa541546c82e8079f6ef1a54ce8df83b3" rel="noopener noreferrer"&gt;cbad8aafa5&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  New Toys! 🎁 (Features)
&lt;/h2&gt;

&lt;p&gt;New stuff is always exciting!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stricter TypeScript (Optional):&lt;/strong&gt; Introducing &lt;code&gt;react-native-strict-api&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/6ea24f7bb90829f0806210252dfce50ecee5666d" rel="noopener noreferrer"&gt;6ea24f7bb9&lt;/a&gt;). Opt-in for enhanced checks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved &lt;code&gt;&amp;lt;Image&amp;gt;&lt;/code&gt; Support:&lt;/strong&gt; &lt;code&gt;crossOrigin&lt;/code&gt; and &lt;code&gt;referralPolicy&lt;/code&gt; headers now supported via &lt;code&gt;source.uri&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/49ea9d80b883b50d242908bb47881b2680302291" rel="noopener noreferrer"&gt;49ea9d80b8&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Radial Gradients:&lt;/strong&gt; Finally! ✨ (&lt;a href="https://github.com/facebook/react-native/commit/1b45dc8033e1064b2485c8b855a05634e2c1163f" rel="noopener noreferrer"&gt;1b45dc8033&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extended CSS Color Support:&lt;/strong&gt; Includes &lt;code&gt;hwb()&lt;/code&gt; notation (&lt;a href="https://github.com/facebook/react-native/commit/692b05e77d42c9b3ef6dfcbb31f6a11ba0f1e5a3" rel="noopener noreferrer"&gt;692b05e77d&lt;/a&gt;) and &lt;code&gt;rgb(R G B / A)&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/7441127040f6da52f04b3bccc37894e51d09c6b2" rel="noopener noreferrer"&gt;7441127040&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy Architecture Warning:&lt;/strong&gt; A warning is shown if the app runs on the old architecture (&lt;a href="https://github.com/facebook/react-native/commit/706b6e878d7d503ed870d6635ae1f963a34e8ccd" rel="noopener noreferrer"&gt;706b6e878d&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ESLint Rule &lt;code&gt;no-deep-imports&lt;/code&gt;:&lt;/strong&gt; Helps prevent unsafe internal imports (&lt;a href="https://github.com/facebook/react-native/commit/87809d9326f7463e30bbf78edca0ef2a2fa139d9" rel="noopener noreferrer"&gt;87809d9326&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native &lt;code&gt;URLSearchParams&lt;/code&gt;:&lt;/strong&gt; Core-level query string parsing (&lt;a href="https://github.com/facebook/react-native/commit/af1f1e4fe5cb6514d2e806fe0ad5b505e86c0f4b" rel="noopener noreferrer"&gt;af1f1e4fe5&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Accessibility:&lt;/strong&gt; New &lt;code&gt;accessibilityOrder&lt;/code&gt; prop for Android and iOS (&lt;a href="https://github.com/facebook/react-native/commit/8cf4d5b531647375b202130bd2d3b8b2f6dce8e3" rel="noopener noreferrer"&gt;8cf4d5b531&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New &lt;code&gt;onPressMove&lt;/code&gt; on &lt;code&gt;Pressable&lt;/code&gt;:&lt;/strong&gt; More gesture control (&lt;a href="https://github.com/facebook/react-native/commit/6df938c72eb9b71ad626462127164fbb6cd4947c" rel="noopener noreferrer"&gt;6df938c72e&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EventEmitter APIs:&lt;/strong&gt; &lt;code&gt;addListener&lt;/code&gt; and &lt;code&gt;removeListener&lt;/code&gt; now exposed (&lt;a href="https://github.com/facebook/react-native/commit/ff4537c15ecef319ff3dfc87613e4696d280c643" rel="noopener noreferrer"&gt;ff4537c15e&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;compact&lt;/code&gt; Option in Babel Preset:&lt;/strong&gt; Can now disable whitespace removal (&lt;a href="https://github.com/facebook/react-native/commit/86911003dc396afd3e2016b7435d56c2269c33ff" rel="noopener noreferrer"&gt;86911003dc&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codegen Utilities Exposed:&lt;/strong&gt; Codegen functions and types moved to the package root (&lt;a href="https://github.com/facebook/react-native/commit/c7aa3f3fe722731fa7383385bce541eac860feca" rel="noopener noreferrer"&gt;c7aa3f3fe7&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Android-Specific:&lt;/strong&gt; New prop &lt;code&gt;screenReaderFocusable&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/4ce093154d8fe130fca1f8da57067a666171db7f" rel="noopener noreferrer"&gt;4ce093154d&lt;/a&gt;), legacy component warning with &lt;code&gt;YogaMeasureFunction.measure()&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/9345c88a619f36537e25cf28b79d2c01cd40f780" rel="noopener noreferrer"&gt;9345c88a61&lt;/a&gt;), new prop to filter drag-and-drop in TextInputs (&lt;a href="https://github.com/facebook/react-native/commit/d10dd7130c17987483314491005817534771491e" rel="noopener noreferrer"&gt;d10dd7130c&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iOS-Specific:&lt;/strong&gt; New accessibility props: &lt;code&gt;accessibilityLabelledBy&lt;/code&gt;, &lt;code&gt;accessibilityDescribedBy&lt;/code&gt;, &lt;code&gt;accessibilityHint&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/5b5cf0e1995b11336ed029a7afc8eba1f02ac9d1" rel="noopener noreferrer"&gt;5b5cf0e199&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bug Cleanup! 🧹 (Fixes)
&lt;/h2&gt;

&lt;p&gt;Bugs? Not today. Here are some key fixes (for commit details, see the original changelog):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;General:&lt;/strong&gt; Timers (&lt;code&gt;setTimeout&lt;/code&gt;, etc.) now align more closely with web standards. Improved TypeScript typings, generic support for &lt;code&gt;VirtualizeSectionList&lt;/code&gt;, controlled state for &lt;code&gt;Switch&lt;/code&gt;, better &lt;code&gt;ListEmptyComponent&lt;/code&gt; rendering, font scaling, and &lt;code&gt;outline-offset&lt;/code&gt; handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Android:&lt;/strong&gt; Focused fixes for &lt;code&gt;TextInput&lt;/code&gt; (focus, rendering, keyboard nav, double-selection), layout issues (RTL borders, clipping, keyboard navigation), crashes (parent state, event emitters), &lt;code&gt;null&lt;/code&gt; safety, &lt;code&gt;content://&lt;/code&gt; URI fetch, keyboard focus.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iOS:&lt;/strong&gt; View additions via interop layer, multiline text measurement, &lt;code&gt;ScrollView&lt;/code&gt; interactions (&lt;code&gt;betterHitTest&lt;/code&gt;), crashes in &lt;code&gt;RCTPullToRefreshViewComponentView&lt;/code&gt;, inline views with truncated text under New Architecture.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Farewell... 👋 (Deprecations &amp;amp; Removals)
&lt;/h2&gt;

&lt;p&gt;Some items are on their way out:&lt;/p&gt;

&lt;h3&gt;
  
  
  Android:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ReactContextBaseJavaModule.getCurrentActivity()&lt;/code&gt; is &lt;em&gt;deprecated&lt;/em&gt; (&lt;a href="https://github.com/facebook/react-native/commit/1408c69fd8c5327bd3390fce8ed41e20299a5bfa" rel="noopener noreferrer"&gt;1408c69fd8&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;UIManagerType.DEFAULT&lt;/code&gt; is &lt;em&gt;deprecated&lt;/em&gt; (use &lt;code&gt;LEGACY&lt;/code&gt;) (&lt;a href="https://github.com/facebook/react-native/commit/a8668319ad203cb3dc78f725f5544da6048d5b4e" rel="noopener noreferrer"&gt;a8668319ad&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ResourceDrawableIdHelper.instance&lt;/code&gt; has been removed (&lt;a href="https://github.com/facebook/react-native/commit/8de401c62520fc0ef83e820b62e15714dc793b45" rel="noopener noreferrer"&gt;8de401c625&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;The constructor &lt;code&gt;EventBeatManager(ReactApplicationContext)&lt;/code&gt; has been removed (&lt;a href="https://github.com/facebook/react-native/commit/c97af95a7ffe2267f6d13f68c607fefac12d639b" rel="noopener noreferrer"&gt;c97af95a7f&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FabricSoLoader&lt;/code&gt; is no longer part of the public API (&lt;a href="https://github.com/facebook/react-native/commit/902f82656edc6c092e074759a47dc46aad53a63e" rel="noopener noreferrer"&gt;902f82656e&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(un)registerEventEmitter&lt;/code&gt; has been removed from the &lt;code&gt;EventDispatcher&lt;/code&gt; interface (&lt;a href="https://github.com/facebook/react-native/commit/d1c0f57073a083b787af6c78d662506c760acf4e" rel="noopener noreferrer"&gt;d1c0f57073&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;TouchesHelper&lt;/code&gt; is no longer part of the public API (&lt;a href="https://github.com/facebook/react-native/commit/2196597e2b602acdaecdfe04a6fb9046cb042f85" rel="noopener noreferrer"&gt;2196597e2b&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  iOS:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;loadImageForURL&lt;/code&gt; is &lt;em&gt;deprecated&lt;/em&gt; (use the new signature with &lt;code&gt;completionHandlerWithMetadata&lt;/code&gt;) (&lt;a href="https://github.com/facebook/react-native/commit/43c9a609deb1b769c51751d61904a5d80f0bd05a" rel="noopener noreferrer"&gt;43c9a609de&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;RCT_NEW_ARCH_ENABLED&lt;/code&gt; and &lt;code&gt;RCTSetNewArchEnabled&lt;/code&gt; are &lt;em&gt;deprecated&lt;/em&gt; (&lt;a href="https://github.com/facebook/react-native/commit/6dd721b258ba775de945d9df25f8a9eca4c509b1" rel="noopener noreferrer"&gt;6dd721b258&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;RCTComputeScreenScale&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/094876367f2821edce16331f5a30f9edb303dbe9" rel="noopener noreferrer"&gt;094876367f&lt;/a&gt;) and &lt;code&gt;RCTFloorPixelValue&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/dc97df10a2f243855b3c5c9135d01cbc0c543d87" rel="noopener noreferrer"&gt;dc97df10a2&lt;/a&gt;) have been removed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Under the Hood ⚙️ (Other Changes)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Android:&lt;/strong&gt; Gradle updated to version 8.14.1 (&lt;a href="https://github.com/facebook/react-native/commit/827a6851d0a61c048fec7a73ca3b293ef90ad2ae" rel="noopener noreferrer"&gt;827a6851d0&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Debugger frontend updated (&lt;a href="https://github.com/facebook/react-native/commit/647af1c4ca219515ab00b442370b61346ba1edb1" rel="noopener noreferrer"&gt;647af1c4ca&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  In a Nutshell 🎶
&lt;/h2&gt;

&lt;p&gt;That’s it! React Native 0.80.0-rc brings a bunch of refinements, continues the Kotlin migration on Android, introduces cool new features (hello, radial gradients!), and fixes several bugs. If you’re interested in diving deeper, the commit links are there for you to explore!&lt;/p&gt;

&lt;p&gt;Keep a close eye on the breaking changes, especially if you have custom native code or rely on internal imports. Now it’s time to test and prepare your apps. Happy coding, everyone! 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay Tuned! 👀
&lt;/h2&gt;

&lt;p&gt;This review covers everything up to version v0.80.0-rc.3.&lt;br&gt;
As new RC versions are released, I’ll update this post so we can all stay up to date with the latest changes—sound good?&lt;/p&gt;

&lt;p&gt;And just a quick behind-the-scenes note: I used a bit of AI help to initially filter and organize the massive changelog. Then, of course, came the human touch—to refine, simplify the language, and make sure everything makes sense for our day-to-day development. 😉&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>reactnative</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>React Native v0.80.0-rc em Foco: O Que Mudou e Vale a Pena Saber</title>
      <dc:creator>Aroldo Goulart</dc:creator>
      <pubDate>Thu, 29 May 2025 20:24:43 +0000</pubDate>
      <link>https://dev.to/ogoul4rt/react-native-v0800-rc-em-foco-o-que-mudou-e-vale-a-pena-saber-b7n</link>
      <guid>https://dev.to/ogoul4rt/react-native-v0800-rc-em-foco-o-que-mudou-e-vale-a-pena-saber-b7n</guid>
      <description>&lt;p&gt;E aí, galera dev! 👋 &lt;br&gt;
O React Native 0.80 tá batendo na porta com suas versões Release Candidate (RC). &lt;br&gt;
Bora dar uma olhada no que tem de novo, o que foi consertado e o que pode precisar de um carinho extra nos seus projetos? &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Agora com os commits pra quem gosta de fuçar! 😉&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Atenção Aqui! 🚨 (Breaking Changes)
&lt;/h2&gt;

&lt;p&gt;Sempre tem aquelas mudanças que podem quebrar alguma coisa, né? Fica de olho nessas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Tela de Boas-Vindas Renovada:&lt;/strong&gt; A &lt;code&gt;NewAppScreen&lt;/code&gt; (aquela tela padrão) foi redesenhada e movida para &lt;code&gt;react-native/new-app-screen&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/3cf01020071c76f40499878674cc7aaf5dbe168a" rel="noopener noreferrer"&gt;3cf0102007&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Imports Mais Restritos:&lt;/strong&gt; Com a introdução do &lt;code&gt;"exports"&lt;/code&gt; no &lt;code&gt;package.json&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/319ba0afd2f694bc70a20250f0b8c79a06a36dc6" rel="noopener noreferrer"&gt;319ba0afd2&lt;/a&gt;, &lt;a href="https://github.com/facebook/react-native/commit/9fc2a9b9e660c330d665d987ff68c62a52bc6f65" rel="noopener noreferrer"&gt;9fc2a9b9e6&lt;/a&gt;), imports de pastas internas (tipo &lt;code&gt;react-native/Libraries/...&lt;/code&gt;) podem dar ruim. Use os caminhos oficiais! Importar direto de &lt;code&gt;react-native/virtualized-lists&lt;/code&gt; também não rola mais (&lt;a href="https://github.com/facebook/react-native/commit/be8393c41b3d613385a2ee4632438030e80d6b2d" rel="noopener noreferrer"&gt;be8393c41b&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Nomes de Componentes:&lt;/strong&gt; Regra nova do ESLint (via &lt;code&gt;eslint-plugin-react-hooks&lt;/code&gt; v5.2.0): nomes de componentes não podem mais começar com &lt;code&gt;_&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/4de592756bb39d4fc99698c96d2f69dea46d82e1" rel="noopener noreferrer"&gt;4de592756b&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Para a Galera do Android:&lt;/strong&gt; Muita coisa virou Kotlin! 🤖 Se você estendia classes como &lt;code&gt;ReactEditText&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/cac27d15bef39e1a4bf7e3279e85a7bae4ee3a9c" rel="noopener noreferrer"&gt;cac27d15be&lt;/a&gt;), &lt;code&gt;NetworkModule&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/8726e263486d07d71e0cd80eba5a4c52705fdb14" rel="noopener noreferrer"&gt;8726e26348&lt;/a&gt;), &lt;code&gt;ReactTextInputManager&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/ab47834eb1910b4da1c594843cf1ab5dc02d23c1" rel="noopener noreferrer"&gt;ab47834eb1&lt;/a&gt;), &lt;code&gt;DevSupportManagerBase&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/9da485b54c2deec324775f59cb36080baee9d4c9" rel="noopener noreferrer"&gt;9da485b54c&lt;/a&gt;), ou &lt;code&gt;ReactInstanceDevHelper&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/09492075e827f96d9ce9a5d689ac7d0a44380a33" rel="noopener noreferrer"&gt;09492075e8&lt;/a&gt;), pode precisar ajustar assinaturas. Classes como &lt;code&gt;ModuleDataCleaner&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/6fa1864d52fc47c37aeb5e0f99d972dee92f6ede" rel="noopener noreferrer"&gt;6fa1864d52&lt;/a&gt;) e &lt;code&gt;DeviceInfoModule&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/f02607badb5641ab235f41be8005ce62d2bd63d4" rel="noopener noreferrer"&gt;f02607badb&lt;/a&gt;) ficaram internas. &lt;code&gt;ChoreographerCompat&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/f8b2956437c23dd63463becc704b569bd8fcb19e" rel="noopener noreferrer"&gt;f8b2956437&lt;/a&gt;) e &lt;code&gt;StandardCharsets&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/40b38d0a44c7c83d36e34c9689ec3a2ac5d85b6b" rel="noopener noreferrer"&gt;40b38d0a44&lt;/a&gt;) foram deletadas. A função &lt;code&gt;loadSplitBundleFromServer&lt;/code&gt; foi removida da interface &lt;code&gt;DevSupportManager&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/86cd31eb6bb72de0791a62b39b64a155c791f034" rel="noopener noreferrer"&gt;86cd31eb6b&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Para a Galera do iOS:&lt;/strong&gt; Helpers de configuração &lt;code&gt;BridgeModuleBatchDidComplete&lt;/code&gt; foram deletados (&lt;a href="https://github.com/facebook/react-native/commit/cbad8aafa541546c82e8079f6ef1a54ce8df83b3" rel="noopener noreferrer"&gt;cbad8aafa5&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Brinquedos Novos na Caixa! 🎁 (Novidades)
&lt;/h2&gt;

&lt;p&gt;Sempre bom ter coisa nova pra brincar, né?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;TypeScript Mais Rigoroso (Opcional):&lt;/strong&gt; Chegou o &lt;code&gt;react-native-strict-api&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/6ea24f7bb90829f0806210252dfce50ecee5666d" rel="noopener noreferrer"&gt;6ea24f7bb9&lt;/a&gt;). Ative para mais checagens!&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;code&gt;&amp;lt;Image&amp;gt;&lt;/code&gt; Mais Flexível:&lt;/strong&gt; Suporte a headers &lt;code&gt;crossOrigin&lt;/code&gt; e &lt;code&gt;referralPolicy&lt;/code&gt; direto na &lt;code&gt;source.uri&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/49ea9d80b883b50d242908bb47881b2680302291" rel="noopener noreferrer"&gt;49ea9d80b8&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Gradientes Radiais:&lt;/strong&gt; Finalmente! ✨ (&lt;a href="https://github.com/facebook/react-native/commit/1b45dc8033e1064b2485c8b855a05634e2c1163f" rel="noopener noreferrer"&gt;1b45dc8033&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Mais Cores no CSS:&lt;/strong&gt; Suporte pra notação &lt;code&gt;hwb()&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/692b05e77d42c9b3ef6dfcbb31f6a11ba0f1e5a3" rel="noopener noreferrer"&gt;692b05e77d&lt;/a&gt;) e alpha no &lt;code&gt;rgb()&lt;/code&gt; tipo &lt;code&gt;rgb(R G B / A)&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/7441127040f6da52f04b3bccc37894e51d09c6b2" rel="noopener noreferrer"&gt;7441127040&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Alerta da Arquitetura Antiga:&lt;/strong&gt; Aviso se o app roda na arquitetura antiga (&lt;a href="https://github.com/facebook/react-native/commit/706b6e878d7d503ed870d6635ae1f963a34e8ccd" rel="noopener noreferrer"&gt;706b6e878d&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Regra ESLint &lt;code&gt;no-deep-imports&lt;/code&gt;:&lt;/strong&gt; Ajuda a evitar imports de caminhos internos (&lt;a href="https://github.com/facebook/react-native/commit/87809d9326f7463e30bbf78edca0ef2a2fa139d9" rel="noopener noreferrer"&gt;87809d9326&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;code&gt;URLSearchParams&lt;/code&gt; Nativo:&lt;/strong&gt; Manipulação de query string direto no core (&lt;a href="https://github.com/facebook/react-native/commit/af1f1e4fe5cb6514d2e806fe0ad5b505e86c0f4b" rel="noopener noreferrer"&gt;af1f1e4fe5&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Acessibilidade Melhor:&lt;/strong&gt; Nova prop &lt;code&gt;accessibilityOrder&lt;/code&gt; pra Android e iOS (&lt;a href="https://github.com/facebook/react-native/commit/8cf4d5b531647375b202130bd2d3b8b2f6dce8e3" rel="noopener noreferrer"&gt;8cf4d5b531&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;code&gt;Pressable&lt;/code&gt; com &lt;code&gt;onPressMove&lt;/code&gt;:&lt;/strong&gt; Mais controle no toque (&lt;a href="https://github.com/facebook/react-native/commit/6df938c72eb9b71ad626462127164fbb6cd4947c" rel="noopener noreferrer"&gt;6df938c72e&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;APIs do EventEmitter:&lt;/strong&gt; Métodos &lt;code&gt;addListener&lt;/code&gt; e &lt;code&gt;removeListener&lt;/code&gt; expostos (&lt;a href="https://github.com/facebook/react-native/commit/ff4537c15ecef319ff3dfc87613e4696d280c643" rel="noopener noreferrer"&gt;ff4537c15e&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Opção &lt;code&gt;compact&lt;/code&gt; no Babel Preset:&lt;/strong&gt; Permite desabilitar remoção de espaços em branco (&lt;a href="https://github.com/facebook/react-native/commit/86911003dc396afd3e2016b7435d56c2269c33ff" rel="noopener noreferrer"&gt;86911003dc&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Utilitários Codegen Exportados:&lt;/strong&gt; Funções e tipos do Codegen agora na raiz do pacote (&lt;a href="https://github.com/facebook/react-native/commit/c7aa3f3fe722731fa7383385bce541eac860feca" rel="noopener noreferrer"&gt;c7aa3f3fe7&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Específico Android:&lt;/strong&gt; Prop &lt;code&gt;screenReaderFocusable&lt;/code&gt; exposta (&lt;a href="https://github.com/facebook/react-native/commit/4ce093154d8fe130fca1f8da57067a666171db7f" rel="noopener noreferrer"&gt;4ce093154d&lt;/a&gt;), aviso para componentes legados com &lt;code&gt;YogaMeasureFunction.measure()&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/9345c88a619f36537e25cf28b79d2c01cd40f780" rel="noopener noreferrer"&gt;9345c88a61&lt;/a&gt;), prop para filtrar drag-and-drop em TextInputs (&lt;a href="https://github.com/facebook/react-native/commit/d10dd7130c17987483314491005817534771491e" rel="noopener noreferrer"&gt;d10dd7130c&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Específico iOS:&lt;/strong&gt; Props de acessibilidade &lt;code&gt;accessibilityLabelledBy&lt;/code&gt;, &lt;code&gt;accessibilityDescribedBy&lt;/code&gt;, &lt;code&gt;accessibilityHint&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/5b5cf0e1995b11336ed029a7afc8eba1f02ac9d1" rel="noopener noreferrer"&gt;5b5cf0e199&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Faxina nos Bugs! 🧹 (Correções)
&lt;/h2&gt;

&lt;p&gt;Ninguém gosta de bug, né? A equipe do RN mandou ver nas correções (aqui não vou listar commits pra não poluir muito, mas o changelog original tem tudo!):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Geral:&lt;/strong&gt; Timers (&lt;code&gt;setTimeout&lt;/code&gt;, etc.) mais alinhados com a web. Referências de tipos globais no TypeScript. Genéricos em &lt;code&gt;VirtualizeSectionList&lt;/code&gt; e tipos em &lt;code&gt;VirtualizedList&lt;/code&gt;. Estado controlado do &lt;code&gt;Switch&lt;/code&gt;. Layout com &lt;code&gt;ListEmptyComponent&lt;/code&gt;. Atualização de texto ao mudar a escala da fonte. Tratamento de outline com &lt;code&gt;outline-offset&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Android:&lt;/strong&gt; Muita atenção aos &lt;code&gt;TextInput&lt;/code&gt;! Foco em versões antigas, renderização de bordas (uniformes e translúcidas), navegação pelo teclado, seleção dupla com &lt;code&gt;dataDetectorType&lt;/code&gt;. Layout (bordas RTL, clipping com &lt;code&gt;removeClippedSubviews&lt;/code&gt;, navegação com teclado em listas). Crashes (estado do pai não encontrado, event emitters em arm32). Segurança contra nulos (null safety) em várias partes. Fetch de URIs &lt;code&gt;content://&lt;/code&gt;. Foco com teclado.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;iOS:&lt;/strong&gt; Adição de views filhas via interop layer. Medição de texto multiline. Interações com &lt;code&gt;ScrollView&lt;/code&gt; (&lt;code&gt;betterHitTest&lt;/code&gt;). Crash no &lt;code&gt;RCTPullToRefreshViewComponentView&lt;/code&gt;. Tratamento de views inline na New Arch com texto truncado.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hora do Adeus... 👋 (Deprecations e Remoções)
&lt;/h2&gt;

&lt;p&gt;Algumas coisas estão dando tchau ou se preparando pra isso:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Tipos &lt;code&gt;*EventData&lt;/code&gt; (Image, Switch, TextInput) estão &lt;em&gt;deprecated&lt;/em&gt;. Use &lt;code&gt;*Event&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/701859b397eddc0686fcdfe43e0244888168dc12" rel="noopener noreferrer"&gt;701859b397&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Android:&lt;/strong&gt; &lt;code&gt;ReactContextBaseJavaModule.getCurrentActivity()&lt;/code&gt; &lt;em&gt;deprecated&lt;/em&gt; (&lt;a href="https://github.com/facebook/react-native/commit/1408c69fd8c5327bd3390fce8ed41e20299a5bfa" rel="noopener noreferrer"&gt;1408c69fd8&lt;/a&gt;). &lt;code&gt;UIManagerType.DEFAULT&lt;/code&gt; &lt;em&gt;deprecated&lt;/em&gt; (use &lt;code&gt;LEGACY&lt;/code&gt;) (&lt;a href="https://github.com/facebook/react-native/commit/a8668319ad203cb3dc78f725f5544da6048d5b4e" rel="noopener noreferrer"&gt;a8668319ad&lt;/a&gt;). &lt;code&gt;ResourceDrawableIdHelper.instance&lt;/code&gt; removido (&lt;a href="https://github.com/facebook/react-native/commit/8de401c62520fc0ef83e820b62e15714dc793b45" rel="noopener noreferrer"&gt;8de401c625&lt;/a&gt;). Construtor &lt;code&gt;EventBeatManager(ReactApplicationContext)&lt;/code&gt; removido (&lt;a href="https://github.com/facebook/react-native/commit/c97af95a7ffe2267f6d13f68c607fefac12d639b" rel="noopener noreferrer"&gt;c97af95a7f&lt;/a&gt;). &lt;code&gt;FabricSoLoader&lt;/code&gt; removido da API pública (&lt;a href="https://github.com/facebook/react-native/commit/902f82656edc6c092e074759a47dc46aad53a63e" rel="noopener noreferrer"&gt;902f82656e&lt;/a&gt;). &lt;code&gt;(un)registerEventEmitter&lt;/code&gt; removido da interface &lt;code&gt;EventDispatcher&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/d1c0f57073a083b787af6c78d662506c760acf4e" rel="noopener noreferrer"&gt;d1c0f57073&lt;/a&gt;). &lt;code&gt;TouchesHelper&lt;/code&gt; não é mais API pública (&lt;a href="https://github.com/facebook/react-native/commit/2196597e2b602acdaecdfe04a6fb9046cb042f85" rel="noopener noreferrer"&gt;2196597e2b&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;iOS:&lt;/strong&gt; &lt;code&gt;loadImageForURL&lt;/code&gt; &lt;em&gt;deprecated&lt;/em&gt; (use nova assinatura com &lt;code&gt;completionHandlerWithMetadata&lt;/code&gt;) (&lt;a href="https://github.com/facebook/react-native/commit/43c9a609deb1b769c51751d61904a5d80f0bd05a" rel="noopener noreferrer"&gt;43c9a609de&lt;/a&gt;). &lt;code&gt;RCT_NEW_ARCH_ENABLED&lt;/code&gt; e &lt;code&gt;RCTSetNewArchEnabled&lt;/code&gt; &lt;em&gt;deprecated&lt;/em&gt; (&lt;a href="https://github.com/facebook/react-native/commit/6dd721b258ba775de945d9df25f8a9eca4c509b1" rel="noopener noreferrer"&gt;6dd721b258&lt;/a&gt;). &lt;code&gt;RCTComputeScreenScale&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/094876367f2821edce16331f5a30f9edb303dbe9" rel="noopener noreferrer"&gt;094876367f&lt;/a&gt;) e &lt;code&gt;RCTFloorPixelValue&lt;/code&gt; (&lt;a href="https://github.com/facebook/react-native/commit/dc97df10a2f243855b3c5c9135d01cbc0c543d87" rel="noopener noreferrer"&gt;dc97df10a2&lt;/a&gt;) removidos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Por Baixo dos Panos ⚙️ (Outras Mudanças)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Android:&lt;/strong&gt; Gradle atualizado pra 8.14.1 (&lt;a href="https://github.com/facebook/react-native/commit/827a6851d0a61c048fec7a73ca3b293ef90ad2ae" rel="noopener noreferrer"&gt;827a6851d0&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  Frontend do Debugger atualizado (&lt;a href="https://github.com/facebook/react-native/commit/647af1c4ca219515ab00b442370b61346ba1edb1" rel="noopener noreferrer"&gt;647af1c4ca&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resumindo a Ópera 🎶
&lt;/h2&gt;

&lt;p&gt;É isso! O React Native 0.80.0-rc traz um monte de refinamentos, continua a migração pra Kotlin no Android, adiciona funcionalidades legais (oi, gradientes radiais!) e corrige vários bugs. Os links dos commits estão aí pra quem quiser cavar mais fundo!&lt;/p&gt;

&lt;p&gt;Fica de olho principalmente nos &lt;em&gt;breaking changes&lt;/em&gt;, especialmente se você tem código nativo customizado ou dependia de imports internos. Agora é testar e preparar seus apps! Bom código pra todo mundo! 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fica Ligado! 👀&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Este review cobre o que rolou até a versão &lt;code&gt;v0.80.0-rc.3&lt;/code&gt;. &lt;br&gt;
Conforme novas versões RC forem saindo, vou atualizar este post pra gente ficar sempre por dentro das últimas novidades, beleza?&lt;/p&gt;

&lt;p&gt;Ah, e só pra contar os bastidores: pra montar este resumão, usei uma ajudinha da IA pra dar aquela primeira filtrada e organizada no changelog gigante. Depois, claro, veio o toque humano pra refinar, simplificar a linguagem e garantir que tudo fizesse sentido pro nosso dia a dia. 😉&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>react</category>
      <category>news</category>
      <category>programming</category>
    </item>
    <item>
      <title>Lynx vs React Native: A New Contender in the Cross-Platform Arena ?</title>
      <dc:creator>Aroldo Goulart</dc:creator>
      <pubDate>Tue, 27 May 2025 11:56:30 +0000</pubDate>
      <link>https://dev.to/ogoul4rt/lynx-vs-react-native-a-new-contender-in-the-cross-platform-arena--3jie</link>
      <guid>https://dev.to/ogoul4rt/lynx-vs-react-native-a-new-contender-in-the-cross-platform-arena--3jie</guid>
      <description>&lt;p&gt;As a mobile developer who has grappled with the internal quirks and structural limitations of React Native, I decided to take a deeper dive into Lynx to assess whether this emerging framework truly delivers on its promises. Let’s peel back the technical layers. 🕵️&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Architecture: The Core of Lynx&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Dual-Thread vs React Native’s Bridge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lynx introduces a dual-thread model that fundamentally separates business logic from rendering. While React Native continues to rely on the infamous (and occasionally problematic) JavaScript-to-native bridge, Lynx operates via:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UI Thread (PrimJS):&lt;/strong&gt; A dedicated JavaScript engine (a fork of QuickJS) optimized specifically for rendering tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background Thread:&lt;/strong&gt; Handles heavy processing, API requests, and state management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice, this separation mitigates the inter-thread communication bottlenecks that still challenge React Native, especially when dealing with complex lists or animation-heavy interfaces. PrimJS features an incremental garbage collector with pause times under 1ms, compared to Hermes’ 3–5ms. This seemingly small difference can be critical to achieving consistent 60 FPS performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;ReactLynx: A Reimagined React?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;@lynx-js/react&lt;/code&gt; package presents an intriguing proposition:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retains React 17+ API compatibility (hooks, context, etc.)&lt;/li&gt;
&lt;li&gt;Compiles down to Lynx engine instructions via SWC&lt;/li&gt;
&lt;li&gt;Enables &lt;strong&gt;Main Thread Scripting&lt;/strong&gt; for latency-sensitive tasks (e.g., gesture handling)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This design allows developers to leverage the React ecosystem (Zustand, TanStack Query) while benefiting from Lynx’s optimized runtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;However, a caveat:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Components that depend on React Native-specific APIs (e.g., &lt;code&gt;react-native-reanimated&lt;/code&gt;) would require reimplementation.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Performance: Metrics That Matter to UX&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Benchmarking on a Galaxy S23 Ultra with a 10,000-item list reveals:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Lynx&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;React Native&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Avg FPS&lt;/td&gt;
&lt;td&gt;59.8&lt;/td&gt;
&lt;td&gt;54.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frame Drops / 60 sec&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;87&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Touch Latency&lt;/td&gt;
&lt;td&gt;48ms&lt;/td&gt;
&lt;td&gt;112ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The key innovation lies in &lt;strong&gt;Instant First-Frame Rendering (IFR)&lt;/strong&gt;, a technique that momentarily blocks the main thread during initial rendering. Counterintuitive as it may sound, this eliminates the notorious blank screens on app startup.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Memory: The Battle for Megabytes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In lightweight applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lynx:&lt;/strong&gt; 28MB baseline vs &lt;strong&gt;React Native:&lt;/strong&gt; 45MB&lt;/li&gt;
&lt;li&gt;Under stress (10k products): &lt;strong&gt;Lynx:&lt;/strong&gt; 148MB vs &lt;strong&gt;RN:&lt;/strong&gt; 210MB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This efficiency stems from modular architecture and PrimJS enhancements, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stack caching in the interpreter&lt;/li&gt;
&lt;li&gt;Direct integration with Lynx’s object model&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Tooling: The Achilles’ Heel&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;lynx-devtool&lt;/strong&gt; is an Electron-based toolkit featuring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome DevTools-style element inspector&lt;/li&gt;
&lt;li&gt;Basic performance profiler&lt;/li&gt;
&lt;li&gt;CDP (Chrome DevTools Protocol) integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, it still lags behind React Native’s mature ecosystem (Flipper, Reactotron), lacking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redux/Jotai debugging&lt;/li&gt;
&lt;li&gt;Advanced network inspector&lt;/li&gt;
&lt;li&gt;Reliable hot reloading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On a positive note, &lt;strong&gt;rspeedy&lt;/strong&gt;—a Rust-based build tool—delivers rebuild times under 1 second, addressing a persistent pain point in large React Native projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Ecosystem: The Community Gap&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;While React Native boasts 3.5k+ packages on npm, Lynx currently offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;32 official packages under &lt;code&gt;@lynx-js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;14 public GitHub repositories&lt;/li&gt;
&lt;li&gt;Experimental Expo integration via custom dev client&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key gaps remain in native libraries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No direct replacement for &lt;code&gt;react-native-maps&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Push notifications require manual bridging&lt;/li&gt;
&lt;li&gt;Deep linking demands low-level configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Progressive Adoption Strategy&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The official documentation outlines three migration paths:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Embedding:&lt;/strong&gt; Introduce Lynx components into an existing native app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration Layer:&lt;/strong&gt; Gradually port components using &lt;code&gt;react-native-lynx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Greenfield:&lt;/strong&gt; Start fresh with ReactLynx + rspeedy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For React-proficient teams, the learning curve is manageable. Still, the lack of off-the-shelf solutions for authentication, analytics, or in-app purchases will necessitate custom development efforts.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion: Is the Risk Worth Taking?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;When to Consider Lynx:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications with complex UIs and high-frequency interactions&lt;/li&gt;
&lt;li&gt;Projects requiring cold starts under 500ms on low-end devices&lt;/li&gt;
&lt;li&gt;Teams willing and able to contribute to open source&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When to Stick with React Native:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Projects relying on a robust ecosystem (Firebase, Sentry, etc.)&lt;/li&gt;
&lt;li&gt;Apps needing frequent updates via CodePush&lt;/li&gt;
&lt;li&gt;Teams deeply embedded in RN workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lynx is not a “React Native killer,” but rather a natural evolution in the cross-platform paradigm. Just as React Native surpassed PhoneGap with its architectural innovation, Lynx is poised to define the next era of hybrid app development.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Curious to try it in a pilot project? 🧪🔬&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Interested in Lynx? Take a deeper look:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://medium.com/@dilsharahasanka/getting-started-with-lynx-a-next-gen-cross-platform-framework-15fe7a76e14d" rel="noopener noreferrer"&gt;https://medium.com/@dilsharahasanka/getting-started-with-lynx-a-next-gen-cross-platform-framework-15fe7a76e14d&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>react</category>
      <category>reactnative</category>
      <category>programming</category>
    </item>
    <item>
      <title>Lynx vs React Native: Uma Nova Alternativa no Mundo Cross-Platform?</title>
      <dc:creator>Aroldo Goulart</dc:creator>
      <pubDate>Mon, 26 May 2025 21:59:39 +0000</pubDate>
      <link>https://dev.to/ogoul4rt/lynx-vs-react-native-uma-nova-alternativa-no-mundo-cross-platform-383l</link>
      <guid>https://dev.to/ogoul4rt/lynx-vs-react-native-uma-nova-alternativa-no-mundo-cross-platform-383l</guid>
      <description>&lt;p&gt;Como desenvolvedor mobile que já enfrentou os desafios do React Native, passando por muito perrengue interno do framework, acabei indo indo um pouco afundo do Lynx para entender se essa nova ferramenta realmente entrega o que promete. Vamos desvendar cada camada técnica 🕵️  &lt;/p&gt;

&lt;h2&gt;
  
  
  Arquitetura: O Coração do Lynx
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dual-Thread vs Ponte do React Native
&lt;/h3&gt;

&lt;p&gt;O Lynx introduz um modelo de &lt;strong&gt;dual-thread&lt;/strong&gt; que separa radicalmente a lógica de negócios da renderização. Enquanto o React Native ainda depende da famosa (e às vezes problemática) ponte entre JavaScript e nativo, o Lynx opera com:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UI Thread (PrimJS):&lt;/strong&gt; Motor JavaScript otimizado (fork do QuickJS) dedicado exclusivamente a renderização
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background Thread:&lt;/strong&gt; Processamento pesado, chamadas de API e gerenciamento de estado&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Na prática, isso elimina os gargalos de comunicação entre threads que ainda assombram o RN, especialmente em listas complexas ou animações pesadas. O PrimJS traz um GC incremental com pausas de &amp;lt;1ms, versus 3-5ms do Hermes - diferença que pode ser crucial para manter 60 FPS.  &lt;/p&gt;

&lt;h3&gt;
  
  
  ReactLynx: React Reimaginado ?
&lt;/h3&gt;

&lt;p&gt;O pacote &lt;code&gt;@lynx-js/react&lt;/code&gt; é uma engenharia interessante:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mantém a API do React 17+ (hooks, context)
&lt;/li&gt;
&lt;li&gt;Compila para instruções do motor Lynx via SWC
&lt;/li&gt;
&lt;li&gt;Oferece &lt;strong&gt;Main Thread Scripting&lt;/strong&gt; para interações críticas (ex.: gesture handling)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso permite usar o ecossistema React (Zustand, TanStack Query) com a engine otimizada do Lynx. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;MAS CALMA LÁ&lt;br&gt;
Componentes que dependem de APIs específicas do RN (como &lt;code&gt;react-native-reanimated&lt;/code&gt;) precisariam ser reimplementados.  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Performance: Números que Impactam o UX Real
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Benchmarks Reveladores
&lt;/h3&gt;

&lt;p&gt;Os testes do Galaxy S23 Ultra com lista de 10k itens:  &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Métrica&lt;/th&gt;
&lt;th&gt;Lynx&lt;/th&gt;
&lt;th&gt;React Native&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FPS médio&lt;/td&gt;
&lt;td&gt;59.8&lt;/td&gt;
&lt;td&gt;54.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frame drops/60s&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;87&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latência toque&lt;/td&gt;
&lt;td&gt;48ms&lt;/td&gt;
&lt;td&gt;112ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;O segredo está no &lt;strong&gt;IFR (Instant First-Frame Rendering)&lt;/strong&gt;, técnica que bloqueia brevemente a main thread até completar a renderização inicial, algo contra-intuitivo, mas que elimina telas brancas no startup.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Memória: A Guerra dos MBs (raspando bit? amem?)
&lt;/h3&gt;

&lt;p&gt;Em apps simples:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lynx: 28MB baseline vs 45MB do RN&lt;/li&gt;
&lt;li&gt;Em cenário extremo (10k produtos): 148MB vs 210MB
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O ganho vem da arquitetura modular e do PrimJS, que reduz alocações temporárias através de:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stack caching no interpreter
&lt;/li&gt;
&lt;li&gt;Integração direta com o object model do Lynx
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ferramentas: O Calcanhar de Aquiles
&lt;/h2&gt;

&lt;h3&gt;
  
  
  DevTools em Evolução
&lt;/h3&gt;

&lt;p&gt;O &lt;code&gt;lynx-devtool&lt;/code&gt;é uma suite baseada em Electron com:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspetor de elementos estilo Chrome DevTools
&lt;/li&gt;
&lt;li&gt;Profile de performance básico
&lt;/li&gt;
&lt;li&gt;Integração com CDP (Chrome DevTools Protocol)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mas comparado ao ecossistema maduro do RN (Flipper, Reactotron), falta:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debugging de Redux/Jotai
&lt;/li&gt;
&lt;li&gt;Network inspector avançado
&lt;/li&gt;
&lt;li&gt;Hot reloading confiável
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A boa notícia: o &lt;code&gt;rspeedy&lt;/code&gt; (build tool Rust-based) entrega rebuilds em &amp;lt;1s, algo que ainda é dor no RN com grandes codebases.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Ecossistema: O Desafio da Comunidade
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ReactLynx vs React Native
&lt;/h3&gt;

&lt;p&gt;Enquanto o RN tem 3.5k+ libs no npm, o Lynx hoje oferece:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;32 pacotes oficiais na org @lynx-js
&lt;/li&gt;
&lt;li&gt;14 repositórios públicos no GitHub
&lt;/li&gt;
&lt;li&gt;Integração experimental com Expo via custom dev client
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O maior gap está em bibliotecas nativas:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Não há equivalente para &lt;code&gt;react-native-maps&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Push notifications precisam de bridge manual
&lt;/li&gt;
&lt;li&gt;Deep linking requer configuração low-level
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Estratégia de Adoção Progressiva
&lt;/h3&gt;

&lt;p&gt;A documentação sugere 3 caminhos:  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Embedding:&lt;/strong&gt; Adicionar componentes Lynx em app nativo existente
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration Layer:&lt;/strong&gt; Usar react-native-lynx para portar componentes gradualmente
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Greenfield:&lt;/strong&gt; Projeto novo com ReactLynx + rspeedy
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para times com expertise em React, a curva é suave. Mas a falta de soluções prontas para autenticação, analytics ou IAP exige investimento em desenvolvimento customizado.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão: Vale a Pena o Risco?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Quando Considerar Lynx
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Apps com UI complexa e interações de alta frequência
&lt;/li&gt;
&lt;li&gt;Projetos que exigem cold start &amp;lt;500ms em dispositivos low-end
&lt;/li&gt;
&lt;li&gt;Times com capacidade de contribuir para OSS
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quando Manter React Native
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Apps que dependem de ecossistema maduro (Firebase, Sentry, etc)
&lt;/li&gt;
&lt;li&gt;Projetos com atualizações frequentes via CodePush
&lt;/li&gt;
&lt;li&gt;Equipes com expertise consolidada em RN
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O Lynx não é um "RN killer", mas sim uma evolução natural do modelo cross-platform. &lt;br&gt;
Assim como o RN melhorou o PhoneGap, o Lynx traz inovações arquiteturais que podem definir o próximo ciclo de desenvolvimento híbrido.  &lt;/p&gt;

&lt;p&gt;E você, toparia experimentar em algum projeto piloto? 🧪🔬&lt;/p&gt;

&lt;p&gt;Gostou do Lynx? Vale conferir?&lt;br&gt;
&lt;a href="https://medium.com/@dilsharahasanka/getting-started-with-lynx-a-next-gen-cross-platform-framework-15fe7a76e14d" rel="noopener noreferrer"&gt;https://medium.com/@dilsharahasanka/getting-started-with-lynx-a-next-gen-cross-platform-framework-15fe7a76e14d&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>lynx</category>
    </item>
  </channel>
</rss>
