chore(app-shell): remove legacy monolith detail renderer + renderViaSchema kill-switch (ADR-0085 PR4)#2546
Merged
Conversation
…chema kill-switch (ADR-0085 PR4) RecordDetailView now always renders through the SchemaRenderer Page pipeline: an authored PageSchema(pageType='record') when assigned, else the buildDefaultPageSchema synthesis. The non-schema-driven monolithic DetailView branch and both entry points are removed: - objectDef.detail?.renderViaSchema === false (the last surviving detail.* key — ADR-0085 removed the block from the spec, keeping this key only as the kill-switch) is no longer read; - the ?renderViaSchema=0 debug URL param is no longer honored. Also drops the legacy-only plumbing this branch required: the eager per-record related-lists fan-out (the schema path's record:related_list self-fetches lazily per tab) and the intermediate DetailViewSchema translation layer, now replaced by a synthParts memo that feeds buildDefaultPageSchema directly. The DetailView component itself stays in @object-ui/plugin-detail (still used by the record:details renderer). Removes the now-dead `DetailView`/`RecordChatterPanel` import in ObjectView and updates the slotted-pages guide. Closes #2181 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VRBZFKwqib3pjPUua3LjCP
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Deletes the legacy monolithic
DetailViewbranch insidepackages/app-shell/src/views/RecordDetailView.tsx(the non-schema-driven path) together with both of its entry points:objectDef.detail?.renderViaSchema === false— the last survivingdetail.*key (ADR-0085 removed the block from the spec; this key was kept only as this path's kill-switch)?renderViaSchema=0debug URL paramRecordDetailViewnow always renders through the SchemaRenderer Page pipeline: an authoredPageSchema(pageType='record')when one is assigned, else thebuildDefaultPageSchemasynthesis.Why
The dual render path taxed every detail-page feature twice: the fieldGroups wiring (#2149/#2168) had to be implemented in both the monolith and the
buildDefaultPageSchemasynth, and the two implementations already diverged once (ungrouped-field behavior). Schema-driven has been default-on since Track 3 Phase G, and a two-repo + examples scan found zero authors ofrenderViaSchema: false.Changes
RecordDetailView.tsx(~918 lines changed, net −344):renderViaSchemaFlagmemo (URL param +objectDef.detail.renderViaSchemareads) and the final legacy<DetailView>return branch.record:related_listrenderers self-fetch lazily when their tab is shown, so the preload was pure waste (a record with 8 related lists previously fired ~50 concurrent queries the schema path never read).DetailViewSchema(detailSchema) translation layer with asynthPartsmemo that producesbuildDefaultPageSchema's inputs directly (sections,highlightFields,headerActions,related,history). Section derivation and the record-header action list (incl. approval-action injection) are preserved verbatim.DetailViewcomponent itself stays in@object-ui/plugin-detail(still used internally by therecord:detailsrenderer).ObjectView.tsx: dropped the now-deadDetailView, RecordChatterPanelimport (neither symbol was referenced).content/docs/guide/slotted-pages.md: replaced the "Disabling the synthesizer entirely" section with a removal note.@object-ui/app-shellpatch.Framework companion (checklist item 3)
Verified in the pinned
@objectstack/spec@14.6.0: therenderViaSchema/detail.*typing is already gone from the spec surface (only a source comment noting it "retires together with the legacy monolith render path" remains — cleanup tracked in #2548). No renderer-side or spec-type cleanup is outstanding on this side.Verification
type-check(app-shell, turbo — 29 tasks) ✅eslint(both changed files) ✅ 0 errorsbuild— app-shell ✅ and full console production bundle ✅ (35 tasks,distproduced)index.htmlReal-backend browser verification → tracked in #2548
Exercising the four detail-page shapes (grouped / ungrouped / stageField:false / related-heavy) against real data needs a running
@objectstackbackend, which the CI/agent environment doesn't have. Deferred to #2548 (with a repro runbook) rather than blocking this cleanup.Closes #2181
🤖 Generated with Claude Code
https://claude.ai/code/session_01VRBZFKwqib3pjPUua3LjCP