Como a Raycast construiu um launcher nativo que roda no Mac e no Windows
A Raycast é um launcher de teclado com extensões, chat de IA e busca de arquivos. Começou como um app de Mac todo em Swift e AppKit, e na versão 2.0 virou um híbrido: cascas nativas finas, uma interface única em React dentro das web views do sistema, um núcleo em Node.js e Rust onde a velocidade importa.
Copiar stackraycast.com Launcher de produtividade para Mac e Windows · Reino Unido · fundada em 2020
Fornece os modelos Claude oferecidos na Raycast AI.
Por quê: Nenhum modelo é o melhor em velocidade, inteligência e contexto ao mesmo tempo, então o usuário escolhe para cada tarefa.
Como montaram
Nativo desde o começo
O app original para Mac foi escrito em Swift com AppKit. O time deixou o SwiftUI de lado porque não tinha certeza de que ele não aumentaria os travamentos ou pioraria o desempenho, coisas que um launcher aberto dezenas de vezes por dia não pode ter.
Extensões em React, desenhadas como interface nativa
A Raycast queria que as extensões parecessem parte do app, e não um mini-app dentro de uma moldura web. Quem desenvolve escreve em React e TypeScript, e um reconciler próprio do React transforma os componentes numa árvore em JSON que o lado em Swift desenha com AppKit, comparando cada render com JSON Patch.
A primeira tentativa rodava as extensões no JavaScriptCore, mas ninguém conseguia usar os pacotes npm de sempre. Aí a Raycast passou para o Node.js, com cada extensão numa worker thread própria, limite de memória e travamento isolado, conversando com o app por JSON-RPC 2.0.
Raycast 2.0: um stack híbrido para chegar ao Windows
Para chegar ao Windows, a Raycast reescreveu o app do zero. Cada sistema tem um host nativo (Swift e AppKit no macOS, C# com .NET 8 e WPF no Windows) que carrega um front único em React e TypeScript na web view do sistema e cuida de um processo Node.js de longa duração com as regras de negócio.
O time avaliou Electron, Tauri, Flutter, Qt e React Native para desktop. O Electron complicava a integração profunda com o sistema e obrigava a embutir o Chromium no macOS, e o Tauri dava menos controle nativo e parecia novo demais para apostar a empresa nele. O preço é manter a própria comunicação entre processos, e o app passou a usar mais memória que a versão 1.
O Rust fica nos pontos em que desempenho ou portabilidade pesam mais que a comodidade: uma camada de dados que o app de iOS também usa, a sincronização na nuvem e um indexador de arquivos que roda num processo à parte.
O indexador existe porque o Windows não tem um índice do sistema bom o bastante para a Raycast. Lá, ele lê direto a Master File Table do NTFS para varrer os discos rápido.
A Raycast AI começou só com modelos da OpenAI. Em abril de 2024, depois de muito pedido da comunidade, entraram Anthropic, Perplexity e modelos abertos servidos pela Groq, com o argumento de que nenhum modelo ganha ao mesmo tempo em velocidade, inteligência e tamanho de contexto.