24 pontos por xguru 2025-02-03 | 15 comentários | Compartilhar no WhatsApp
  • O autor, Felix Rieseberg, participa do desenvolvimento do Electron há mais de 10 anos como co-maintainer
  • O Electron permite implementar a UI com tecnologias web e, se necessário, misturar livremente código nativo
  • Muitos apps (Visual Studio Code, Slack, Discord, Figma, ChatGPT, Claude, Notion, 1Password, Docker Desktop etc.) adotam o Electron
  • Este texto aponta os principais equívocos sobre o Electron e explica por que essas escolhas foram feitas

O Electron coloca JavaScript e código nativo em oposição

  • É comum ouvir que “o Electron usa apenas JavaScript e por isso fica atrás do nativo”
  • Na prática, o Electron permite usar, além de JavaScript, código nativo em C++, Objective-C, Rust e outras linguagens
  • Por exemplo, o 1Password escreve a maior parte do código em Rust e usa o Electron na UI
  • A força do Electron está na flexibilidade de misturar tanto código nativo quanto necessário e aproveitar tecnologias web na camada de UI
  • Também existem demos que oferecem parcialmente UI nativa com SwiftUI, GTK, Win32 etc.

Apps web são ruins

  • Existe a visão de que “todo app nativo é sempre superior”, mas a realidade do mercado não é tão simples
  • O Mission Control da NASA, o Bloomberg Terminal, quiosques do McDonald’s e a Dragon 2 da SpaceX também usam tecnologias web baseadas em Chromium
  • Tecnologias web são as mais amplamente usadas no mundo, e um app web bem implementado pode oferecer uma excelente experiência ao usuário
  • A afirmação de que “app web é coisa de quem não tem competência” simplifica demais a questão e ignora os requisitos do ambiente de uso e as circunstâncias de escolha dos desenvolvedores

A WebView do sistema operacional tem desempenho melhor

  • Há quem defenda que a WebView embutida no macOS, Windows ou Linux costuma ser melhor
  • Na prática, o Slack usou inicialmente o MacGap (baseado em WebView), mas acabou adotando o Electron (Chromium) por problemas de desempenho
  • O engine Chromium mais recente consome mais recursos, mas também é a parte que recebe otimizações com mais intensidade
  • A WebView embutida no sistema operacional pode aparentar usar menos memória por causa de recursos compartilhados, mas na prática muitas vezes fica isolada por questões de segurança e estabilidade
  • Com o Electron, é possível gerenciar diretamente a versão mais recente do engine, mantendo estabilidade e segurança de forma independente

O tamanho do bundle importa

  • Em geral, apps em Electron ficam na faixa de 100 a 300 MB, e isso é alvo de críticas
  • Mas os usuários tendem a priorizar mais outros fatores, como funcionalidade, conveniência e estabilidade, do que o tamanho do app
  • Por exemplo, streaming da Netflix em 4K pode consumir vários GB por hora, e atualizações de Call of Duty podem chegar a centenas de GB
  • No fim, o tamanho do app muitas vezes se torna um fator relativamente menos importante em comparação com a satisfação real do usuário

Vença o Electron

  • O Electron começou como um esforço open source de pessoas com o objetivo de “vamos criar um bom app desktop”
  • O Electron surgiu em um cenário com poucos concorrentes e, até hoje, tem oferecido recursos e estabilidade suficientes
  • Para “vencer” o Electron, é preciso criar uma plataforma capaz de fazer melhor o que o Electron faz
  • Os maintainers do Electron receberiam com prazer uma alternativa melhor, caso ela apareça

15 comentários

 
joone 2025-05-24

Comparar com Call of Duty parece um pouco fora do tema.
Vale a pena olhar para o Teams, que abandonou o Electron e migrou para o WebView,
https://techcommunity.microsoft.com/discussions/microsoftteams/…

 
pmc7777 2025-02-04

Tomara que o Tauri amadureça logo. Eu já o uso bem, no entanto.

 
coma333 2025-02-04

Parece que foi ontem quando ainda era Atom Shell... evoluiu bastante.

 
tsboard 2025-02-04

Embora existam vários pontos de crítica, ao ver o nível de acabamento do app do VS Code que usamos todos os dias, fica claro para mim que a contribuição do Electron não foi pequena.

 
akintos 2025-02-03

Tenho quase 10 apps em Electron instalados no PC; a esse ponto, dá a impressão de que isso já deveria ser um framework instalado separadamente.

 
freedomzero 2025-02-03

O tamanho do bundle já é um problema, e quando vejo processos do tipo ~~ Helper consumindo memória, só me dá um suspiro de frustração.

 
nullvana 2025-02-03

Estou considerando o tauri como alternativa, mas fico preocupado com a possibilidade de haver algum caso específico em que ele não funcione corretamente na hora de distribuir. (No passado, sofri bastante ao distribuir um programa em ambiente win32 que fazia referência a DLLs registradas por padrão, como msxml.dll; acabei empacotando tudo internamente para distribuir... então tenho receio de que possa surgir um problema parecido.)

Concordo com a opinião do pessoal do Electron de que o certo é simplesmente esquecer o tamanho, mas o tamanho do bundle é grande demais.

 
aaaapple123 2025-02-05

Parece que esse é o problema do Tauri..

Como a WebView e os programas embutidos variam de plataforma para plataforma, esse é realmente o maior problema. Porque, depois de distribuir, não dá para saber o que pode acontecer.

Por outro lado, se for embutir a própria WebView no Tauri, o tamanho do bundle acaba ficando maior do que no Electron..

Por isso, acho que o Tauri ainda não está maduro para o desenvolvimento de apps cross-platform em produção.

 
secret3056 2025-02-03

Os quiosques do McDonald’s são... hum... será que são um bom exemplo

 
tsboard 2025-02-04

Eu também tive esse mesmo pensamento de repente. Será que os quiosques do McDonald's no exterior são um pouco diferentes? Fiquei com essa dúvida por um instante haha

 
dicebattle 2025-02-03

kkkkkkkk eu pensei exatamente a mesma coisa

 
savvykang 2025-02-03

Parece que reduzir o uso de memória seria o maior desafio, mas é uma pena que nenhum dos envolvidos pareça ter incentivo para realmente colocar isso em prática.

 
rtyu1120 2025-02-03

Também existem exemplos de demonstração que fornecem parcialmente UI nativa usando SwiftUI, GTK, Win32 etc.

No texto, havia um link para o código de demonstração real, então fui conferir, mas não parece algo tão fácil a ponto de simplesmente poder usar junto de forma bem simples. Acho que o mais importante é considerar que, pelo menos, isso é possível...

 
lamanus 2025-02-03

No geral, parece que é verdade que o app é grande mesmo..

 
dohyun682 2025-02-03

Pois é, o tamanho do bundle eles admitem de boa.