- Durante o desenvolvimento de um app de controle remoto de ultrabaixa latência para programação em par remota, a equipe adotou o Tauri como framework do app
- Os motivos da escolha incluem desempenho, eficiência de memória e suporte a sidecar
- Com backend baseado em Rust + WebView do sistema, o tamanho do app e o uso de memória são muito menores do que no Electron
- No Tauri v2, a diferença de recursos também está sendo reduzida rapidamente, com funções essenciais como atualizações automáticas e sidecar já integradas
- O Electron continua poderoso, mas para os requisitos específicos do Hopp, o Tauri foi mais adequado
Por que o Hopp escolheu o Tauri
Contexto: escolhendo um framework de app cross-platform
- O Hopp precisava de um app desktop de alto desempenho que funcionasse da mesma forma em Windows, macOS e Linux
- Electron e Tauri são opções representativas, e cada um tem vantagens e desvantagens bem definidas
- A equipe do Hopp fez a escolha priorizando manutenibilidade de longo prazo e performance
Tauri vs. Electron: diferenças estruturais
-
Estrutura do Electron
- É necessário incluir o runtime do Node.js → aumento no tamanho do app
- Cada janela usa um processo de renderização separado (engine Chromium) → alto consumo de memória
- A integração profunda com o sistema exige processos separados
-
Resumo da estrutura do Tauri
- O backend é um binário nativo baseado em Rust → não requer runtime separado
- Usa o WebView do sistema (Windows: WebView2, macOS: WKWebView, Linux: WebKitGTK)
- Tem boa eficiência de memória conforme o número de janelas, embora seja preciso gerenciar problemas de inconsistência entre engines de navegador
Comparação dos principais recursos
- O tempo de inicialização é rápido tanto no Tauri quanto no Electron, sem grande diferença perceptível
- Em uso de memória, o Tauri consome bem menos
- O Tauri usou cerca de 172MB de memória
- O Electron ficou em cerca de 409MB, consumindo mais do que o dobro de memória
- Do ponto de vista da engine de renderização
- O Tauri usa o WebView embutido no sistema operacional, deixando o app menor e mais leve
- O Electron inclui a engine Chromium diretamente no app, usando mais recursos
- Quanto à linguagem de backend
- O Tauri usa Rust, permitindo escrever código nativo de alto desempenho
- O Electron é baseado em JavaScript (Node.js), familiar para desenvolvedores web, mas com desempenho relativamente inferior
- Em relação ao tempo de build inicial
- O Tauri inclui compilação Rust, então o build inicial é mais lento
- O Electron, por ser baseado em JS, tem build inicial mais rápido
- Na comparação de tamanho do app
- O Tauri tem cerca de 8.6MiB, sendo muito leve
- O Electron tem cerca de 244MiB, ou seja, é cerca de 28 vezes maior
Os motivos decisivos para o Hopp escolher o Tauri
-
1. Backend Rust de alto desempenho
- Era necessário implementar streaming de vídeo de ultrabaixa latência baseado em WebRTC
- No Electron, seria preciso iniciar um processo separado, mas no Tauri isso pode ser implementado diretamente no backend Rust
-
2. Suporte a processos sidecar
- O streaming e o tratamento de entrada são separados em binários independentes para gerenciamento
- O Tauri oferece suporte oficial a sidecar → gerenciamento de ciclo de vida e comunicação mais simples
- No futuro, a equipe também considera expandir para Tauri egui para renderização de cursor
-
3. Suporte a recursos que evolui rapidamente
- O Tauri v2 já inclui recursos essenciais, como atualizações automáticas
- Embora seja mais novo que o Electron, sua visão centrada em segurança e desempenho combina com o Hopp
Conclusão: qual framework é melhor?
- Electron e Tauri são excelentes frameworks para apps desktop
- A escolha pode variar conforme a natureza do projeto
- Electron: desenvolvimento rápido, amigável para JS, ecossistema amplo
- Tauri: menor, mais leve, mais rápido e otimizado para performance com base em Rust
- O Hopp adotou o Tauri porque precisava de uma stack centrada em performance e de uma arquitetura com processos separados
6 comentários
Eu uso
webui. O tamanho também é pequeno e há bem menos dependências de runtime.Seria bom incluir uma comparação com o Wails também
A impressão que fica para mim é a contrária: na maioria dos casos, o Electron já é suficiente.
Talvez porque eu tenha ficado com a lembrança de que a experiência de comunicação entre back-end e front-end no começo do Tauri não era muito boa...
Parece que a diferença no motor do navegador é uma questão grande, mas, considerando o suporte incluindo mobile, também acaba parecendo pequena.
Se o problema do tamanho do app for grande, então faz sentido ir de Tauri sem pensar duas vezes.
Pelo tamanho, uso de memória e sidecar, acho que vou ter que experimentar para ver se é a escolha certa! Obrigado pela apresentação.