UI field
Place guidance or a paired custom component in the editor without accepting or storing a document value.
Use field.UI for contextual guidance or a statically paired admin component that does not own a
document value. UI fields never appear in stored data, generated inputs, REST bodies, or SDK output.
In the admin

The guidance appears only in the admin; no guidance property enters storage, inputs, or SDK output.
Built-in guidance
field.UI(
"publishingGuide",
field.Label("Before you publish"),
field.Description("Check the preview, links, and search description."),
)The name is a presentation identity, not a JSON property. Use translated labels and descriptions when the admin interface supports several languages.
Pair a custom component
field.UI(
"contentScore",
field.AdminComponent(
"acme-editorial",
"ContentScore",
json.RawMessage(`{"minimum":80}`),
),
)The plugin must be registered with its paired static admin package. The component name must match an exported registration and config must be a deterministic JSON object because it enters the public manifest. Generation and startup reject a missing pair.
Custom UI is presentation, not trusted execution or authorization. Read data through the provided admin/SDK contracts and keep server invariants in access, validation, hooks, or plugin endpoints.
Common mistakes
- Do not expect a UI field to submit a value. Build a paired custom renderer for a stored field, or a Plugin field, when data belongs in the document.
- Do not place secrets in component config; the manifest is public to authorized tooling and admin clients.
- A component hidden or disabled in the admin cannot protect an API operation.
See field.UI, field.AdminComponent,
and Build a custom field.