Why GEA
Web and app developers know interfaces but can't reach the hardware without learning C and board SDKs, and embedded engineers who already ship device GUIs are stuck hand-building every widget in C, or locked into a proprietary GUI builder. The web solved this years ago: components, reactive state, CSS, a fast iteration loop. That solution just never reached the device. GEA takes it there.
A better workflow, at native speed
GEA improves how you build for a device without costing you performance. The usual ways to make device development nicer slow the device down. GEA doesn't.
Build it the way you build for the web
You write the UI in TypeScript, JSX and CSS, and state lives in reactive stores. You iterate against a browser preview that runs the same engine as the device, so you see changes without reflashing. The code stays yours, in your repo, with no proprietary editor in the loop.
As fast as hand-written native code, often faster
On GEA's own benchmark, the compiled TypeScript matches or beats hand-written C++ on 15 of 17 workloads. That is why an embedded engineer can move to the nicer workflow without paying a speed penalty for it.
Why we built it
Why you should use GEA
Use the skills you already have
You write TypeScript, JSX and CSS. That is all you need to put a real UI on a device.
- It's not just the languages: the whole web model comes with you — components, reactive state, CSS layout, the dev loop you already know. No C or C++, no board SDK, no new DSL.
- One codebase runs on the device and in the browser simulator, so you build and preview the way you already do.
- You reach microcontrollers today, and embedded Linux, macOS and iOS, without becoming a firmware engineer first.
- Because a widget is just code, you can package it, open-source it, and install someone else's the way you already do on the web. That kind of sharing and reuse is something embedded UIs have never really had.
Keep your native output, change how you author it
You already ship native GUIs in C with LVGL or Qt. GEA keeps that native output and the small footprint, and changes the layer where you author it.
- Write reactive TypeScript and CSS instead of hand-managing widgets and style structs.
- Hold state in stores and let the UI update itself, instead of wiring every widget and invalidation by hand.
- Get CSS layout, animations and a Canvas 2D API.
- Move the same design from one board to another without board-specific changes. A different screen, resolution or pinout normally means editing the firmware; with GEA you point the build at another board and flash the same UI to it.
- The browser preview runs the same engine as the device, so you iterate in the browser and stop reflashing just to see a change.
How it compares
Honest comparisons against the closest tools, with the trade-offs named.