# HypeApps > HypeApps lets web developers build native iOS and Android apps the way they build for the web — by sending HTML-like markup from a server. Write **HAM** (Hypermedia Application Markup), HypeApps renders it as a real native app with access to camera, sensors, local storage, and platform UI. No Swift, no Kotlin, no React Native, no JavaScript build pipeline. **Tagline:** *Simple markup, stunning apps. Build for the phone like you build for the web.* **Status:** Pre-launch. The website at hypeapps.dev is collecting emails and "dream app" submissions from web developers who want in. The framework itself has been used in production by its creator for ~7 years, but it isn't publicly available for download yet. There is no signup, no SDK, no npm package, no install command — only a waitlist. **Creator:** Lazarus Morrison. Solo, indie, community-driven. Not a VC-backed startup. --- ## Who HypeApps is for The target user is a **web developer who finds mobile development too painful**. Specifically people who: - Already think in HTML, utility classes, and server-rendered partials - Like htmx, Alpine.js, Tailwind, Laravel/Rails/Django-style server rendering - Want to ship a real native app without learning Swift/Kotlin or wrestling with a JS bundler, Metro, or Xcode toolchains - Don't want to wrap a website in a WebView and call it an app HypeApps is **not** aimed at: - Teams already happy in React Native, Flutter (direct), or SwiftUI/Jetpack Compose - Apps that need to work fully offline with no server (HypeApps is server-driven by design) - Game development or anything needing heavy custom rendering --- ## Why it exists Building a mobile app traditionally means picking a new language, a new framework, a new toolchain, app-store provisioning, and a redesign for "mobile-first" idioms — even if you already know how to ship a web app on a server. HypeApps takes the htmx insight ("just send HTML over the wire") and applies it to native mobile. The server you already have can drive a real native app: respond with markup, the app renders real Material widgets, partials swap in like in htmx, local state works like in Alpine, styles compose like in Tailwind. The dream is to make shipping a mobile app feel like putting up an HTML page at a URL. --- ## Server-driven UI, not WebView HypeApps is a **server-driven UI** (SDUI) framework — the same architectural pattern Airbnb uses for search, listing detail, and checkout (their "Ghost Platform"), and that Netflix, Lyft, DoorDash, Block/Square, Shopify, and the open-source Hyperview (Instawork) ship in production. The closest public analog is **Hyperview**: a thin native client fetches markup, renders native widgets. Same idea here, different stack (Flutter instead of React Native, HTML-like markup instead of XML, with htmx-style swaps and Alpine-style reactivity layered in). This is emphatically **not** a WebView wrapper. The HypeApps client parses HAM and renders real native widgets through Flutter's renderer. No browser is in the loop at runtime. Gestures, scrolling, animations, accessibility, and keyboard are all native. ### Why this is App-Store-safe Apple's [guideline 2.5.2](https://developer.apple.com/app-store/review/guidelines/#software-requirements) prohibits apps from downloading code that "introduces or changes features or functionality of the app." The industry-standard reading, articulated bluntly by the [Hyperview maintainer](https://github.com/Instawork/hyperview/discussions/696): markup that arranges and parameterizes components **already shipped in the binary** is data, not code — "the XML responses are not modifying the binary code to unlock new iOS SDKs." HypeApps holds that same line through a set of design invariants: - **Closed vocabulary.** The tags, attributes, triggers, swap modes, reactivity operators, and media commands are a fixed enumeration baked into the binary. The server can only arrange and parameterize what already ships. - **No `eval` / no scripting escape hatch.** There is no tag or attribute that lets the server inject Dart, JS, Wasm, or any general-purpose code. - **No dynamic native-API binding.** The server cannot name an iOS or Android API and have the client call it. Native capability is reachable only through dedicated tags with handlers in the binary. - **Bounded expression language.** The reactivity layer (`@click="$x = $x + 1"`, `@show`, `@text`, `@on.*`) is a small, non-Turing-complete expression evaluator: assignment, four arithmetic operators, logical not, string/numeric literals, variable reference, statement chaining. No loops, no recursion, no function definitions, no I/O — spreadsheet-formula expressive power. - **No remote-loaded plugins or codecs.** The framework never downloads Dart code, native libraries, or bytecode at runtime. The full internal policy doc lives at [`docs/SDUI_AND_APP_STORE.md`](docs/SDUI_AND_APP_STORE.md) in the repo, and the public-facing version of the argument lives at [`/faq`](/faq). The bright line: **the server can change what users see, what they tap, where they navigate, and how the screen reacts — but it cannot give the app a capability it didn't already ship with.** That's the line every successful SDUI deployment holds, and it's the line that keeps HypeApps unambiguously on the data side of 2.5.2. --- ## How HypeApps relates to neighbors | Compared to | How HypeApps differs | | --- | --- | | **React Native / Expo** | No JS runtime, no Metro, no bundler. Markup is sent from your server (any language). Updates ship by editing files, not a TestFlight rebuild. | | **Flutter (direct)** | Same render engine, but you write HAM markup instead of Dart widget trees. You don't need to know Dart to build the UI. | | **Hyperview** | Hyperview uses XML over React Native. HypeApps uses HTML-style markup over Flutter, with htmx-style partial swaps and Alpine-style reactivity baked in. | | **WebView wrappers (Capacitor, Cordova)** | HypeApps renders **native** widgets, not a webpage in a browser. Animations, scrolling, platform feel are real native. | | **PWA** | A PWA is still a website. HypeApps produces a real app-store binary with full sensor/camera/native-UI access. | | **htmx / Alpine / Tailwind on the web** | HypeApps borrows the *patterns* (fetch partials, reactive variables, utility classes) and applies them inside a native app. | --- ## Glossary - **HAM** — Hypermedia Application Markup. The HTML-like syntax users write. Files typically end in `.html` or `.ham`. - **Tag** — An HTML-style element like ``, ` ``` 2. **Navigation (full-screen push)** — push a new screen onto the navigation stack. ```html Go to Profile ``` 3. **Front-end reactivity (Alpine-style)** — local state changes with no server round trip. ```html ``` --- ## Minimal App ```html

Hello World

Welcome to HypeApps

``` --- ## Tags ### Compound / structural ``, ``, ``, `` (brand-able title: `title_style="font-mono font-weight-700 tracking-widest"` routes through the standard text tokens incl. light:/dark: colors; `title_image="assets/images/wordmark.png"` swaps in a pixel-exact wordmark — server path, `file:`, or http, height-capped to the bar, theme-switchable with the standard prefixes (`title_image="light:ink.png dark:white.png"`, unprefixed = both themes), `title_reveal="scroll"` hides the title at the top of the page and fades it in as the content scrolls — the large-title-collapse pattern for pages whose hero carries the brand (bare number = px offset at full visibility, default 160), `title` stays as the accessibility label and a broken image falls back to the text title), `` (alias ``) / `` (`mode="slide"` pushes content aside, default is overlay; an `id`'d drawer opens/closes via `action="#id.open"` / `#id.close` / `#id.toggle`, aliases `#id.show`/`#id.hide` for open/close), ``, ``, `
`, ``, `` ### Layout `` (preferred spelling) / `` / `
` / `` (general-purpose container — all first-class aliases of the same element; `` remains fully supported — supports all control attributes; a childless box with a size and/or background behaves like a childless HTML div and fills the cross axis, so `` is a full-width rule — boxes with children hug their content), `
` / `
`, HTML semantic containers `
`/`