O desenvolvimento cross-platform mobile tem um dilema antigo: ou você aprende a linguagem de cada plataforma, ou adota um framework intermediário que abstrai ambas e aceita os trade-offs. O Skip propõe algo diferente. Em vez de criar uma camada nova por cima de tudo, ele pega o que o desenvolvedor iOS já conhece (Swift e SwiftUI) e transpila para Kotlin e Jetpack Compose. O resultado é um app genuinamente nativo em ambas as plataformas, sem runtime extra, sem interpretador, sem garbage collector no iOS.

Em 21 de janeiro de 2026, a versão 1.7 abriu o código completo do motor de transpilação — o skipstone — e eliminou toda exigência de licença paga. Para quem trabalha com Swift no dia a dia e sempre quis publicar em Android sem reescrever tudo, essa mudança tira a principal barreira de adoção.

O que é o Skip

Skip é um transpilador de Swift para Kotlin. Ele lê código Swift usando o SwiftSyntax (a biblioteca de parsing open source da Apple), monta uma árvore sintática detalhada e traduz essa árvore para Kotlin equivalente. Para a camada de UI, o SwiftUI é mapeado para Jetpack Compose, o toolkit declarativo do Android.

O projeto existe desde 2023. Nos primeiros dois anos operou como produto pago: empresas acima de um certo faturamento precisavam de licença para usar. Desenvolvedores indie e apps gratuitos tinham acesso livre. Esse modelo gerava uma preocupação legítima na comunidade: "e se a empresa fecha? e se é adquirida e desligada?" A resposta veio com a abertura total do código.

Hoje o Skip está no GitHub sob a organização skiptools, com mais de 1.400 commits e 711 releases acumulados. A documentação vive em skip.dev.

Como funciona a transpilação

O pipeline tem quatro etapas:

  1. O SwiftSyntax faz o parse do código Swift em uma árvore sintática granular
  2. O transpilador analisa essa árvore e gera uma árvore equivalente em Kotlin
  3. O Kotlin gerado é empacotado junto com o projeto Android
  4. Um único codebase Swift produz dois apps nativos, um em SwiftUI e outro em Jetpack Compose

O nível de fidelidade é alto. O transpilador preserva comentários e formatação do código original. O Kotlin resultante, segundo a documentação do Skip, "é frequentemente indistinguível de código escrito à mão."

Na prática, o mapeamento de UI é onde mora a complexidade. O ViewBuilder do SwiftUI (baseado em ResultBuilders) não tem equivalente direto em Kotlin. O Skip converte declarações ViewBuilder em chamadas de funções Compose aninhadas. O resultado é funcional, mas mecanicamente gerado. As diferenças arquiteturais entre SwiftUI e Compose ficam evidentes no código Kotlin.

Para APIs de plataforma, o Skip mantém bibliotecas open source que espelham frameworks da Apple (Foundation, Observation, SwiftUI) no Android via Swift Package Manager. Isso permite que pacotes Swift cross-platform existentes funcionem sem modificação.

O que o Skip 1.7 trouxe

A versão 1.7, lançada em 21 de janeiro de 2026, fez três coisas:

  • Abriu o código do skipstone, o motor que cuida de criação de projeto, plugins de Xcode e SwiftPM, transpilação de código, bundling de recursos e localização, criação de bridge JNI, empacotamento de app e exportação de projeto
  • Removeu toda exigência de licença, sem trial, sem chave, sem assinatura
  • Mudou o modelo de financiamento para GitHub Sponsors e patrocínio corporativo

A decisão de abrir o skipstone é o ponto mais significativo. Antes, mesmo que as bibliotecas de suporte fossem open source, o motor de transpilação era fechado. Um desenvolvedor não conseguia auditar o que acontecia entre o Swift de entrada e o Kotlin de saída. Agora pode.

Skip na prática

Um componente SwiftUI no Skip se parece exatamente com SwiftUI convencional:

import SwiftUI

struct CounterView: View {
    @State private var count = 0

    var body: some View {
        VStack(spacing: 16) {
            Text("Contagem: \(count)")
                .font(.title)

            Button("Incrementar") {
                count += 1
            }
        }
        .padding()
    }
}

Esse código compila nativamente no iOS via Xcode. No Android, o Skip transpila para Kotlin com Jetpack Compose. O resultado é um componente nativo em cada plataforma, não uma webview, não um canvas customizado.

Os testes também são compartilhados. O SkipUnit mapeia APIs do XCTest para JUnit, o que permite rodar a mesma suite de testes em ambas as plataformas via GitHub Actions.

O fluxo de desenvolvimento usa o Xcode como IDE principal. Plugins SwiftPM invocam a transpilação automaticamente a cada build. Módulos que não mudaram são pulados, o que mantém o tempo de compilação razoável.

Onde o Skip se encaixa no ecossistema cross-platform

O cenário mobile cross-platform em 2026 tem quatro opções relevantes, cada uma com uma proposta diferente.

Flutter comanda cerca de 46% do mercado entre desenvolvedores mobile. Renderiza UI com seu próprio motor gráfico (Impeller, sucessor do Skia), e o resultado é consistência pixel-perfect entre plataformas. A linguagem é Dart.

React Native usa componentes nativos e melhorou com a New Architecture e o Hermes V1. Ideal para times com experiência forte em JavaScript e TypeScript.

Kotlin Multiplatform (KMP) compartilha lógica de negócios entre plataformas, mas deixa a UI nativa para cada uma. Mais que dobrou em adoção entre 2024 e 2025, saindo de 7% para 18% no JetBrains Developer Ecosystem Survey. Netflix, Google Workspace e Cash App usam em produção.

Skip ocupa um nicho que ninguém mais ocupa: desenvolvedores que já sabem Swift e SwiftUI e querem alcançar Android sem aprender outra linguagem ou framework. Não compete com Flutter ou React Native na amplitude. Compete na profundidade de integração com o ecossistema Apple.

A diferença prática: no Flutter, você aprende Dart e os widgets do Flutter. No React Native, você trabalha com JavaScript e a bridge nativa. No KMP, você escreve Kotlin e pode manter UI nativa. No Skip, você escreve SwiftUI do jeito que já escreve, e o transpilador cuida do resto.

Limitações e quando evitar

O Skip é transparente sobre onde não funciona bem.

Projetos existentes com muitas dependências iOS-only são problemáticos. A migração "não é trivial", segundo a própria documentação. A maioria dos apps iOS maduros usa bibliotecas que não têm equivalente Android, e o Skip não inventa um.

O framework funciona melhor em projetos novos ou apps com poucas dependências externas. Quem já tem um codebase iOS grande com CocoaPods, UIKit legado e SDKs proprietários vai ter trabalho.

O Skip depende do Xcode como IDE. Desenvolvedores Android que não usam Mac simplesmente não conseguem entrar nesse fluxo. Isso limita a adoção a times que já operam no ecossistema Apple.

Tem também a questão de maturidade do ecossistema. O Flutter tem milhares de packages no pub.dev. O React Native tem o npm inteiro como backstop. O Skip interopera com "milhares de pacotes Swift cross-platform", segundo a documentação. Mas a realidade é que muitos pacotes Swift populares usam APIs iOS-only que não transpilam.

Conclusão

O Skip não vai substituir Flutter nem React Native. Não é esse o objetivo. Ele resolve um problema específico para um público específico: desenvolvedores iOS que sabem Swift e SwiftUI, trabalham em apps pequenos a médios e querem publicar em Android sem manter dois codebases.

A abertura do skipstone com a versão 1.7 remove a incerteza sobre a sustentabilidade do projeto. Qualquer desenvolvedor pode inspecionar, contribuir e até forkar o motor de transpilação se necessário. O modelo de financiamento via GitHub Sponsors não é garantia de receita eterna, mas é mais transparente que uma licença fechada.

Para quem se encaixa nesse perfil, time iOS-first com app novo ou com poucas dependências, vale gastar uma tarde configurando um projeto de teste. O código está em github.com/skiptools e a documentação em skip.dev.

Referências pesquisadas nesta publicação