Introduction
WAID lets you ship one React app to every platform. You build an ordinary Vite + React + Tailwind app; WAID packages it into native apps for desktop, iOS, and Android, and serves it as a normal web app for the browser, from a single codebase, with no per-platform forks.
You write the React you already know. There are no WAID-specific components, directives, or APIs to learn. Anything that builds to a static Vite bundle works. On native platforms your app is rendered by a bundled GPU runtime, so it looks and performs the same everywhere; on the web it's a real web app (real DOM, SEO, accessibility, DevTools).
What you do with WAID#
- Sign in and create an app:
waid loginselects your ICE environment;waid newscaffolds a Vite + React + Tailwind + shadcn project. - Develop it:
waid devgives you hot reload while you build the UI in React. - Configure it: one
waid.config.jsonsets your app's name, icon, identity, and the device capabilities it needs. - Build it:
waid build --target <platform>produces the native artifact (or the web bundle). - Ship it:
waid deployinstalls it on a device; sign a release for the app stores.
Generate and sync apps and services#
Use waid app generate-mcp and waid service generate-mcp to draft MCP tools
from frontend and service source for review. Neither needs a login.
After review, waid app sync and waid service sync submit immutable candidates to
ICE Develop using your signed-in environment. Publication and tenant installation
are separate ICE steps. See the lifecycle reference.
Is WAID for you?#
WAID is a good fit when you want one React codebase to run natively on mobile and desktop and as a real website, with consistent output across platforms.
It may not be the right fit if you need a single platform-perfect native app (use that platform's native toolkit), or deep OS integrations beyond the capabilities WAID exposes.