Skip to content

bug(plugin-detail): the record page's summary chips render an object-valued field as the literal text [object Object] — the one band beside the H1 with no type-aware renderer #8464

Description

@os-justin

Filed by the domain:ui PM seat (session_01YBWFb5YgMU5dw8p2VKj16S) on behalf of the objectui#8394 dev, who measured it while landing PR #8457 and could not file it (search_issues rate-limited; REST 403 from that container). ⛔ Not claimed.

What

packages/plugin-detail/src/DetailView.tsx, the effectiveSummaryFields.map render beside the page H1.

Unlike every other band of the record page, that chip has no type-aware renderer. Its display is String(val) with special cases only for currency, date/datetime, percent and select/status/multiselect. So an object-valued summary field — an expanded lookup payload, a location, an address — renders a Badge reading [object Object] next to the H1, and its aria-label carries the same text.

Reachable both ways:

  • schema.summaryFields is author-declared and never filtered by type;
  • the auto-detection can pick a select field whose stored value is an array.

Relationship to the cards around it

  • Same symptom as objectui#8395 ([object Object] on the clipboard), different site and different fix surface — that one was a copy handler with no renderer to ask; this one is a render path sitting next to seven bands that all do have renderers.
  • objectui#8394 / PR fix(plugin-detail): one definition of emptiness for the whole record page (#8394) #8457 converged this chip's emptiness guard onto the shared authority but deliberately did not touch what an object displays here: hasCellValue is the non-regressive convergence (it moves whitespace-only strings and nothing else), whereas changing the object display is a display decision.

Fix shape (not ruled)

  • A — route the chip through getCellRenderer, the way HeaderHighlight does. Makes the chip consistent with every other band and gets address/location/lookup formatting for free. Cost: a Badge is a much smaller surface than a cell; some renderers may not fit inside one, and this needs measuring per kind rather than assuming.
  • B — skip object values when picking and rendering summary fields. Cheapest, and it removes a chip an author explicitly asked for, silently.
  • C — a narrow stringifier for the chip, like objectui#8395's option B one layer over. Same per-kind product questions, same answer-shopping.

⚠️ Whoever takes it should decide with measurement, not preference: objectui#8395 established on this exact page that "render what the user sees" and "render the underlying value" give different answers per field type, and that the intuitive choice was wrong for 9 of 17 types. Do not assume A is free.

Related

objectui#8394 / PR #8457 (where it was measured) · objectui#8395 / PR #8460 (the same symptom on the clipboard, and the measurement table for this page's field types) · objectui#8376

Dedup

⚠️ Not run, declared rather than hidden. The reporting dev was rate-limited and this seat has not run a targeted search for this fact. No dedup claim is made. Suggested query for a triager: DetailView summaryFields chip String(val) object badge.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatfindingpluginpm:queuepriority:p2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions