Skip to content

[Decision] Five documented action props have no declared slot at all — delete them, move them onto the item, or is this a types gap? #6132

Description

@yinlianghui-tw

Escalated by the domain:devx @ objectui execution seat (#5748), PM session session_019b5UBNMtTzKbVtZZGvFuxe, out of #6122 / PR #6130. The measuring dev flagged this as the one cost it could not decide alone, and I agree — it is a public-contract question, not a documentation cleanup.

What was measured

#6122 began as "16 doc sites annotate props as string | ActionConfig, and ActionConfig does not exist — which type did they mean?" Resolved individually against the builtpackages/*/dist/*.d.ts with the compiler API:

Zero of the 16 sites resolve to ActionSchema or UIActionSchema.

Every slot the shipped types declare is a plain function callback. The question the card asked has no answer because its premise was wrong.

Of the 16: 6 were determinable and are fixed in PR #6130. 4 need the documented prop renamed and 1 restructured into a nested object — I ruled those, since a slot exists under a different name and the docs are simply wrong about it. These 5 have no declared slot at all:

pagedocumented propshipped type says
sonneraction.onClickSonnerSchema (feedback.d.ts:194) has noaction prop
context-menuonSelectabsent (overlay.d.ts:388)
menubaronSelectabsent (overlay.d.ts:415)
dropdown-menuonSelectonly onOpenChange (overlay.d.ts:383)
button-grouponValueChangeabsent (navigation.d.ts:330)

Two further measurements, both independent of the above:

  1. The string | half of all 16 annotations documents exactly the shape objectui#4453 ruled is DROPPED — an authored onAction: 'NOT-A-FUNCTION' is discarded (packages/plugin-calendar/src/calendar-view-renderer.tsx:322-331).
  2. No renderer reads any of these schema-level slots, for any of the 15 components.

The question

Correcting these five is not a rename, because there is nothing to rename to. The choice decides something about the product:

Are ObjectUI component schemas meant to carry JSON-authorable action references at all?

  • If no — the docs are advertising a capability that does not exist, and should stop.
  • If yes, eventually — deleting now and restoring later is churn, and the honest interim is a types gap recorded as such.

That is why this is not the seat's to settle.

Options

A — Documentation follows the shipped types all the way. Delete the five documented props; optionally move the menu handlers onto the item, where the shipped MenuItem.onClick (overlay.d.ts:334) actually lives.
Cost: reader-facing removal across 15 pages. Benefit: every remaining line is true.

B — Record it as a types gap. Leave the docs, file a types card asking whether these schemas should gain authorable action slots.
Cost: the pages keep teaching something that does nothing, and #5867's components group (71 files) stays blocked meanwhile. Benefit: no churn if the answer turns out to be yes.

C — Declare the blocks fragments. ⛔ Rejected on its face — FRAGMENT_MARKER is forbidden on genuinely-TypeScript blocks, and it converts a measured defect into a declared skip.

D — Mint ActionConfig or an action-reference union. ⛔ Rejected — minting a symbol so documentation becomes retroactively true, refused three times already this session (#5329's $schema URL, #6107's cell renderers, #6122's own prohibition).

四棱分析

Seat recommendation: A, with B's follow-up card if you also want the types question formally opened. The measuring dev independently reached the same conclusion.

⚠️This blocks #5867's components group — 71 files, the largest remaining group in that card's burn-down.

Reply 「A」/「B」, or per-component if you want the menus treated differently from sonner / button-group.

Refs: #6122 / PR #6130 · #4453 · #5867 · #5329 · #6107.

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:dispatched

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions