DEV Community

Do Burrito ao LiveView Desktop: Construindo Apps Nativos em Elixir sem o Overhead do Electron

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 .exe para 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 .heex e 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)