O que as pessoas entendem errado sobre o Electron
(felixrieseberg.com)- 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
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/…
Tomara que o Tauri amadureça logo. Eu já o uso bem, no entanto.
Parece que foi ontem quando ainda era Atom Shell... evoluiu bastante.
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.
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.
O tamanho do bundle já é um problema, e quando vejo processos do tipo
~~ Helperconsumindo memória, só me dá um suspiro de frustração.Estou considerando o
tauricomo 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, comomsxml.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.
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.
Os quiosques do McDonald’s são... hum... será que são um bom exemplo
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
kkkkkkkk eu pensei exatamente a mesma coisa
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.
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...
No geral, parece que é verdade que o app é grande mesmo..
Pois é, o tamanho do bundle eles admitem de boa.