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 RC
Target SDK
Expo 57
Current work
Capability prototypes
Compatibility harness
resolving contract

import { Battery } from "@better-native/battery"

import * as Effect from "effect/Effect"

const power = Battery.getPowerStateAsync.pipe(

Effect.provide(Battery.live),

)

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 each capability package against a concrete surface derived from pinned upstream revisions.

runtimeEffect 4.0 RC
platformExpo 57
statusfour native prototypes
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

    Capability prototypes

    Battery, Network, KeepAwake, and SecureStore on the shared harness.

  2. Next

    Native evidence

    Expand paired device runs and blind developer-experience pilots.

  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