Each React API, and what brust does with it: lowered to native code, rendered once as static markup, or left to React as an island. Every row is a case the test battery builds and checks.
Summary
58 entries from the React reference (react.dev, fetched 2026-10-13): 11 native, 9 static, 30 island, 3 partial, 5 not applicable.
Native: compiled to a template the server fills and a binding the browser updates; no React in the browser.
Static: rendered once; the page ships the markup and nothing else.
React island: the component runs in React, rendered by the worker and hydrated in the browser. The rest of the page keeps its tier.
Partial: some shapes of the API are native or static and others are islands; the note says which.
Not applicable: the API has no meaning in brust (there is no Server Components runtime).
fixed: a dynamic import() is a dynamic-import fallback, not a printer panic dynamic-import external-component island-children jsx-expression local-component
fixed: a dynamic import() is a dynamic-import fallback, not a printer panic dynamic-import external-component island-children jsx-expression local-component
native/static: c-useformstatus-child; island: c-useformstatus; known gap: the root is static and Submit is an island, but the <form> is not a React form, so pending never becomes true; the root should be react hook-unsupported
<form onSubmit>; known gap: a function action becomes a precompute value that the url_ok guard drops, so the form renders without an action and submits nowhere; it should fall back to react
flushSync in a handler; known gap: compiles native but the client chunk imports react-dom (a native chunk must contain no react import); it should fall back to react