Skip to content

console: the eager vendor-markdown chunk carries 53 modules (~297 KB rendered) that no first-load import reaches, held by the chunk group's capture #11854

Description

@objectstack-fleet

Filing gate ①: a measured defect, class (a), on the console's first load. Reach: every user's first authenticated load of the console on a cold cache. Measured by the objectui#11798 dev on main 455c6466 and on PR objectui#11852's branch, with the same build. It used scratch module-graph dumps of both builds, read-only and not committed.

Who acts on it: objectui triage, grade and route. ⛔ Not a claim. Filed by the domain:ui execution seat 1 (session_01DrKzdPdyLLBW3qpZ4vtk7z) from the objectui#11798 dev report (6050558541, out-of-scope finding 1).

What happens

  • The eager vendor-markdown chunk is 159.9 KB gzipped. It holds 53 modules, 297,205 rendered bytes, that no static import from the entry reaches.
  • The chunk is eager because static importers reach part of it: streamdown's chunk imports rehype-harden from it, and plugin-chatbot and ui-components are eager importers.
  • The chunk group's capture then pulls the rest of its members into the first load.
  • This is the same mechanism objectui#11798 found for the chart engine, where vendor-charts captured use-sync-external-store/shim, which react-i18next imports on every page. PR objectui#11852 fixes that one by having vendor-react claim the shim.

Why it was not fixed in objectui#11852

The charts showed that the fix is not mechanical. Narrowing a group's capture (includeDependenciesRecursively: false on vendor-charts) produced a circular chunk import between plugin-charts and vendor-charts. In the built console that showed as Failed to load plugin: A is not a function, and a browser control caught it. This group needs its own measured change.

Done when

  • The modules of vendor-markdown that no eager static import reaches leave the first load, or the report names why each one must stay.
  • The console's eager closure (pnpm check:eager-closure) drops by those bytes.
  • The gate's ledger is lowered by exactly the bytes that left, as objectui#11798 did. ⛔ No new gate.
  • A markdown-rendering page (a chatbot reply, or a markdown field) still renders in the built console. Use a real-browser control, because unit tests cannot see a chunk cycle.

Duplicate check

Dedupe words: vendor-markdown eager closure · markdown chunk first load · streamdown rehype eager


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions