O desenvolvimento de aplicativos desktop cross-platform foi dominado pelo Electron na última década. Ferramentas como VS Code, Slack e Discord provaram que a web pode viver no desktop, mas o preço cobrado é alto: o empacotamento de um navegador Chromium completo e um runtime Node.js em cada aplicação resulta em um consumo voraz de memória RAM e uso de CPU em idle.
Para desenvolvedores do ecossistema BEAM (Erlang/Elixir), existe uma alternativa muito mais elegante e eficiente. A combinação de Phoenix LiveView, WebViews nativos e o empacotador Burrito permite a construção de executáveis estáticos incrivelmente leves, entregando uma experiência Local-First com latência praticamente nula.
1. O Custo Oculto do Electron vs. A Leveza do WebView Nativo
A arquitetura do Electron exige processos separados: o Main Process (Node.js) e o Renderer Process (Chromium). Mesmo um simples "Hello World" pode consumir dezenas ou centenas de megabytes de RAM.
A abordagem Elixir Desktop inverte essa lógica. Em vez de carregar um navegador inteiro, a aplicação utiliza a API de WebView nativa do sistema operacional do usuário:
- Windows: WebView2 (baseado em Edge/Chromium, mas já compartilhado pelo OS).
- macOS: WKWebView (nativo do Safari, extremamente otimizado).
- Linux: WebKitGTK.
O backend é um servidor Phoenix rodando localmente. O frontend é renderizado pelo LiveView, se comunicando via WebSockets sobre localhost. O resultado? O consumo de memória despenca, e o gerenciamento de threads fica a cargo da BEAM e seus milhões de processos leves, não de um motor V8 sobrecarregado.
2. Burrito: O Fim do "Instale o Erlang para Rodar"
Um dos maiores desafios de distribuir software Elixir no desktop sempre foi a dependência da máquina virtual. Pedir para um usuário final instalar o Erlang/OTP e o Elixir é inviável. É aqui que entra o Burrito.
O Burrito resolve a distribuição compilando seu projeto Elixir em um executável cruzado (cross-compiled) e auto-contido.
- Ele empacota o runtime do Erlang (ERTS), o código compilado da sua aplicação e os assets.
- Extrai tudo dinamicamente em tempo de execução para um diretório temporário.
- Gera binários puros: um
.exepara Windows, um.app(ou binário Unix) para macOS, e um ELF estático para Linux.
O usuário simplesmente clica duas vezes no arquivo e a aplicação abre, ocultando completamente a complexidade da BEAM.
3. Latência Sub-Milissegundo e a Vantagem Local-First
Em um ecossistema SaaS tradicional, cada interação do LiveView exige uma viagem de ida e volta pela internet até o servidor. No modelo LiveView Desktop:
-
Latência de Rede Zero: O WebSocket do LiveView se conecta diretamente ao
127.0.0.1. As atualizações do DOM via diffing ocorrem de forma instantânea, tornando a UI extremamente fluida. - I/O Otimizado: Leituras e escritas no banco de dados local (geralmente um SQLite embarcado ou Mnesia) atingem latências sub-milissegundo. O gargalo de rede desaparece, permitindo a persistência síncrona a cada keystroke do usuário sem travar a interface.
Essa arquitetura é o pilar do desenvolvimento Local-First, onde o aplicativo é totalmente funcional offline, processando regras de negócio complexas na máquina do usuário e sincronizando com a nuvem (via Transaction Outbox) apenas quando houver conectividade.
4. Developer Experience (DX) Preservada
A maior vantagem desta pilha tecnológica é a manutenção do fluxo de trabalho. Você não precisa aprender C++, Swift ou C# para fazer um app desktop performático.
-
Hot Code Reloading: O desenvolvimento ocorre exatamente como em uma aplicação web padrão. Você altera um arquivo
.heexe a janela do desktop atualiza em tempo real. -
Testes Rápidos: A lógica de negócio e as regras do LiveView podem ser testadas com as ferramentas nativas (
ExUnit,Phoenix.LiveViewTest), utilizando bancos em memória, acelerando drasticamente o ciclo de feedback. - Reaproveitamento de Código: O mesmo core da aplicação web pode ser servido no executável desktop, reaproveitando 100% da lógica de negócio e do design system.
O ecossistema Elixir já provou ser excepcional para sistemas web de alta concorrência. Ao combinar o Burrito com WebViews, expandimos essa resiliência e produtividade para os desktops dos usuários finais, entregando binários limpos, rápidos e que respeitam a bateria e a memória da máquina.
Top comments (0)