58 pontos por GN⁺ 2026-02-24 | 5 comentários | Compartilhar no WhatsApp
  • Framework de apps desktop baseado em TypeScript que usa Bun no processo principal e Zig para bindings nativos
  • Suporta macOS, Windows e Ubuntu, gerando automaticamente instaladores, atualizações automáticas e artefatos de patch diferencial
  • Oferece um conjunto completo de recursos de desktop, incluindo controle de janelas, menus, atalhos, área de transferência, diálogos, armazenamento de sessão e mais, além de implementar uma webview estável baseada em OOPIF
  • A estrutura interna aproveita o FFI e o modelo de memória compartilhada do Bun para manter a eficiência mesmo em ambientes multiprocessados
  • Desenvolvido ao longo de 2 anos por um engenheiro que vivenciou as limitações de Electron e Tauri e estudou Zig, C, C++ e Objective-C para criá-lo diretamente
  • O objetivo é um workflow unificado que permita começar a programar em 5 minutos e fazer o deploy em 10 minutos

Visão geral e objetivos do projeto Electrobun

  • Estrutura que executa o processo principal com Bun, faz o bundle da TypeScript da webview e escreve bindings nativos em Zig
  • Tanto o processo principal quanto a webview são escritos em TypeScript, mantendo a isolação entre processos e oferecendo comunicação RPC rápida e tipada
  • Tamanho do bundle extraível do app de cerca de 12 MB (usando a webview do sistema, sendo a maior parte o runtime do Bun)
  • Atualizações diferenciais baseadas em bsdiff podem reduzir o tamanho do patch para no mínimo 14 KB
  • O objetivo é fornecer um único workflow integrado que permita começar a programar em 5 minutos e concluir o deploy em 10 minutos
  • É possível iniciar um projeto baseado em template com o comando npx electrobun init

Contexto de criação

  • O autor cria apps desktop desde a era do Visual Basic 6, e a origem do projeto está na experiência de ter distribuído produtos de várias startups para milhares de pessoas na época do Adobe AIR
  • Embora tenha passado mais de 20 anos como engenheiro inicial em startups, construindo e escalando produtos em nível de unicórnio, o ambiente de desenvolvimento desktop acabou regredindo
  • Ao criar o co(lab), um híbrido de navegador web + editor de código + terminal PTY, encontrou tantas dificuldades que decidiu construir o próprio framework
  • A primeira versão foi feita em Electron, mas o processo de assinatura de código, notarização, distribuição e atualização parecia mais uma luta contra o framework do que desenvolvimento de app
  • Ele queria continuous shipping como na web, mas a toolchain existente tornava isso mais difícil do que o necessário
  • Também tentou Tauri, mas concluiu que Rust não era adequado para todos os desenvolvedores e, como o Bun ainda estava a alguns meses do lançamento 1.0 na época, decidiu desenvolver tudo por conta própria

De macOS para multiplataforma

  • Inicialmente só era possível fazer build de apps para macOS, mas agora há suporte de primeira classe para build e deploy em macOS, Windows e Ubuntu
  • Instaladores, artefatos de atualização automática e patches diferenciais são todos gerados automaticamente
  • Basta conectar um host estático (R2, S3, GitHub Releases) para concluir o deploy
  • As atualizações diferenciais ficam por conta do zig-bsdiff, portado de C para Zig e otimizado com SIMD e zstd
  • Com a estabilização do FFI do Bun, a maior parte da camada FFI em Zig escrita anteriormente foi substituída por Bun
  • A arquitetura acabou evoluindo de forma positiva, já que o Bun usa memória compartilhada ao criar workers, mantendo a eficiência mesmo com múltiplos processos

Recursos já lançados

  • Hoje, como framework completo, oferece controles de janela multiplataforma, menus, atalhos (accelerators), atalhos globais, área de transferência, diálogos, partições de webview, armazenamento de sessão, busca na página (find-in-page), além de tooling para bundle e atualização
  • A implementação de OOPIF (Out-of-Process Iframe) já alcançou um nível em que funciona de fato
    • A tag <webview> do Electron foi descontinuada no Chromium, mas ainda não existe uma alternativa pronta
    • <electrobun-webview> é um verdadeiro "super iframe" em que posicionamento no DOM, isolamento de processo e layering funcionam corretamente
    • Funciona em múltiplas plataformas sem problemas de cursor flicker e sem patches no motor do navegador

Status de suporte por plataforma

  • macOS 14+: suporte oficial
  • Windows 11+: suporte oficial
  • Ubuntu 22.04+: suporte oficial
  • Outras distribuições Linux (gtk3, webkit2gtk-4.1): suporte da comunidade

Próximos planos

  • A reescrita completa do co(lab) sobre o Electrobun foi concluída, e com base na estabilização da v1 o foco agora passa a ser o desenvolvimento sério do co(lab)
  • O objetivo central é estabilizar o framework a ponto de permitir a construção de produtos ambiciosos de longo prazo sem ficar à mercê da volatilidade das plataformas
  • A comunidade no Discord está crescendo, e usuários que contribuíram com testes beta, envio de issues e feedback ajudaram a moldar o framework
  • Electrobun é o primeiro grande produto lançado pela Blackboard

5 comentários

 
myname1260 2026-03-03

Estava escrito que era uma reescrita completa do co(lab), então pensei que fosse algo para melhorar, junto com o Google, a estabilidade da nuvem para executar ipynb, mas na verdade é um projeto de desenvolvimento da equipe do Blackboard sem qualquer relação com isso.

Ainda assim, parece ser uma experiência importante o fato de que o OOPIF, instalado via npx, pode ser acessado

 
geekbini 2026-02-24

"A sensação é de lutar com o framework no processo de assinatura de código, notarização, distribuição e atualização, mais do que no desenvolvimento do app"

Há uma observação como a acima sobre o contexto em que ele foi criado no texto principal,
e, de fato, há casos em que dá mais trabalho distribuir do que desenvolver o app.
Só por ter resolvido esse problema, já merece uma avaliação muito positiva.

 
bus710 2026-02-24

Também descobri que é bem fácil e simples acoplar zig ao Flutter.
Sem muita diferença em relação à documentação de Dart/C FFI...

 
mammal 2026-02-24

> Fico me perguntando por que as principais distribuições Linux não oferecem um WebView padrão. Isso é um grande obstáculo para expandir o ecossistema de apps.

Se for um sistema operacional com ambiente GUI, acho que o WebView já deveria se tornar um componente padrão.

 
GN⁺ 2026-02-24
Comentários do Hacker News
  • Olá, sou o criador do Electrobun
    Desta vez lancei a versão estável v1. Fixei a arquitetura e, se vocês precisarem de bugs corrigidos ou de APIs que usavam no Electron/Tauri, deixem em issues no GitHub que vou tratar isso como prioridade
    No último mês, revisei 50 mil linhas de código e concluí o trabalho de estabilização
    Também há um vídeo de demonstração do projeto open source Colab (navegador web + editor de código + terminal PTY) feito com Electrobun
    O Electrobun usa por padrão a WebView do sistema, mas também pode incluir o CEF com a opção bundleCEF. Estruturalmente ele é independente de WebView, então, quando Servo ou Ladybird estiverem prontos, será possível substituí-los imediatamente
    Além disso, a cada release ele gera pacotes com compactação automática baseada em zstd para reduzir o tamanho do download inicial, e as atualizações podem permanecer pequenas, na faixa de 14 KB

    • Tenho curiosidade se as definições de tipos estão de acordo com a documentação. Por exemplo, se eu coloco a chave partition em BrowserWindow, o TypeScript acusa erro
    • Obrigado por criar o Electrobun
  • O Electrobun parece muito promissor. Pretendo fazer meu próximo projeto com ele
    Em uma stack totalmente TypeScript, a produtividade é a mais alta. Fico feliz em ter uma alternativa ao Electron mais leve e rápida, sem Rust nem longos tempos de compilação

    • Acabei de terminar meu primeiro app em Tauri e fiquei surpreso com o quanto o build no Windows demora. Com certeza vou experimentar o Electrobun
  • No Discord, muitos desenvolvedores de jogos estão testando jogos desktop com Electrobun
    Ele pode acabar substituindo parte do Electron no mercado de jogos indie da Steam
    Especialmente com bun --watch game.ts, a experiência de desenvolvimento de jogos em TypeScript com reload instantâneo é muito rápida e fluida

    • Para quem faz muito desenvolvimento web, independentemente da ferramenta, o Bun já representa um grande salto em desempenho
    • Não existem tantos jogos feitos com Electron. CrossCode é um dos poucos de que me lembro. A maioria usa Unity ou Godot
    • Queria saber em qual servidor do Discord esses testes estão acontecendo. Gostaria de participar
    • O Node agora também oferece modo watch e execução de TypeScript
  • O principal problema do Tauri é que a qualidade da WebView do sistema varia conforme o OS
    No Linux não há uma WebView oficial, e no Windows 7 ou nas primeiras versões do 10 não se usa a Edge WebView. Por causa dessas diferenças, às vezes a inicialização leva mais de 20 segundos
    Fico em dúvida se vale a pena aceitar esse trade-off para economizar 100 MB
    A maioria dos usuários tem internet rápida, então a velocidade de download não é um grande problema
    Eu queria saber se o Electrobun oferece suporte a um renderizador Chromium embutido, mas isso não estava claro na documentação

    • O Electrobun usa por padrão a WebView do sistema, mas pode empacotar CEF (Chromium) quando necessário. Isso está indicado na documentação oficial
    • No site do produto também está escrito “System’s native webview as renderer, CEF optional”. Ou seja, é opcional
    • Quando fui criar um app em Tauri no Windows, tive que usar o embedded bootstrapper. Fico contente em ver que o Electrobun parece ter resolvido bem esse problema
    • Fico me perguntando por que as principais distribuições Linux não oferecem uma WebView padrão. Isso é um grande obstáculo para expandir o ecossistema de apps
    • Uma versão baseada em CEF também está sendo desenvolvida para o Tauri. Dá para ver o branch relacionado. Como a qualidade da WebView do OS é baixa, essa abordagem parece uma melhoria bem melhor
  • Teria sido bom deixar claro no título que este texto é um post de retrospectiva do projeto
    Para o projeto em si, parece mais apropriado ver o link da documentação oficial

  • A página principal do projeto é esta aqui
    A interface parece limpa e, como estou acostumado com Zig, acho que seria mais fácil de abordar do que Rust

  • Nesta semana vamos lançar um novo app em Electron na empresa, e sinto que teria sido ótimo se o Electrobun tivesse surgido um ano antes
    O Electron Builder simplifica até certo ponto o processo de atualização e assinatura, mas ainda assim continua sendo incômodo
    No meu próximo projeto pessoal, pretendo tentar o Electrobun

  • O texto menciona o problema de notarização e stapling, e, se você não usa Xcode, a Apple torna esse processo bem difícil
    No Windows, a automação em CI também não é fácil. Se o Electrobun oferecer uma solução melhor, tenho muito interesse

    • Na maioria dos casos, isso é suportado com a configuração padrão. Basta definir algumas variáveis de ambiente e fazer o build com notarize: true
      Já fiz assinatura e notarização várias vezes com Electrobun e não tive problemas. Ele também oferece uma escape hatch para casos mais complexos
      Se precisar de ajuda, pode me mandar DM no Discord. (Não sou ligado ao Electrobun, mas conheço bem o sofrimento que é o sistema de notarização da Apple)
  • Se um app em Electron passa de 500 MB, os 14 MB do Electrobun realmente parecem muito pequenos

    • Um app típico de Electron para macOS (DMG) fica em torno de 80 MB, enquanto o Electrobun fica por volta de 16 MB
  • É uma pena que distribuições além do Ubuntu estejam atualmente fora do escopo de suporte
    A discussão relacionada pode ser vista neste comentário da issue