
Migração de Electron para PWA revela trade-offs de plataforma
O ponto de partida
O autor passou um ano construindo um editor de EPUB em Electron - uma escolha natural, já que o app depende de renderização e manipulação de texto, área em que o navegador se destaca. Mesmo assim, duas motivações o levaram a testar alternativas.
As críticas ao Electron
A primeira era o tamanho do bundle: o shell do Chromium adiciona cerca de 250 MB antes de qualquer código próprio. Em retrospecto, ele considera esse medo desproporcional - hardware atual tem armazenamento de sobra, a rede é rápida, e provedores como Cloudflare não cobram custos de saída (egress). A segunda crítica é mais estrutural: para o autor, o verdadeiro problema do Electron não é o tamanho, mas a experiência de desenvolvimento de baixo nível, comparável à web dos anos 2000. Faltam padrões estabelecidos, HMR, gerenciamento de janelas, IPC com tipagem segura e mecanismo próprio de atualização. Ferramentas como electron-builder e electron-vite melhoram bundling e distribuição, mas não constituem um framework completo.
A migração para PWA
Ele avaliou que Electron e PWA são mais parecidos do que se imagina: ambos executam JavaScript em um shell de navegador, com capacidades de computação próximas. As vantagens da PWA incluíam tamanho reduzido, execução instantânea, funcionamento em mobile e desktop, mecanismo de atualização pronto, interações com sistema de arquivos mais rápidas e testes muito mais simples. A maior diferença arquitetural é a ausência do Node.js: o cálculo se distribui entre cliente e workers, o que trouxe ganhos de desempenho que ele subestimou. A reescrita foi tranquila, e algumas soluções ele manteve ao voltar ao Electron - mas seis meses se foram antes de ele descobrir limitações fatais.
Os problemas da PWA no desktop
O primeiro foi a qualidade desigual das APIs de arquivo: File System API e OPFS funcionam bem, mas ele reportou dois bugs graves em APIs fundamentais para abrir arquivos via associações e parâmetros de inicialização - e, sem poder adicionar funcionalidades ao navegador, ficou sem alternativa. Além disso, APIs se comportam de forma diferente entre navegadores, e o Safari simplesmente não funcionava; como a PWA sempre abre no navegador em que foi instalada, isso virou um impasse. Nesse ponto, ele percebeu que estava lutando contra a tecnologia, não usando-a.
O segundo problema foi a integração com o desktop: customizar a barra de título é difícil (a documentação oficial sugere disfarçar problemas com gradientes em CSS), e faltam recursos essenciais - menus de tray/dock customizáveis, atalhos globais de teclado (Cmd+S e Cmd+Q são reservados pelo navegador) e integração no menu de contexto do sistema. Somam-se fricções menores, como a descoberta e instalação de PWAs, pouco intuitiva para usuários.
De volta ao Electron e conclusão
O autor migrou de volta ao Electron (com um breve desvio pelo Electronbun). Sua conclusão: PWA é uma boa adição a sites existentes, mas não uma alternativa viável para apps desktop, pois falha nas expectativas mais básicas desse formato. Ele ressalva que muitos apps Electron são apenas sites em um shell e se beneficiariam de virar PWAs, ficando menores, mais leves e mais testáveis. Para o restante, ele ficaria com o Electron - e sonha com um framework adequado, que alguém com dois anos de experiência no Electron poderia construir. Se a PWA um dia resolver as lacunas e receber o cuidado que falta, ele enxerga potencial para se tornar a principal forma de construir apps web no desktop; hoje, porém, seria pouco mais que um atalho para abrir sites mais rápido e funcionar offline.