<?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: João Vitor Minosso</title>
    <description>The latest articles on DEV Community by João Vitor Minosso (@kallarari).</description>
    <link>https://dev.to/kallarari</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%2F1076266%2F08b42206-21fd-4411-bdb7-1863ffe17e6c.jpeg</url>
      <title>DEV Community: João Vitor Minosso</title>
      <link>https://dev.to/kallarari</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kallarari"/>
    <language>en</language>
    <item>
      <title>Performance no front-end</title>
      <dc:creator>João Vitor Minosso</dc:creator>
      <pubDate>Thu, 26 Sep 2024 12:59:31 +0000</pubDate>
      <link>https://dev.to/kallarari/performance-no-front-end-5915</link>
      <guid>https://dev.to/kallarari/performance-no-front-end-5915</guid>
      <description>&lt;p&gt;Recentemente, identifiquei uma lacuna significativa em uma biblioteca extremamente popular para front-end em aplicações hashtag#React.&lt;/p&gt;

&lt;p&gt;Essa lacuna pode resultar em uma queda de desempenho de 100% a 500% na sua aplicação.&lt;/p&gt;

&lt;p&gt;Mas no que isso implica? Um baixo desempenho pode afetar tarefas intensivas ou que impactam diretamente o usuário, incluindo re-renderizações que são comprovadas através de ferramentas de profiling.&lt;br&gt;
Para corrigir e evitar esse problema no seu projeto, você deve analisar os resultados que obtive e considerar o tamanho da sua aplicação e suas metas de performance. Para isso, desenvolvi um projeto que mensura o impacto de duas bibliotecas de componentes e o hospedei na hashtag#Vercel. Nele, você pode observar o impacto em milissegundos de apenas 5 componentes na tela.&lt;/p&gt;

&lt;p&gt;Acesse pelo link: &lt;a href="https://lnkd.in/dPRJR6tt" rel="noopener noreferrer"&gt;https://lnkd.in/dPRJR6tt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após visualizar o projeto, você pode pensar: "O desempenho vai de 30ms para 120ms; ninguém percebe isso."&lt;br&gt;
Claro, com apenas 5 componentes, essa diferença pode passar despercebida. No entanto, considere uma tabela com 400 linhas ou uma tela que carrega componentes que utilizam useEffect para buscar e hidratar dados.&lt;br&gt;
Se uma tela já leva 3 segundos para carregar, agora pode levar 12. Isso significa que seu usuário pode desistir, especialmente se estiver acessando pelo celular.&lt;/p&gt;

&lt;p&gt;🤝 Deixe seu like para que este conteúdo chegue a mais pessoas e, se você já passou por essa situação, comente neste post para disseminar informações!&lt;/p&gt;

&lt;p&gt;Explicação Mais Técnica&lt;br&gt;
Implementei várias bibliotecas de estilo em diferentes tipos de aplicações, como Chakra UI, Tailwind, Material UI, Ant Design, entre outras. Contudo, nunca tinha encontrado uma biblioteca que tornasse o site tão lento quanto a do Ant Design, que leva cerca de 10 segundos para carregar uma página da documentação.&lt;br&gt;
Diante disso, decidi testar. Ao abrir o profiler, percebi que o site que estava desenvolvendo estava sofrendo com re-renderizações excessivas. O desempenho havia caído e, como estava começando a usar a biblioteca e havia pouca informação na tela, isso não era perceptível para mim, mas ferramentas de teste de desempenho como Lighthouse e o profiler mostraram claramente o problema.&lt;br&gt;
Verifiquei que duas bibliotecas diferentes estavam fazendo chamadas à API e recarregando a tela e seus componentes simultaneamente: Ant Design e Iconify. Ambas buscam e armazenam em cache os componentes na primeira carga da tela, ao contrário do Material UI e do código nativo (usando apenas HTML e CSS).&lt;br&gt;
Pesquisei sobre melhorias de desempenho nessas aplicações e, após um tempo, cheguei à conclusão: "Se houvesse uma maneira de melhorar, eles já teriam feito isso na documentação." Assim, decidimos usar menos essas duas bibliotecas para evitar gargalos no futuro!&lt;br&gt;
Se você quiser contribuir com este projeto, sinta-se à vontade para abrir um PR no repositório: &lt;a href="https://lnkd.in/d4SDRqk8" rel="noopener noreferrer"&gt;https://lnkd.in/d4SDRqk8&lt;/a&gt;&lt;br&gt;
Ficarei feliz com sua contribuição!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fctg29rvb72rak4njomi6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fctg29rvb72rak4njomi6.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🚀 Exciting News! 🚀</title>
      <dc:creator>João Vitor Minosso</dc:creator>
      <pubDate>Mon, 04 Sep 2023 13:52:04 +0000</pubDate>
      <link>https://dev.to/kallarari/exciting-news-595i</link>
      <guid>https://dev.to/kallarari/exciting-news-595i</guid>
      <description>&lt;p&gt;I'm excited to share my latest project with you all, my online portfolio powered by NextJS from Vercel and React!&lt;br&gt;
The portfolio is fully bilingual, featuring both a dark and light theme to suit your preferences and scores a perfect 💯 on Google PageSpeed!&lt;/p&gt;

&lt;p&gt;Check it out now: &lt;a href="https://portfolio-kallarari.vercel.app/"&gt;https://portfolio-kallarari.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd appreciate your visit and any feedback you might have, so please feel free to connect and let's discuss about this. Thank you for your support!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>nextjs</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>I want your opinion!</title>
      <dc:creator>João Vitor Minosso</dc:creator>
      <pubDate>Fri, 25 Aug 2023 23:10:09 +0000</pubDate>
      <link>https://dev.to/kallarari/i-want-your-opinion-4gm9</link>
      <guid>https://dev.to/kallarari/i-want-your-opinion-4gm9</guid>
      <description>&lt;p&gt;I'm in the process of developing my portfolio website and have been on the lookout for captivating designs that align with my light theme. However, I've noticed that the color scheme I've been using tends to render the website somewhat lackluster.&lt;/p&gt;

&lt;p&gt;So far, so good!&lt;/p&gt;

&lt;p&gt;I would greatly appreciate any constructive feedback or advice you may have for my website. Please bear in mind that it's still a work in progress, and certain elements, such as the footer on all web pages, have yet to be implemented.&lt;/p&gt;

&lt;p&gt;You can access my website through the following link: &lt;a href="https://portfolio-kallarari.vercel.app/"&gt;https://portfolio-kallarari.vercel.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>design</category>
      <category>react</category>
    </item>
    <item>
      <title>How I make dark/light theme</title>
      <dc:creator>João Vitor Minosso</dc:creator>
      <pubDate>Wed, 23 Aug 2023 22:52:21 +0000</pubDate>
      <link>https://dev.to/kallarari/how-i-make-darklight-theme-12m</link>
      <guid>https://dev.to/kallarari/how-i-make-darklight-theme-12m</guid>
      <description>&lt;p&gt;I'm developing a website that requires a dark/light theme switch, and I've come across various approaches to achieve this, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using Tailwind CSS&lt;/li&gt;
&lt;li&gt;Creating a Context to store the theme&lt;/li&gt;
&lt;li&gt;Utilizing an external React library&lt;/li&gt;
&lt;li&gt;Employing TypeScript styled components&lt;/li&gt;
&lt;li&gt;Simply using CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How would you choose an approach for a small application? I opted to use just CSS because it's the method I'm less familiar with. Now, I realize that it's actually the simplest way to accomplish this task. I used the :root:has(#theme-switch:not(:checked)) selector, and it worked smoothly in all my module.css files.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>react</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
