> ## Documentation Index
> Fetch the complete documentation index at: https://docs.saga-a2ui.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Host compatibility observations

> A dated record of standalone probes in ChatGPT web, Claude web and the Alexa+ simulator, and what they do not establish.

> Documents saga a2ui **0.7.6** (stable). This is the SDK guide [`docs/2026-10-19_host-compatibility-observations_v1.md`](https://github.com/MachineWisdomAI/saga-a2ui/blob/5995b1f0d2703f69582aa5def3db65cdea0967fc/docs/2026-10-19_host-compatibility-observations_v1.md) at source revision [`5995b1f`](https://github.com/MachineWisdomAI/saga-a2ui/tree/5995b1f0d2703f69582aa5def3db65cdea0967fc). It is published as a snapshot: later source changes do not alter it. Licensed under [Apache-2.0](https://github.com/MachineWisdomAI/saga-a2ui/blob/5995b1f0d2703f69582aa5def3db65cdea0967fc/LICENSE).
>
> The Lit packages (`@saga-a2ui/lit`, `@saga-a2ui/lit-mcp-stack`) were first published to npm at 0.7.7-rc.1. Where this snapshot mentions them, it describes source at the pinned revision, not packages you can install at 0.7.6.

Edition: 2026-10-19 v1. Observations from 18–19 October 2026; this is a record of tested behavior, not a general renderer compatibility guarantee.

The tested self-contained React/A2UI resource displayed initial server data in ChatGPT web, Claude web and the Alexa+ web simulator. A button inside that card called a server tool and applied its returned data to the same mounted instance in ChatGPT and Claude. In Alexa+, the server returned a new value and the simulator logged it in an update directive, but the card retained its initial value and the app call timed out.

## Tested resource and coverage

The standalone probe used React/React DOM 19.3.1, `@a2ui/react` and `@a2ui/web_core` 0.14.0, and `@modelcontextprotocol/ext-apps` 2.0.3 directly. It did not use SAGA's React adapter or MCP adapter. Components, bridge code, CSS and an HTML template were authored separately; the build assembled one `ui://` HTML resource with inline runtime code and styles and no external runtime assets. Initial fields and updates used A2UI data-model bindings to server-generated values.

The original artifact was 1,138,112 bytes, SHA-256 `2e2f9a92ec63e2253b8f891fe2a734e2aa028eaa7ef11945c59885f41396a2db`, served as `text/html;profile=mcp-app`. Its bytes matched the resource retrieved from Alexa's rendered card URL. Checks used Microsoft Edge on macOS.

| Host | Initial server data | In-card tool call and same-instance update | Additional observation |
| - | - | - | - |
| ChatGPT web | Displayed | Returned value displayed; same instance, one mount | Native reload followed by another update passed |
| Claude web | Displayed | Returned value displayed; same instance, one mount | Native reload followed by another update passed |
| Alexa+ web simulator | Displayed | Call timed out; existing card retained initial data | Two fresh conversations reproduced the timeout with the same artifact; both logged server HTTP 200 and a simulator update directive containing the new value |

All three hosts reported a blocked `script-src eval` diagnostic. Its originating dependency and relationship to the Alexa timeout were not established; CSP was not relaxed.

## What the Lit comparison covers

The accepted Lit consumer flow used a conversation-level tool call followed by display of the answer delivered by the host. Its view registered a result callback through SAGA's `connectToolResultView` and did not invoke `callServerTool`.

Both that Lit flow and the React probe displayed host-delivered data in Alexa+. The accepted Lit flow did **not** test the in-card tool round trip that timed out in the React probe. These results do not establish a renderer-specific cause or a general Lit-versus-React compatibility ranking.

## Lit-only in-card follow-up

A separate Lit 3.3.3 probe used MCP Apps 2.0.3 directly, without A2UI rendering or SAGA Action Bindings. Its self-contained resource was 620,848 bytes, SHA-256 `74a418e718dfa021ee647f4dbcb8ed229dbcd17d7ded3e4ecd66c3b838e65b5b`. Alexa's cached HTML matched those exact bytes. A local browser control using the real MCP Apps bridge and an HTTP server call displayed the returned revision and receipt in the same mounted Lit instance.

In one clean Alexa+ simulator run on 19 October, initial revision 12 displayed. The native button call reached the server, which returned revision 13; the simulator logged that result at 11:33:43.022 UTC. The iframe recorded no incoming message after the call before its timeout at 11:34:41.774, and retained revision 12 in the same instance with one mount and zero updates. Initial messages had arrived and validated. No successful fresh-conversation repeat was completed: a temporary tunnel rotated, and a later opening request did not invoke the tool or display a card. Those attempts are not additional completed in-card failures.

**This was a data-only update to the existing cached UI.** The read tool and returned result supplied no resource URI; the immutable HTML remained unchanged. The simulator's `/toolResult` REPLACE operation replaced result data, not the `ui://` bundle. This observation does not demonstrate broken Lit data binding: the local control applied real returned data. Delivery from the simulator to the existing iframe is the unresolved observed boundary, not a proven root cause or required repair location.

Both the React and Lit probes bypassed SAGA `bindAction` and `Action.server`; their results do not qualify or reject the integrated SAGA action path in Alexa. Comparing Lit without A2UI with React plus A2UI does not isolate renderer choice. No CSP relaxation, alternate app transport or production repair was introduced. The temporary development configuration was restored and its original tool discovery verified. These observations do not alter the earlier React passes or passive Lit acceptance.

## Follow-up diagnostics and limits

A diagnostic React artifact added message and callback tracing. In its clean Alexa run, initial messages arrived and validated, but the raw iframe trace recorded no incoming message after the button call before its 60-second timeout. The server response and simulator update directive contained the new value; the mounted card retained its initial value. This diagnostic artifact was not retested in ChatGPT or Claude.

A local control at SAGA commit `78820dfce3d119d4c82d3d12020af65bef1e2fb1`, using real `App`, `AppBridge`, `InMemoryTransport` and `connectToolResultView`, passed both a tool response and a later tool-result notification. The existing view suite passed nine tests. An isolated test of retrieved host bridge code did not forward a simulated tool response or parse its simulated update envelope. Those local results do not establish the cause of the live timeout or which code needs a repair.

The root cause, required repair location and whether a supported SAGA-side change can resolve the timeout remain unestablished. No production fix was made or verified in this investigation. The observations do not complete installed SAGA React recipe qualification, full component parity, physical-device acceptance or certification. The related implementation work remains tracked in [REACT1](https://github.com/MachineWisdomAI/saga-a2ui/issues/28), [REACT2](https://github.com/MachineWisdomAI/saga-a2ui/issues/30), [REACT3](https://github.com/MachineWisdomAI/saga-a2ui/issues/31) and [REACT4](https://github.com/MachineWisdomAI/saga-a2ui/issues/33).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.