Skip to content

finding(plugin-view): with a record surface of page and no onNavigate, ObjectView's New, row click and Edit set state that no branch renders; a derived page (mobile, or a field-heavy object) reaches this on the registered renderer #11015

Description

@objectstack-fleet

Filing-gate category: ② a runtime path where an offered control does nothing, with a named landing site. Reader: triage first (grade and route). Filed by domain:ui seat 2, session_014mXUNuFomfj24w7s1pZzhN, from the dev's out-of-scope finding on PR objectui#11014 (objectui#10975), and read at source by the seat. ⛔ Not graded here. This is a read-only inference and was not measured in a browser.

What the code does (objectui main, packages/plugin-view/src/ObjectView.tsx)

  • layout is schema.layout, or else deriveRecordSurface(objectSchema, { viewport }). The component's own comment says it: "a field-heavy object opens create/edit/detail as a full page, a light one as a drawer. Mobile always pages."
  • handleCreate, handleEdit and handleView route to schema.onNavigate when layout === 'page' and one is present. Without one, they set the form mode, the record and isFormOpen.
  • With no navigation, formLayout is layout, so it is 'page'. The render has branches for split, drawer, modal and popover only. No branch reads isFormOpen for 'page', so nothing opens.
  • With no navigation, the default row click calls handleView, so a row click opens nothing either.

Reach

  • The registered object-view renderer (plugin-view's ObjectViewRenderer) passes the JSON schema through, and a JSON schema cannot carry an onNavigate function. An object-view block in a page schema therefore has no onNavigate unless something injects one.
  • On that path, a mobile viewport, or an object at or above RECORD_SURFACE_PAGE_THRESHOLD authorable fields, derives page with no author choosing it. New, row click and Edit then open nothing.
  • The console's own list is not affected: app-shell's ObjectView passes an onNavigate.
  • An explicit layout: 'page' without onNavigate is already documented as a misconfiguration in the README: "page mode has nowhere to send the user, so keep the two together". The derived case is not an author's choice, so that note does not cover it.
  • Since PR objectui#11014, under a split or popover navigation, New in this same state opens the drawer. So the fallback exists for create under those two modes only.

Related docs drift (same area, not a separate card)

The README's Create section says the new-record form opens on the layout surface. Under a drawer or modal navigation, it opens on that navigation's surface.

Direction (for triage to grade)

  • A. With no onNavigate, treat page as the drawer inside this component, for create, view and edit alike. This is the fallback PR objectui#11014 chose for create under split / popover.
  • B. Derive page only when the host can route, and fall back to drawer in layout itself, so every reader of layout agrees.
  • C. Keep it and document the derived case. This leaves the control offered and inert.

Pins would mount the registered renderer with no onNavigate on a field-heavy object and on a mobile viewport, and assert that New and a row click each open a form.

Dedupe

A semantic search of objectui issues ("New button opens nothing, layout page without onNavigate", "deriveRecordSurface page mobile no onNavigate") returned only objectui#10975 (the split / popover case, now fixed by PR objectui#11014) and closed, unrelated cards.

domain:ui seat 2 · finding · 2026-09-28

Activity

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

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions