<?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: Caio Pratalli</title>
    <description>The latest articles on DEV Community by Caio Pratalli (@caiopratalli).</description>
    <link>https://dev.to/caiopratalli</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%2F2478380%2Ffab48ab0-4ea4-4b11-899d-bdd6de193754.jpg</url>
      <title>DEV Community: Caio Pratalli</title>
      <link>https://dev.to/caiopratalli</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/caiopratalli"/>
    <language>en</language>
    <item>
      <title>Guia Completo: Como Integrar WatermelonDB no React Native 0.76 com Expo 52 e TypeScript</title>
      <dc:creator>Caio Pratalli</dc:creator>
      <pubDate>Mon, 25 Nov 2024 00:44:42 +0000</pubDate>
      <link>https://dev.to/caiopratalli/guia-completo-como-integrar-watermelondb-no-react-native-076-com-expo-52-e-typescript-3k06</link>
      <guid>https://dev.to/caiopratalli/guia-completo-como-integrar-watermelondb-no-react-native-076-com-expo-52-e-typescript-3k06</guid>
      <description>&lt;p&gt;A nova arquitetura do React Native trouxe mudanças significativas, incluindo a remoção do Babel, que era essencial para integrar o WatermelonDB devido ao uso de decorators. Felizmente, o TypeScript agora pode resolver essa questão de forma eficiente.  &lt;/p&gt;

&lt;p&gt;Neste artigo, você aprenderá como configurar o WatermelonDB em um projeto React Native 0.76 com Expo 52, incluindo as etapas necessárias para lidar com as alterações recentes na arquitetura do react native e no autolinking do expo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pré-requisitos
&lt;/h2&gt;

&lt;p&gt;Antes de começar, certifique-se de ter um projeto React Native criado com Expo, utilizando as versões mais recentes do framework e suas dependências.  &lt;/p&gt;

&lt;p&gt;Se você estiver utilizando o &lt;strong&gt;Expo Go&lt;/strong&gt;, será necessário desativar a &lt;strong&gt;New Architecture&lt;/strong&gt; e realizar o &lt;strong&gt;prebuild&lt;/strong&gt; para acessar as pastas nativas (&lt;code&gt;android&lt;/code&gt; e &lt;code&gt;ios&lt;/code&gt;).  &lt;/p&gt;

&lt;h3&gt;
  
  
  1. Desativando a New Architecture
&lt;/h3&gt;

&lt;p&gt;No arquivo &lt;code&gt;app.json&lt;/code&gt;, remova a seguinte linha:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"newArchEnabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em seguida, execute o comando abaixo no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx expo prebuild
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Instalando o WatermelonDB
&lt;/h2&gt;

&lt;p&gt;Agora, instale a biblioteca WatermelonDB:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @nozbe/watermelondb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuração no iOS
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Acesse a pasta &lt;code&gt;ios&lt;/code&gt; do seu projeto e abra o arquivo &lt;code&gt;Podfile&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Adicione a seguinte dependência:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;pod&lt;/span&gt; &lt;span class="s1"&gt;'simdjson'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;path: &lt;/span&gt;&lt;span class="s1"&gt;'../node_modules/@nozbe/simdjson'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;modular_headers: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;No terminal, dentro da pasta &lt;code&gt;ios&lt;/code&gt;, execute:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pod &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pronto! Não há necessidade de instalar o &lt;code&gt;@babel/plugin-proposal-decorators&lt;/code&gt;, como sugerido na documentação oficial.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Configuração no Android
&lt;/h2&gt;

&lt;p&gt;Devido às mudanças no autolinking do Expo para Android, algumas configurações adicionais são necessárias:  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;No arquivo &lt;code&gt;package.json&lt;/code&gt;, altere o script &lt;code&gt;android&lt;/code&gt; para incluir a variável de ambiente &lt;code&gt;EXPO_USE_COMMUNITY_AUTOLINKING=1&lt;/code&gt;. Ele deve ficar assim:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"android"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"EXPO_USE_COMMUNITY_AUTOLINKING=1 expo run:android"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Instale a biblioteca &lt;code&gt;@react-native-community/cli&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @react-native-community/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Habilitando os Decorators no TypeScript
&lt;/h2&gt;

&lt;p&gt;Como alternativa ao plugin de decorators do Babel, usaremos o suporte nativo do TypeScript. No arquivo &lt;code&gt;tsconfig.json&lt;/code&gt;, adicione a opção &lt;code&gt;experimentalDecorators&lt;/code&gt; em &lt;code&gt;compilerOptions&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"compilerOptions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"experimentalDecorators"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Finalizando
&lt;/h2&gt;

&lt;p&gt;Após essas configurações, o WatermelonDB deve estar funcionando corretamente no seu projeto!  &lt;/p&gt;

&lt;p&gt;Com este guia, você pode aproveitar todos os benefícios do WatermelonDB sem se preocupar com problemas de compatibilidade com a nova arquitetura do React Native. 🚀  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/caiopratali/rn-new-arch-with-watermelon" rel="noopener noreferrer"&gt;Link do repositorio de exemplo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>expo</category>
      <category>offlinefirst</category>
      <category>watermelondb</category>
    </item>
  </channel>
</rss>
