One codebase. MCU to desktop. Native.

GEA is a stack for writing one TS codebase that compiles to real native binaries on MCUs, embedded Linux, macOS, and iOS.

See examples
Starfield.tsx tsx
Starfield · chrome
Access more GEA components →
Live on hardware

A 3D CSS cube at 60 fps. On an ESP32.

Written in TypeScript, JSX, and real CSS — compiled to completely native code. The same stack runs on ESP32, embedded Linux, iOS, and macOS.

Work with us
An ESP32 board running a GEA-rendered UI ESP32 · 3D CSS cube · 60 fps
Targets

One codebase. Four native binaries.

Microcontroller board with an integrated display running a GEA dashboard
Microcontroller

MCU

TS components compile to native code on microcontrollers.

Embedded Linux touch panel running a GEA smart-home UI
with SELinux

Embedded Linux

Native binaries with a SELinux-aware lifecycle.

iOS app built with GEA, held in hand
mobile

iOS

The same TS components, compiled to a native iOS binary.

macOS desktop app built with GEA
desktop

macOS

Cocoa bindings, real native binary.

The parts of GEA

Use the whole stack, or just the compiler. Each part has one job.

geatsc

The compiler

Compiles TS to native code for every target.

geaos

The OS layer

The system foundation for serious embedded deployments.

runtime

The native runtime

The component + store model, reactivity, and host APIs.

Ahead-of-time native

TypeScript apps compile to native C++

geatsc vs Node.js

How many times faster the same TypeScript runs once geatsc compiles it to native code, versus running it on Node.js.

  • Object creation11.3×
  • Prime sieve10.6×
  • String concat10.3×
  • Matrix multiply9.7×
  • Binary trees8.4×
  • Nested loops7.6×
  • Array write6.3×
  • Fibonacci6.3×
  • Method calls4.6×
  • Closures3.7×
  • Array read3.4×
  • Factorial2.2×

Best of 5 runs on the same TypeScript source — byte-identical output to Node. Within-row ratios; absolute times measured under machine load, so treat as directional.

Startup time
min observed median @ loadavg ~50 runs
cpp3.7 ms28.4 ms450
node21.8 ms46.6 ms65

How fast each one gets from launching the process to running your code, measured on a busy machine. The native binary geatsc produces is ready in a few milliseconds; Node.js spends most of its startup booting V8 first.

The CSS engine

Real CSS yes, really.

Flexbox.

ticked on-device So smooth .

On the metal.

on a microcontroller

You already know CSS. Now it runs native, on the device.

Read the styling story
The Canvas API

Canvas, or JSX.
Code your way.

Declarative TSX and real CSS when you want layout. A browser-shaped Canvas 2D context when you want the pixels.

Explore the canvas
Where GEA ships

From the wrist to the cockpit.

See where you can use GEA
Built for developers & teams

A better developer experience — on every target.

GEA collapses an embedded toolchain, a desktop stack, and a mobile stack into one TS workflow your team already knows. Better ergonomics, native performance, one codebase to staff and maintain.

Your web engineers can ship hardware on day one. No second team, no second language, no per-target rewrite.

Why your team should use GEA
Built with GEA

Your TS. On any screen.

geaOS — from watch faces to thermostats to games, one TS codebase across every board.

How it compares

The only stack that spans all four — native.

Framework Targets You write Output License
GEA MCU · Linux · macOS · iOS TS Native binary GPL / Commercial
Slint MCU · Linux · desktop · mobile · web .slint DSL5 Native GPL / Royalty-free / Commercial
Qt Desktop · mobile · embedded3 · web C++ / QML Native Commercial / LGPL
LVGL MCU · embedded C Native · C lib MIT
LVGL Pro MCU · embedded XML / C Native · C lib Commercial
Moddable MCU only JavaScript Bytecode VM (XS) LGPL/GPL / Commercial2
Flutter Mobile · desktop · web4 Dart Native BSD
React Native Mobile1 JS / TS JSI / bridgeless MIT
1 React Native also targets Windows & macOS (Microsoft) and web as out-of-tree, separately maintained platforms. 2 Moddable SDK is a license combination — LGPLv3 (runtime), GPLv3 (build tools), Apache-2.0 (parts of XS) — plus a paid commercial license. 3 Qt's microcontroller support is a separate product (Qt for MCUs / Quick Ultralite), commercially licensed; the rest is Qt 6. 4 Flutter's web build compiles to JavaScript/WebAssembly, not a native binary. 5 Slint pairs the .slint UI markup with app logic in Rust, C++, JavaScript, or Python.
Performance

Pinned to the top. Still pushing.

GEA compiles your TypeScript and CSS to native code ahead of time — no interpreter or VM on the device.

See the benchmarks

GEA on the web

On the web

On the web, GEA is served by @geajs/core and its family — which has its own home.

@geajs/core @geajs/mobile @geajs/ui @geajs/ssr
geajs.com
Build Ship Scale Support GEA Teams
Partnerships

Work with us.

We help product teams design and ship native UIs on the surfaces GEA targets — from microcontrollers to embedded Linux panels and macOS apps. If your team needs engineering help, a reference design, or a partnership with us, this is the door.

Chip vendors and board manufacturers: we're keen to land GEA cleanly on your silicon. Drivers, peripherals, packaging.

Get in touch

Ship one codebase to every surface.