<?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: Augusto Sandim</title>
    <description>The latest articles on DEV Community by Augusto Sandim (@augustosandim).</description>
    <link>https://dev.to/augustosandim</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%2F107211%2F5a0c3352-ca9c-4794-9e31-478fa35b079d.jpeg</url>
      <title>DEV Community: Augusto Sandim</title>
      <link>https://dev.to/augustosandim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/augustosandim"/>
    <language>en</language>
    <item>
      <title>Design System: Why your component library is dying (and how we started saving it)</title>
      <dc:creator>Augusto Sandim</dc:creator>
      <pubDate>Sat, 17 Jan 2026 13:16:03 +0000</pubDate>
      <link>https://dev.to/augustosandim/design-system-why-your-component-library-is-dying-and-how-we-started-saving-it-40m0</link>
      <guid>https://dev.to/augustosandim/design-system-why-your-component-library-is-dying-and-how-we-started-saving-it-40m0</guid>
      <description>&lt;p&gt;Every frontend developer has been there: you receive a new prototype in Figma, open the project's component library, and realize that... nothing fits. The colors are slightly different, the spacing doesn't match up, and that "standard" button requires 15 extra lines of CSS just to resemble the design.&lt;/p&gt;

&lt;p&gt;Over the last year, I lived exactly this scenario. What started as a robust React library over time became a productivity bottleneck and a museum of obsolete technical decisions.&lt;/p&gt;

&lt;p&gt;In this first post, I want to share how we identified that our &lt;strong&gt;Design System (DS)&lt;/strong&gt; was failing and why we decided to rebuild it as a multi-platform ecosystem.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Diagnosis: The "Drift" Between Design and Code
&lt;/h2&gt;

&lt;p&gt;The first warning sign was inconsistency. The Design team was evolving rapidly, testing new approaches and UX patterns. Meanwhile, our React library was stagnant.&lt;/p&gt;

&lt;p&gt;This disconnect creates a dangerous phenomenon known as &lt;strong&gt;Shadow CSS&lt;/strong&gt;. To deliver their tasks on deadline, developers stop using system components and start creating "local versions" or globally overriding styles.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;? An ever-increasing bundle size, impossible maintenance, and an interface that looks like a patchwork quilt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;h2&gt;
  
  
  When Technology Becomes the Problem
&lt;/h2&gt;

&lt;p&gt;In our case, we had a technical complication: the library was entirely based on &lt;code&gt;styled-components&lt;/code&gt; in versions that were already becoming deprecated.&lt;/p&gt;

&lt;p&gt;Although CSS-in-JS had its peak, we realized that the way it was implemented throughout the project generated:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance difficulty&lt;/strong&gt;: Changing a basic behavior required navigating complex trees of styled components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Barrier to entry&lt;/strong&gt;: New stacks (like Mobile) couldn't leverage anything we had already done for Web.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We realized that just updating lib versions wasn't enough. We needed a &lt;strong&gt;Design System System&lt;/strong&gt; (yes, a system to manage the system).&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;h2&gt;
  
  
  The Turning Point: From React to Multi-platform
&lt;/h2&gt;

&lt;p&gt;The big decision was: &lt;strong&gt;stop building just for the Web and start building for the brand.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our company doesn't live on React alone. We have native Android, iOS, Flutter, and Web. If we kept focusing only on a React library, the inconsistency problem would repeat itself on all other fronts.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Monorepo Strategy
&lt;/h3&gt;

&lt;p&gt;We decided to migrate to a **Monorepo **structure. The idea was to centralize the Design System's intelligence in a single place, but distribute it to all platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design Tokens&lt;/strong&gt;: The Single Source of Truth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core Logic&lt;/strong&gt;: Component business rules that could be shared.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specific implementations&lt;/strong&gt;: Dedicated packages for React, Flutter, and Native Mobile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This changed the game. The Design System stopped being "that React button repository" to become the &lt;strong&gt;universal language of engineering&lt;/strong&gt; at the company.&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you care about this?
&lt;/h2&gt;

&lt;p&gt;If you are a &lt;strong&gt;Senior Software Developer&lt;/strong&gt;, you know our job isn't just writing code, but ensuring the solution's maintainability and scalability. Keeping the connection alive between design and code brings clear benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reduces Time-to-Market:&lt;/strong&gt; Fewer discussions about pixels, more focus on features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eliminates Technical Debt:&lt;/strong&gt; Brand updates are propagated automatically through tokens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unifies the experience:&lt;/strong&gt; The user feels they are using the same product, whether on the site or the app.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  And you?
&lt;/h3&gt;

&lt;p&gt;Have you ever felt like your Design System is hindering more than helping? Let's talk in the comments!&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>designsystem</category>
      <category>react</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Por que o seu Design System está morrendo (e como começamos a salvá-lo)</title>
      <dc:creator>Augusto Sandim</dc:creator>
      <pubDate>Tue, 13 Jan 2026 23:09:58 +0000</pubDate>
      <link>https://dev.to/augustosandim/por-que-o-seu-design-system-esta-morrendo-e-como-comecamos-a-salva-lo-546l</link>
      <guid>https://dev.to/augustosandim/por-que-o-seu-design-system-esta-morrendo-e-como-comecamos-a-salva-lo-546l</guid>
      <description>&lt;p&gt;Todo desenvolvedor frontend já passou por isso: você recebe um protótipo novo no Figma, abre a biblioteca de componentes do projeto e percebe que... nada encaixa. As cores são levemente diferentes, os espaçamentos não batem e aquele botão que deveria ser "padrão" precisa de 15 linhas de CSS extra para ficar igual ao design.&lt;/p&gt;

&lt;p&gt;No último ano, vivi exatamente esse cenário. O que começou como uma biblioteca React robusta, com o tempo, tornou-se um gargalo de produtividade e um museu de decisões técnicas obsoletas.&lt;/p&gt;

&lt;p&gt;Neste primeiro post, quero compartilhar como identificamos que nosso &lt;strong&gt;Design System (DS)&lt;/strong&gt; estava falhando e por que decidimos reconstruí-lo como um ecossistema multiplataforma.&lt;/p&gt;




&lt;h2&gt;
  
  
  O diagnóstico: A "Deriva" entre Design e Código
&lt;/h2&gt;

&lt;p&gt;O primeiro sinal de alerta foi a inconsistência. O time de Design evoluía rápido, testando novas abordagens e padrões de UX. Enquanto isso, nossa biblioteca em React estava estagnada.&lt;/p&gt;

&lt;p&gt;Essa desconexão cria um fenômeno perigoso: o &lt;strong&gt;Shadow CSS&lt;/strong&gt;. Desenvolvedores, para entregarem suas tarefas no prazo, param de usar os componentes do sistema e começam a criar "versões locais" ou a sobrescrever estilos globalmente.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Resultado?&lt;/strong&gt; Um bundle cada vez maior, manutenção impossível e uma interface que parece uma colcha de retalhos.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Quando a tecnologia se torna o problema
&lt;/h2&gt;

&lt;p&gt;No nosso caso, tínhamos um complicador técnico: a biblioteca era inteiramente baseada em &lt;code&gt;styled-components&lt;/code&gt; em versões que já estavam se tornando depreciadas.&lt;/p&gt;

&lt;p&gt;Embora o CSS-in-JS tenha tido seu auge, percebemos que a forma como ele estava implementado no projeto inteiro gerava:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Dificuldade de manutenção:&lt;/strong&gt; Alterar um comportamento básico exigia navegar por árvores complexas de componentes estilizados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Barreira de entrada:&lt;/strong&gt; Novas stacks (como Mobile) não podiam aproveitar nada do que já tínhamos feito para Web.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Percebemos que não bastava atualizar as versões das libs. Precisávamos de um &lt;strong&gt;Design System System&lt;/strong&gt; (sim, um sistema para gerir o sistema).&lt;/p&gt;




&lt;h2&gt;
  
  
  A Virada de Chave: Do React para o Multiplataforma
&lt;/h2&gt;

&lt;p&gt;A grande decisão foi: &lt;strong&gt;parar de construir apenas para Web e começar a construir para a marca.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nossa empresa não vive só de React. Temos Android nativo, iOS, Flutter e Web. Se continuássemos focados apenas em uma biblioteca React, o problema da inconsistência se repetiria em todas as outras frentes.&lt;/p&gt;

&lt;h3&gt;
  
  
  A estratégia do Monorepo
&lt;/h3&gt;

&lt;p&gt;Decidimos migrar para uma estrutura de &lt;strong&gt;Monorepo&lt;/strong&gt;. A ideia era centralizar a inteligência do Design System em um único lugar, mas distribuir para todas as plataformas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design Tokens:&lt;/strong&gt; A fonte única de verdade (&lt;em&gt;Single Source of Truth&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core Logic:&lt;/strong&gt; Regras de negócio de componentes que poderiam ser compartilhadas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementações específicas:&lt;/strong&gt; Pacotes dedicados para React, Flutter e Mobile Nativo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso mudou o jogo. O Design System deixou de ser "aquele repositório de botões em React" para se tornar a &lt;strong&gt;linguagem universal da engenharia&lt;/strong&gt; na empresa.&lt;/p&gt;




&lt;h2&gt;
  
  
  Por que você deveria se importar com isso?
&lt;/h2&gt;

&lt;p&gt;Se você é um &lt;em&gt;Senior Software Developer&lt;/em&gt;, sabe que nosso trabalho não é apenas escrever código, mas garantir a manutenibilidade e a escalabilidade da solução. Manter a conexão viva entre design e código traz benefícios claros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reduz o Time-to-Market:&lt;/strong&gt; Menos discussões sobre pixels, mais foco em funcionalidades.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elimina o Débito Técnico:&lt;/strong&gt; Atualizações de marca são propagadas automaticamente através de tokens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unifica a experiência:&lt;/strong&gt; O usuário sente que está usando o mesmo produto, seja no site ou no app.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  E você?
&lt;/h3&gt;

&lt;p&gt;Já sentiu que seu Design System está mais atrapalhando do que ajudando?&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>designsystem</category>
      <category>react</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
