Widgets
ErrorBoundary
Protects a risky widget subtree so runtime exceptions do not fault the whole app.
Protects a risky widget subtree so runtime exceptions do not fault the whole app.
Usage
ui.errorBoundary({
children: RiskyWidget(),
fallback: (error) =>
ui.errorDisplay(error.message, {
title: "Widget failed",
onRetry: error.retry,
}),
})Props
| Prop | Type | Default | Description |
|---|---|---|---|
children | VNode | required | Protected subtree |
fallback | (error: ErrorBoundaryError) => VNode | required | Fallback renderer when subtree throws |
key | string | - | Reconciliation key |
Fallback Error Payload
| Field | Type | Description |
|---|---|---|
code | "ZRUI_USER_CODE_THROW" | Runtime error code for trapped subtree throw |
message | string | Display-friendly message |
detail | string | Full runtime detail string |
stack | string | undefined | Optional stack trace |
retry | () => void | Retries only this boundary subtree on the next commit |
Behavior
- The boundary stays in fallback mode across normal app updates until
error.retry()is called. - Retry marks only the boundary subtree dirty and re-attempts rendering it.
- If fallback code itself throws or returns an invalid value, the runtime treats it as a normal user-code failure.