TypeScript logic. Native UI everywhere.
Write your app's business logic once in TypeScript. Run it inside any native platform. No web views. No compromises. The native UI stays fully native.
How it works
One spec file. Codegen handles the rest.
Declare a TypeScript interface. Every method returns a Promise.
// counter.spec.ts
export interface CounterSpec {
increment(by: number): Promise<number>
decrement(by: number): Promise<number>
value(): Promise<number>
}Codegen produces a typed proxy class. Import it and write pure business logic.
import { Counter } from "./generated/Counter"
const counter = new Counter()
export async function add(n: number) {
return counter.increment(n)
}Codegen also produces a Swift protocol. Implement it with an actor.
actor AppCounterModule: CounterModule {
private var count = 0.0
func increment(by: Double) async throws -> Double {
count += by; return count
}
}Built with intent
Lessons from React Native's new architecture, applied from the start.
Type-safe bridge
A single .spec.ts interface generates both the Swift protocol and the TypeScript proxy. Type mismatches are caught at compile time.
No JSON overhead
Values cross the bridge as structured enums, not serialized strings. The runtime dispatches directly into Swift actors.
Explicit threading
JS runs on a dedicated thread. Swift modules run on their own actor executor. The main thread is yours.
Functional by design
Business logic is pure TypeScript. Side effects flow through the bridge. Platform capabilities are explicit dependencies.
One logic, many platforms
The TypeScript bundle is platform-agnostic. Swap the Swift implementation for Kotlin or a C binding without touching your logic.
Promise-native
The bridge maps Swift async/await to TypeScript Promises. No custom async model to learn — just use what JS already does well.
Trusted by industry leaders
Completely real quotes from completely real people.
“I have rewritten this in Rust. It is now 0.3ms faster and nobody on my team understands it. Ship it.”
“I asked our 10x engineer to evaluate Yolk. He said it works on his machine. We have been unable to reach him since.”
“Noch ein verdammtes, bescheuertes JS-Framework. Ich werde euch alle abfackeln, ihr degeneriertes Pack!”
“Look, we tried Excel macros, okay? A total disaster. A catastrophe. They kept crashing all the time, very weak, very sad. But this framework? It’s huge. We built a beautiful wall between the business logic and the UI. The greatest technological wall in history, maybe of all time. The logic is very smart, a very high IQ, believe me. Nobody separates things better than us, it’s incredible.”
“I told the board that a single drop of TypeScript could detect any bug in the entire application. They believed me. We raised four hundred million dollars. It turns out Yolk actually does what I lied about. I am writing this from a minimum-security facility where I have finally achieved the 'purity' I always talked about. 10/10 would defraud again.”
“I have become death, the destroyer of legacy codebases. I thought we were just building a type-safe bridge, but the chain reaction of Promises was uncontrollable. The entire production environment vanished in a flash of amber-colored light. My conscience is clear: the implementation was elegant, and the fallout was minimal.”