Better NativeGitHub
Building in public

Effect × Expo

Reliable Expo APIs, by construction.

Effect-native APIs for Expo, starting with a compatibility suite that validates the native surface before you build on it.

Pinned runtime
Effect 4 beta
Target SDK
Expo 57
Current work
Compatibility baseline
Compatibility harness
resolving contract

import { Effect, Schema } from "effect"

const device = Effect.gen(function* () {

const battery = yield* Device.battery

return Schema.decodeUnknown(Battery)(battery)

})

01 Resolve
02 Run
03 Result
9:415G

Effect Mobile

native trace

Resolve requirement

Checking the native module surface.

01 / 03working
The same execution model, from device to service.
01 / Foundation

Compatibility is a feature, not a footnote.

A disciplined bridge between Effect and the Expo ecosystem.

The harness tests a concrete baseline against pinned revisions before capability packages are introduced.

runtimeEffect 4.0 beta
platformExpo 57
statusestablishing baseline
The operating model

One predictable path from native work to application code.

01

Discover

Derive the surface area from the pinned Expo and Effect revisions.

02

Validate

Execute a real compatibility denominator before abstraction.

03

Compose

Expose Effect-native capabilities with typed errors and requirements.

02 / Roadmap

Build the base once. Let every capability inherit it.

  1. Now

    Compatibility harness

    Pinned revisions, generated manifest, and an executable suite.

  2. Next

    Capability packages

    Small, explicit APIs around native and Expo features.

  3. Then

    Developer preview

    A stable surface for application teams to evaluate in production.

Questions, before code

A small surface, with deliberate decisions.

better-native / 0.0.0

The reliable path to native.

View the repository