Por que seus apps Electron devoram sua memória RAM
O Problema dos Apps que Parecem... Errados
Vamos ser sinceros por um momento. Você baixou um aplicativo de desktop e ele parece... estranho. Tudo funciona, tecnicamente falando, mas tem algo meio fora de lugar. O texto é pequeno demais. A janela não se comporta como outros programas. Ele devora sua RAM como se não houvesse amanhã.
Parabéns, você provavelmente instalou um app Electron.
O Básico: O Que É o Electron
Para quem não conhece, Electron é um framework que permite criar aplicativos desktop usando tecnologias web — HTML, CSS e JavaScript. A promessa é sedutora: seus desenvolvedores web podem construir apps para desktop usando o mesmo código. Sem precisar aprender código nativo para Windows, macOS e Linux separadamente. Parece um sonho para startups enxutas e equipes com recursos limitados.
Mas é aqui que a história fica interessante.
O Problema do Terno e Gravata
Acho genial a forma como um desenvolvedor descreveu apps Electron: navegadores web disfarçados de software nativo. E não é um exagero. Por trás daquela aparência brilhante de aplicativo de desktop, você está basicamente rodando uma instância completa do Chromium. Isso significa um motor JavaScript inteiro, um motor de renderização inteiro e toda a sobrecarga que vem junto.
O resultado? Um cliente de email que consome mais RAM do que um videogame. Um aplicativo para anotações que leva três segundos para abrir. Um utilitário "leve" que fica na sua barra consumindo recursos como se estivesse minerando cryptocurrency.
Quando a Versão Web É Melhor
Aqui é onde fica realmente irritante. Em muitos casos, a versão web de um aplicativo é na verdade melhor do que sua counterpart Electron para desktop. O mesmo código, os mesmos recursos, mas de alguma forma a versão do navegador parece mais rápida, mais responsiva, mais... correta.
Por quê? Porque navegadores web tiveram décadas de otimização. Os criadores de browsers competem ferozmente em performance. Os componentes de renderização web do seu sistema operacional recebem atualizações de segurança automaticamente através das atualizações do sistema. Mas apps Electron embarcam sua própria versão do Chromium, congelada no tempo até que o desenvolvedor decida atualizar — se é que decide.
Isso não é apenas uma preocupação teórica. Pesquisadores de segurança documentaram diversos casos onde apps Electron foram distribuídos com vulnerabilidades conhecidas em seus componentes Chromium embarcados. O navegador web que você está usando para ler isso? Provavelmente já se atualizou três vezes desde que você começou a ler. Aquele app Electron no seu desktop? Pode estar rodando código de dois anos atrás.
O Imposto da Experiência
Vamos falar sobre usabilidade. Quando você usa um aplicativo nativo do macOS ou Windows, espera ciertos comportamentos. Esperar que Cmd+Scroll aumente o texto. Esperar que janelas redimensionem suavemente. Esperar que atalhos de teclado funcionem consistentemente com outros apps que você usa.
Apps Electron frequentemente quebram essas expectativas. Não porque os desenvolvedores não se importam — muitos se importam — mas porque eles estão trabalhando dentro de um framework que nunca foi projetado para replicar comportamento nativo. É como pedir para um peixe subir em uma árvore e depois se perguntar por que ele está cansado.
Perdi a conta de quantas vezes tive que fuçar menus de configuração só para conseguir ler o texto em um app Electron, indo e voltando para checar se minhas mudanças realmente funcionaram. Na web, eu simplesmente apertaria Ctrl+ ou usaria o trackpad. Mas aparentemente, isso é tecnologia avançada demais para alguns aplicativos de desktop.
WebViews: O Meio-Termo que Ninguém Gosta
Então qual é a alternativa? Alguns desenvolvedores estão recorrendo a WebViews — componentes de nível de sistema que renderizam conteúdo web usando o próprio motor de renderização do sistema operacional. É mais eficiente que o Electron porque o motor web é compartilhado entre todos os apps e recebe atualizações de segurança através do SO.
Mas WebViews vêm com suas próprias dores de cabeça. Sistemas operacionais diferentes usam motores web diferentes. Seu app pode parecer ligeiramente diferente no Windows versus macOS versus Linux. Aquela promessa de "escreva uma vez, rode em qualquer lugar" começa a rachar.
A verdade honesta? Não existe solução perfeita. Apps nativos oferecem a melhor performance e experiência do usuário, mas exigem bases de código separadas para cada plataforma. O Electron oferece conveniência no desenvolvimento ao custo do uso de recursos e segurança. WebViews dividem a diferença de forma desconfortável.
O Que Você Deveria Fazer?
Se você é um desenvolvedor construindo aplicativos desktop, eu encorajo você a genuinamente avaliar se o Electron é a escolha certa. Considere seus usuários. Considere que um desenvolvedor postando sobre seu app nas redes sociais pode descrevê-lo como "um navegador web disfarcçado de aplicativo nativo." Considere que "funciona na minha máquina" ganha um significado completamente novo quando você está embarcando um navegador inteiro junto com seu código.
Se você é um usuário, não sinta culpa por reclamar daquele app Electron lerdo. Sua frustração é válida. O consumo de memória, a UI inconsistente, o texto pequeno demais para ler — essas não são reclamações pequenas. São impactos reais no seu fluxo de trabalho e merecem ser tratados.
No final do dia, deveríamos estar construindo ferramentas que respeitem tanto desenvolvedores quanto usuários. Às vezes isso significa escolher conveniência. Às vezes significa fazer o trabalho extra para fazer as coisas corretamente. A questão não é se o Electron é bom ou ruim — é se é a escolha certa para o que você está tentando realizar.
A metáfora do disfarce funciona porque é fundamentalmente sobre falsificação. Apps Electron frequentemente parecem estar fingindo ser algo que não são. Talvez seja hora de parar de fingir e começar a construir software que sabe o que quer ser.