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#

  1. Sign in and create an app: waid login selects your ICE environment; waid new scaffolds a Vite + React + Tailwind + shadcn project.
  2. Develop it: waid dev gives you hot reload while you build the UI in React.
  3. Configure it: one waid.config.json sets your app's name, icon, identity, and the device capabilities it needs.
  4. Build it: waid build --target <platform> produces the native artifact (or the web bundle).
  5. Ship it: waid deploy installs 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.

Start here#