# llimphi-wasm-app-sdk *Read this in English: [README.md](README.md).* Lado guest de las apps WASM Tier 3. Una app implementa `WasmApp`: un `Model` propio, una transición `update(&mut self, Msg)` y una vista `view(&self, &mut Ui) -> WireNode`. La UI se arma con los constructores libres de `llimphi_wire_view` (`col`/`row`/`text`) para lo no-interactivo y con el `Ui` para lo interactivo (`button`/`text_input`/`checkbox`). **Eventos con payload.** El `Ui` asigna un `EventId` a cada control y guarda su handler. El nodo lleva sólo el id; el host, al disparar, manda `dispatch(event_id, payload)`. El guest mira su tabla y reconstruye el `Msg`: un botón rinde su `Msg` fijo, un input rinde `f(texto_tecleado)`, un checkbox `f(nuevo_estado)`. Por eso **`Msg` ya no cruza la frontera** — sólo el id y el `EventPayload` —, así que `Msg` se libera de (de)serializar: basta `Clone`. `export_wasm_app!` genera el ABI: `wasm_init`, `wasm_view() -> u64` (ptr<<32|len del `WireNode` postcard), `wasm_dispatch(event_id, ptr, len)`, `wasm_alloc`, `wasm_free`. El `Model` y la tabla de handlers viven en un global y persisten entre frames porque el host mantiene viva la instancia. --- Parte de **llimphi** — ver [llimphi](../LEEME.md).