write once, compile native

Write once,
compile native

Nativ is a compiler, not a framework. One .nativ source becomes a real Xcode project and a real Gradle project — standalone SwiftUI and Jetpack Compose you own. No runtime. No bridge. No webview.

Try Nativ Quick start Private during initial development · public repo release coming soonCargo package is public: cargo install nativ.
SwiftUI · Xcode Compose · Gradle 0 KB runtime in your binary
app.nativ you write
app Counter:
  screen Home:
    state count = 0

    text "You tapped {count}×", big, bold
    button "Tap me":
      count += 1
$ nativ build
 parsed 1 screen · 0 errors
→ ios/      SwiftUI · Xcode project
→ android/  Compose · Gradle project
done in 0.18s

// Cargo package is public now · Homebrew and curl installers pending packaging

$ {{ installCmd }}

see it compile

The same screen, twice native.

Describe the app once. Nativ emits idiomatic SwiftUI and idiomatic Jetpack Compose — not one cross-platform skin, but two apps that each feel native to their platform.

src/wallet.nativyou write
model Tx:
  merchant: text
  amount: money
  category: Category

screen Wallet:
  state balance = 4820.50
  state txns = Tx.recent()

  text "Total balance", gray
  text "{balance}", big, bold

  row:
    action "Add",  action "Send",  action "Request"

  text "Recent activity", bold
  each tx in txns:
    TxRow(tx)
    on tap: go to TxDetail(tx)
build/ios/WalletView.swiftnativ emits
Text(balance, format: .currency(code: "USD"))
    .font(.largeTitle.bold())

ForEach(appState.txns) { tx in
    TxRowView(tx: tx)
        .onTapGesture { router.path.append(tx) }
}

Button { add() } label: {
    Label("Add", systemImage: "plus")
}
.buttonStyle(.borderedProminent)
…/WalletScreen.ktnativ emits
Text(
    text = formatCurrency(balance),
    style = MaterialTheme.typography.headlineLarge
)

appState.txns.forEach { tx ->
    TxRow(tx = tx, onClick = {
        navController.navigate("tx/${tx.id}")
    })
}

FilledTonalButton(onClick = ::add) {
    Icon(Icons.Default.Add, null)
    Text("Add")
}

One source, two native apps — fully interactive. Tap actions, menus, transactions, and detail buttons.

why now

AI can write your app.
It can't make it yours.

A new wave of tools generates mobile apps from a prompt. Almost all of them ship a webview, a cross-platform runtime, or a fragile interpreter you don't control. The intent is real — but the output is rented.

Nativ compiles that same intent into native source code you own, edit, and ship under your own name. As AI raises the supply of generated apps, the value moves to whoever owns real, native output. That's the layer Nativ builds.

most AI output
webview wrapper runtime lock-in black-box renderer
with nativ
Owned native code.
Yours to ship, edit, and sell.

why it matters

Four things Nativ refuses to put between you and the platform.

Every cross-platform tool taxes you somewhere. Nativ's answer is to disappear at build time.

No runtime lock-in

Generated code has zero Nativ dependency. Delete the compiler and your app still builds — it's just SwiftUI and Compose.

No bridge tax

No JS bridge, no serialization layer between UI and logic. Native views call native APIs directly, at full speed.

No custom renderer

Nativ emits the platform's own toolkits — SwiftUI and Compose — not a reimplementation that drifts from the OS.

No vendor control

0 KB of Nativ ships in your binary. We can't meter it, deprecate it, or revoke it. The apps you build are yours.

how it compiles

A real compiler, end to end.

Source parses to a typed intermediate representation, then lowers to two native backends. The same IR guarantees the iOS and Android apps stay in lockstep.

.nativ
source
parser
lexer · AST
typed IR
checked · lowered
SwiftUI
→ Xcode project (.xcodeproj)
Jetpack Compose
→ Gradle project (build.gradle)

Written in Rust · golden-tested codegen · diagnostics source-mapped back to your .nativ line.

why this is a platform

Small surface today. Platform-shaped.

The hard part of cross-platform isn't the editor — it's a correct compiler. That's the moat, and it compounds.

01 · market

Every app starts on mobile

Native iOS and Android are the default surface for consumer and most B2B products. The market isn't a niche — it's the floor.

02 · pain

Two codebases, forever drifting

Teams maintain Swift and Kotlin in parallel — double the surface, double the bugs, permanent platform drift. One source removes the drift by construction.

03 · tailwind

AI raises the supply of apps

As generation gets cheap, the scarce thing becomes real native output. A compiler that LLMs can target is the natural backend for AI app-building.

04 · moat

A compiler is years, not a wrapper

Correct lowering to two idiomatic backends is deep compiler engineering. It can't be cloned in a weekend, and every fixed edge case widens the lead.

05 · ownership

Output is an asset, not a rental

Generated native code is something teams can keep, audit, and sell. That ownership is the wedge no runtime-based competitor can copy.

The interface to every AI that builds real mobile apps.

built like infrastructure

Engineered to be trusted with your codebase.

Nativ is built like a compiler, not a content generator — deterministic, tested, and transparent about every line it emits.

$ nativ check src/app.nativ
app.nativ:8:3 error: unknown state `titel`
  8 |   button "Add", bind: titel
    |                      ^^^^^ did you mean `title`?
 mapped to source — not generated code
Rust compiler core
A real parser, type checker, and IR — not string templates.
Golden-tested output
Generated SwiftUI and Compose are checked against verified snapshots on every change.
Source-mapped diagnostics
Errors point at your .nativ line — never at code you didn't write.
CLI · LSP · live preview
nativ build and nativ preview, plus editor completion and diagnostics over LSP.

where this goes

From compiler to app platform.

The compiler is the foundation. On top of it sits a path from idea to a shipped, owned native app — for engineers today and vibe-coders next.

next

Vibe-code real native apps

Describe an app in plain language; get owned native code out — no platform expertise required.

planned

Hosted previews

Share a live build link of your screens before a single local toolchain is installed.

planned

Cloud builds

Compile to .ipa and .aab in CI — no local Xcode or Android Studio.

planned

App-store delivery

One pipeline from .nativ source to submitted builds on both stores.

the bet

AI-assisted generation

LLMs target .nativ and get real SwiftUI and Compose out — Nativ as the native backend for AI.

honest status

Early development. Genuinely.

We'd rather show you a real compiler that does a little than a demo that fakes a lot. Here's exactly where it stands.

works today
  • .nativ compiles to SwiftUI + Compose source
  • Real Xcode and Gradle project output
  • Core elements: text, button, field, toggle, list
  • State, navigation, and screen routing
  • CLI build, preview, and source-mapped diagnostics
not yet
  • Full widget and component coverage
  • Complex custom layouts and animations
  • Third-party package ecosystem
  • Hosted cloud builds and delivery
  • Production-scale, App-Store-shipped apps

nativ build

Build apps you own

One source. Two native platforms. Zero runtime between you and the apps you ship. Try the compiler and read the code it writes.

Try Nativ Private during initial development · public repo release coming soonCargo package is public: cargo install nativ.