Give records a complete working interface Mechanism
People can browse a collection, inspect a record and act on it through a connected set of standard screens. Search, filters, pagination and available actions use the resource’s declarations.
Choose which operations become pages and which open within the current screen. The interface follows that choice rather than treating every action as another destination.
Example: Edit without losing the collection
A task collection offers selection and bulk actions. Creating a task opens an overlay; reading or editing an existing task can have its own address.

For engineers
Expose the operation deliberately
The shared resource configuration must declare each operation first. The frontend views map chooses its surface; it does not create backend operations or grant access to them.
Wonder Todos makes this choice in todos.ui-behavior.tsx. This is a selected part of its views array; unrelated custom actions are omitted:
[Op.CREATE, { surface: ResourceOperationFrontendSurface.EMBEDDED }],
[Op.READ, {
surface: ResourceOperationFrontendSurface.ADDRESSABLE,
customView: TodoReadCustomView,
}],
[Op.LIST, {
surface: ResourceOperationFrontendSurface.ADDRESSABLE,
// Dogfood the collection capabilities: selectable cards/table surface the
// bulk operations declared on the todos config (change-status, assign,
// delete, …) via the shared bulk bar; per-card actions sit in the top-end
// corner instead of the mid-row default.
collectionDisplayConfig: {
selectable: true,
cardActionPlacement: { vertical: VerticalPlacement.TOP, horizontal: HorizontalPlacement.END },
},
}],
[Op.SEARCH, { surface: ResourceOperationFrontendSurface.EMBEDDED }],
[Op.UPDATE, { surface: ResourceOperationFrontendSurface.ADDRESSABLE }],
[Op.DELETE, { surface: ResourceOperationFrontendSurface.EMBEDDED }],
ADDRESSABLE gives an operation a route where its configured path supports one. EMBEDDED keeps it inside a host such as an overlay. In this resource, create deliberately stays embedded because its core path would otherwise collide with the list path. Do not turn every entry into an addressable page mechanically.
Reuse the collection behavior
collectionDisplayConfig.selectable enables the selection surface. Cards and tables share selection state; filtering clears the selection, while pagination can retain it. The bulk toolbar resolves actual bulk operations from the resource rather than assuming every per-record action accepts several records.
The standard collection toolbar joins search, filter state, sorting and action presentation. Quick-filter tabs write the same filter state as the filter panel. Set these view-specific choices on the operation configuration rather than implementing an independent filter in a decorative tab bar.
Choose the smallest override
A custom read host in the example keeps the other operations on their standard surfaces. For a different field order use layout.display or layout.edit; for a genuinely different interaction use customView. Operation availability still depends on roles, context, enabled conditions and feature policy. A visible button is not the server’s authorization decision.




















