Skip to content

docs(guide,readme): spell the grid child list children, the key grid reads (objectui#8912) - #8951

Merged
os-steve merged 3 commits into
mainfrom
claude/issue-8912-grid-children-items
Sep 10, 2026
Merged

docs(guide,readme): spell the grid child list children, the key grid reads (objectui#8912)#8951
os-steve merged 3 commits into
mainfrom
claude/issue-8912-grid-children-items

Conversation

@os-steve

@os-steve os-steve commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Fixes #8912

Session: https://claude.ai/code/session_01MPaVWWMuWeT5LgB1qoXjVB — written into the prose as a code
span because a PATCH of this body downgrades the session-URL footer to its bare form.

The SDUI grid renderer draws its child list from schema.children and from nothing else, and
GridSchema declares only children. Three teaching surfaces authored that list as items anyway —
including the flagship example on the npm/GitHub landing page — so a reader who copied any of them
got a grid element with no children.

Option 1 of the card, which the triage verdict had already established as the only surviving route:
the documentation is repaired, and the renderer is not. Options 2 (teach grid to read items as an
alias) and 3 (declare items on GridSchema) are the lenient-fallback shape coding standard #0.1
(contract-first) forbids by name, and each would mint a second child-key dialect on one node. ⛔ The
grid renderer and GridSchema are untouched — both are correct today.

What changed

file change
README.md the #### Basic Usage fence — items: becomes children: (tsx object literal, unquoted)
content/docs/guide/schema-rendering.md the "Schemas can be nested" JSON fence — "items" becomes "children"
content/docs/guide/schema-playground.md the "Project Dashboard" JSON fence — "items" becomes "children"
packages/components/src/__tests__/page-body-single-node-8310.test.tsx the objectui#8310 render pin — now transcribes the repaired flagship, and gains the legs described below
packages/types/src/__tests__/page-body-arity-8310.test.ts the objectui#8310 arity pin — stale-truth repair only, added in the patch round below
.changeset/8912-grid-children-items.md empty frontmatter — docs and test only, nothing published moves

Each documentation edit is a one-key, one-line, line-count-preserving replacement (1 +, 1 - per
file), so nothing that cites these files by line can rot.

Every hit was judged, never bulk-replaced

The bare word items appears more often than the defect does. Counts re-derived on this branch's base
aeaa0f6, with the instrument proven on a known positive first — the quoted-JSON probe "items"
returns 0 on the README, because that fence is a tsx object literal with unquoted keys. A probe
that spans only one of the two syntaxes produces a false zero on the single most important surface.

hit verdict
README.md:236 items: [ defect — repaired
content/docs/guide/schema-rendering.md:131 "items": [ defect — repaired
content/docs/guide/schema-playground.md:214 "items": [ defect — repaired
content/docs/guide/schema-rendering.md:170 Use arrays for multiple items: English prose — left
content/docs/guide/schema-rendering.md:444 "${items.length === 0}" a data-scope variable in an expression, not a child key — left
content/docs/guide/schema-rendering.md:445 "No items found" prose inside a string value — left

A structural probe over every tracked file (a grid type literal in either syntax, with an items
key within ten lines) finds no fourth authoring surface. Its two remaining hits are window artefacts,
inspected and dismissed: a designer palette group's member list in PageDesigner.tsx, and a
transport envelope makeDS({ items: [VIEW] }) in a data-objectstack pin whose type: 'grid' is a
list-view config. The only items left in grid.tsx is the prose Gap between items (0-12).

⚠️ The acceptance instrument is RENDER OUTPUT, and no gate in this repository can stand in for it

This is the part worth reading before trusting any green below.

  • check:doc-types asks only whether a fence's type literal is a registered component. grid is
    registered, so the fence passes; whether the snippet's other keys have a reader is that gate's
    explicitly out-of-scope second dimension (objectui#4823).
  • check:doc-examples compiles the fence against BaseSchema, which is .passthrough() with an
    [key: string]: any index signature. That signature absorbs the undeclared key: exit 0, zero
    diagnostics.

⇒ Both gates are green on the defect by design. Their greens appear in the table below because
they prove this change broke nothing, ⛔ never as evidence that the defect is repaired. The defect
validated, type-checked, rode onto the node and drew nothing — the only instrument that can see it is
what the renderer actually draws.

Discriminating power — proved in both directions

Both legs mutate a committed tree, prove the mutation reached disk by blob hash before any result
is read, restore under a trap with absolute paths, and verify the restore by state (git diff HEAD
empty plus a blob comparison against the HEAD blob), never by an exit code.

Leg A — revert the README to the pre-repair spelling. The mutated blob comes out
d086dd5d0e8383b5bd5133acfa773d432bf8ac52, which is byte-identical to the README on origin/main, so
the leg really does reconstruct the pre-repair file rather than something merely similar.

MUTATED: children->items at :236, blob 1e4b9096 -> d086dd5d
 ❯ page-body-single-node-8310.test.tsx (9 tests | 1 failed)
   × spells the flagship grid child list `children`, never `items`
AssertionError: expected 'const schema = {\n  type: "page",\n  …' to contain 'children: ['
 Tests  1 failed | 8 passed (9)

Leg B — revert the pin's own transcription to items. This is the card's mechanism, and it shows
exactly why a naive control passes on a broken build:

 Tests  2 failed | 7 passed (9)
   × renders every child of a single-node `body`
   × renders every child of a list `body`
AssertionError: expected '' to contain 'Total Users'

The two render-output assertions go red; the grid-element assertions in the same run stay
green — the page wrapper and the grid element are drawn even in the broken state. The rendered
container's textContent is the empty string. That is the whole defect in one line.

What the objectui#8310 render pin now guards

That file deliberately transcribed the flagship with items preserved, so this defect could not
hide inside a green, and its own source comment said not to tidy it. Converted rather than deleted or
weakened:

  • the transcription now follows the repaired flagship, and drives the arity control unchanged;
  • a new leg asserts the three statistic labels are actually drawn — the render-output evidence;
  • the pre-repair spelling survives as a labelled negative-space leg: the grid element is drawn and
    its children are not. This is the firing control, and it is also the floor set by standard #0.1 —
    teaching grid the second spelling would redden it;
  • a new README-scan leg reads the real #### Basic Usage fence and requires children: [ with no
    items key, so the transcription cannot drift into fiction. Leg A above is the proof that this leg
    can fail.

⚠️ An expectation carried into this card was falsified, and it matters. Repairing the README did
not turn this pin red on its own: before this PR the file held only a local transcription and
never read README.md at all, so nothing tied it to the landing page's bytes. The types-side pin does
read the README, but its scan leg asserts body arity and the page/grid/statistic shape — never the
child key. Measured, not assumed: both pins were green immediately after the documentation edit.
The README-scan leg added here is what makes that expectation true from now on.

Patch round — the arity pin's stale truths

Landing the repair above made four statements in packages/types/src/__tests__/page-body-arity-8310.test.ts
false, and nothing went red, which is exactly why it would have rotted quietly: BaseSchema carries
[key: string]: any, and that file's subject is body arity, not the child key. Repaired in the
same PR that falsified them:

stale truth repair
the transcription items: [ at :92 now children: [
the docblock "the grid node the README's flagship example hands to body" names the children spelling and the card
the header paragraph describing items as a live, unrepaired defect now past tense, and points at the render pin as the child key's owner
a brace-scanner comment naming a nested items[] now children[]

Stale-truth repair only — nothing this pin asserts moved. All 28 of the file's
it( / describe( / expect( lines are byte-identical before and after (compared as text, since the
prose edits shifted line numbers). Outside comment lines the entire diff is two hunks: a docblock
opener reflowed from one line to a block, and items: [ becoming children: [. The arity ruling this
pin enforces, and its README-scan leg's assertions about body's arity, are untouched. The pin was
not restructured and no leg was added to it — the README-scan leg belongs in the render pin,
where it is.

The compile-time leg is genuinely enforced rather than merely globbed: tsc -p tsconfig.test.json --listFiles lists this pin 1 time, with packages/types/src/layout.ts as a positive control (1)
and a components test as a negative control (0).

Gates

⚠️ scripts/pm/dispatch-gates.mjs does not exist in this repository, so these families were
derived by hand from the actual changed-file set and are declared as such. Every exit code was
captured before any pipe.

gate exit note
pnpm exec vitest run packages/types/ + the render pin 0 patch round — 167 files, 3303 tests passed
pnpm --filter @object-ui/types run type-check 0 patch round — includes tsc -p tsconfig.test.json, which compiles the arity pin
pnpm exec vitest run packages/components/ 0 259 files, 2358 tests, all passed
the two objectui#8310 pins, together 0 18 tests passed
check:doc-types 0 ⛔ no discriminating power on this class
check:doc-examples 0 ⛔ no discriminating power on this class
check:doc-snippets 0 638 of 638 blocks judged, 0 failed
check:doc-fences 0
check:control-bytes 0 re-run in the patch round; plus a manual control-character sweep of both edited pins
check-changeset-presence 0 re-run in the patch round
check-changeset-no-major 0 re-run in the patch round
check-governed-queue-guard --test 0 NOT GOVERNED — none of the changed paths matched

check:doc-snippets and check:doc-examples first returned exit 2 = PRECONDITION NOT MET, which
is neither a pass nor a red: the packages they resolve against were unbuilt, so the programs never
ran. The scoped build those gates name was run (35 of 35 tasks successful) and both were re-run to a
real exit 0. Heavy runs went through scripts/pm/os-verify-lock.sh; each reports VERDICT command-exit 0 from the runner's own verdict line.

⚠️ The two doc gates' verdicts are carried forward from that run rather than re-executed in the
patch round, and the reason is stated rather than implied: the patch round changed exactly one file, a
test under packages/types/src/__tests__/, which is not a documentation surface and is not part of any
package's build output — so neither gate's inputs moved. origin/main was merged in first (a merge, no
rebase, no force-push) and touched only apps/site, which those gates also do not read.

Blast radius checked by content rather than by guess: of every test that reads a file this PR edits,
exactly two exist — the two objectui#8310 pins, both of which are in this diff and both green. The
three packages/layout tests that mention "Basic Usage" read content/docs/layout/app-shell.mdx and
content/docs/guide/layout.md, neither of which is touched here.

Re-grading triggers — both measured, neither fires

  • p1 (auto-copied downstream): does not fire. No create-* template or scaffold inlines the
    flagship. The nearest candidate, the VS Code extension's insert-schema command, authors a different
    and correct shape — a div carrying Tailwind grid classes with its children on body, a declared
    and read channel.
  • p3 (fences unreachable): does not fire. Both guide pages are routed in
    content/docs/guide/meta.json, and the README is the repository and npm landing page.

priority:p2 stands.

验收备注

  • The arity pin's stale truths are repaired in this PR, not deferred. They were reported first and
    repaired only after the file was added to this card's declared surface. Serial constraint re-derived
    independently before editing: PR feat(types): declare drillDown / title / compareTo on both published copies of ObjectChartSchema (objectui#8885) #8895 touches three files under packages/types/src/__tests__/
    imported-defaults-8317.test.ts, object-chart-undeclared-keys-8885.test.ts and
    zod-mirror-parity.test.ts — and page-body-arity-8310.test.ts is not among them.
  • objectui#8284 is not addressed here and remains open. It asks which channel a renderer reads;
    this card asked whether an authored child key has any reader at all.
  • The arity ruling on objectui#8310 is untouched. That ruling required the README example to stay
    as written with respect to its body arity — one node, not a list — and the body value is
    still the single grid node it was. Only the child key inside it moves.
  • noted, not filed: the structural probe's two window artefacts are not defects and need no
    action — recorded above so the next seat running that probe does not re-investigate them.
  • .changeset uses the empty-frontmatter form: the only published-source files in the diff are tests,
    and no runtime surface moves.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MPaVWWMuWeT5LgB1qoXjVB

…id` reads

The `grid` renderer draws its child list from `schema.children` and from nothing
else, and `GridSchema` declares only `children`. Three teaching surfaces authored
that list as `items` anyway — including the flagship example on the npm/GitHub
landing page — so a reader who copied any of them got a grid element with no
children. Nothing refused the key: `BaseSchema` is `.passthrough()` with an
`[key: string]: any` index signature, so `items` validated, type-checked, rode
onto the node and drew nothing.

Repairs the documentation, not the renderer: coding standard #0.1 (contract-first)
forbids the alternatives — teaching `grid` to read `items` as an alias, or
declaring `items` on `GridSchema` — as lenient fallbacks that would mint a second
child-key dialect on one node.

The objectui#8310 render pin transcribed the flagship verbatim, `items` and all,
so the defect could not hide inside a green. It now transcribes the repaired
flagship, asserts the three `statistic` labels are drawn, keeps the pre-repair
spelling as a labelled negative-space leg (grid element drawn, children absent),
and gains a README-scan leg so the transcription cannot become fiction.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MPaVWWMuWeT5LgB1qoXjVB
@github-actions

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Eager closure (gzip, 50 chunks) 3490.7 KB 3512.7 KB
Main entry chunk (gzip) 144.2 KB 350 KB
Entry file index-DaAJC-kx.js
Status PASS

The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it.


📦 Bundle Size Report

Package Size Gzipped
app-shell (consoleActionDispatch.js) 0.20KB 0.19KB
app-shell (index.js) 16.69KB 6.21KB
app-shell (runtime-config.js) 20.68KB 7.36KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 10.06KB 3.86KB
auth (ActiveOrganizationStorage.js) 25.05KB 9.16KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 2.07KB 1.00KB
auth (AuthProvider.js) 40.18KB 10.59KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.15KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.65KB 2.22KB
auth (SocialSignInButtons.js) 9.61KB 3.89KB
auth (UserMenu.js) 3.41KB 1.23KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 40.21KB 10.80KB
auth (createAuthenticatedFetch.js) 8.46KB 3.43KB
auth (index.js) 3.19KB 1.44KB
auth (invitation-status.js) 1.22KB 0.70KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 5.30KB 1.02KB
auth (useWorkspaceAdminStatus.js) 11.08KB 4.58KB
collaboration (CommentThread.js) 26.08KB 7.56KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 6.49KB 2.64KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.68KB 0.73KB
collaboration (useCollaborationTranslation.js) 6.05KB 2.52KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 500.20KB 114.67KB
core (index.js) 7.48KB 2.96KB
create-plugin (index.js) 28.04KB 9.46KB
data-objectstack (index.js) 205.46KB 56.78KB
fields (index.js) 246.97KB 62.30KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (builtinAggregateLabels.js) 0.86KB 0.49KB
i18n (currency.js) 1.22KB 0.64KB
i18n (fallbackInterpolation.js) 6.25KB 2.77KB
i18n (i18n.js) 6.57KB 2.76KB
i18n (index.js) 3.65KB 1.47KB
i18n (pickLocalized.js) 7.62KB 3.26KB
i18n (provider.js) 26.89KB 9.04KB
i18n (useDisplayLocale.js) 2.85KB 1.45KB
i18n (useObjectLabel.js) 34.34KB 9.17KB
i18n (useSafeTranslation.js) 5.60KB 2.33KB
layout (index.js) 38.84KB 10.94KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.75KB
mobile (index.js) 1.99KB 0.87KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.72KB 0.42KB
mobile (useSpecGesture.js) 4.39KB 1.66KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 13.52KB 4.88KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 6.24KB 2.16KB
permissions (discardProofCache.js) 1.04KB 0.55KB
permissions (evaluator.js) 8.39KB 3.10KB
permissions (index.js) 0.93KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.53KB
permissions (usePermissions.js) 4.83KB 2.27KB
plugin-ai (index.js) 14.81KB 3.63KB
plugin-calendar (index.js) 49.03KB 13.93KB
plugin-charts (index.js) 71.63KB 19.99KB
plugin-chatbot (index.js) 195.32KB 46.51KB
plugin-dashboard (index.js) 132.41KB 34.84KB
plugin-designer (index.js) 215.68KB 44.27KB
plugin-detail (index.js) 253.19KB 65.62KB
plugin-editor (index.js) 2.23KB 1.05KB
plugin-form (index.js) 136.79KB 34.19KB
plugin-gantt (index.js) 166.96KB 40.93KB
plugin-grid (index.js) 210.86KB 57.28KB
plugin-kanban (index.js) 57.58KB 16.47KB
plugin-list (index.js) 112.54KB 27.65KB
plugin-map (index.js) 20.49KB 6.83KB
plugin-markdown (index.js) 13.88KB 4.80KB
plugin-report (index.js) 43.42KB 11.92KB
plugin-timeline (index.js) 30.10KB 8.74KB
plugin-tree (index.js) 9.55KB 3.32KB
plugin-view (index.js) 84.42KB 20.80KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.66KB 3.50KB
providers (index.js) 0.45KB 0.23KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.62KB 2.34KB
react (LazyPluginLoader.js) 4.47KB 1.63KB
react (SchemaRenderer.js) 83.34KB 27.61KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 4.63KB 2.18KB
react (schema-input.js) 2.32KB 1.24KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 6.58KB 2.74KB
sdui-parser (dashboard-widget-options.js) 3.08KB 1.30KB
sdui-parser (index.js) 5.66KB 2.50KB
sdui-parser (input-type.js) 2.84KB 1.40KB
sdui-parser (kanban-quick-add.js) 2.71KB 1.35KB
sdui-parser (parse.js) 20.57KB 5.88KB
sdui-parser (provenance.js) 3.66KB 1.82KB
sdui-parser (types.js) 0.28KB 0.23KB
sdui-parser (validate.js) 14.82KB 4.99KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 1.00KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 2.93KB 1.49KB
types (crud.js) 0.20KB 0.18KB
types (dashboard-filter-alias.js) 6.23KB 2.74KB
types (data-display.js) 3.75KB 1.85KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.85KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (expression.js) 0.20KB 0.18KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-inflight.js) 8.87KB 3.73KB
types (http-retry.js) 4.32KB 2.02KB
types (icon-key-migration.js) 4.26KB 1.63KB
types (index.js) 4.74KB 2.25KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 4.73KB 2.28KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (select-option.js) 0.20KB 0.19KB
types (spec-report.js) 5.05KB 1.93KB
types (spec-ui-namespace.js) 0.20KB 0.19KB
types (strict-authoring-face.js) 14.27KB 5.47KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 6.28KB 2.87KB
types (ui-action.js) 8.11KB 3.32KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

The objectui#8310 arity pin transcribed the README's flagship grid with its
child list spelled `items`, and said so in prose: a header paragraph describing
that spelling as a live, unrepaired defect, a docblock calling the literal "the
`grid` node the README's flagship example hands to `body`", and a brace-scanner
comment naming a nested `items[]`. Repairing the three teaching surfaces made
all four statements false, and nothing went red — `BaseSchema` carries
`[key: string]: any`, and this file's subject is `body` arity, not the child key.

Stale-truth repair only. Every one of the file's 28 assertion lines is
byte-identical before and after; outside comments the diff is the single key.
What the pin asserts, and the arity ruling it enforces, are untouched.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MPaVWWMuWeT5LgB1qoXjVB
@github-actions

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Eager closure (gzip, 50 chunks) 3490.7 KB 3512.7 KB
Main entry chunk (gzip) 144.2 KB 350 KB
Entry file index-DaAJC-kx.js
Status PASS

The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it.


📦 Bundle Size Report

Package Size Gzipped
app-shell (consoleActionDispatch.js) 0.20KB 0.19KB
app-shell (index.js) 16.69KB 6.21KB
app-shell (runtime-config.js) 20.68KB 7.36KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 10.06KB 3.86KB
auth (ActiveOrganizationStorage.js) 25.05KB 9.16KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 2.07KB 1.00KB
auth (AuthProvider.js) 40.18KB 10.59KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.15KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.65KB 2.22KB
auth (SocialSignInButtons.js) 9.61KB 3.89KB
auth (UserMenu.js) 3.41KB 1.23KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 40.21KB 10.80KB
auth (createAuthenticatedFetch.js) 8.46KB 3.43KB
auth (index.js) 3.19KB 1.44KB
auth (invitation-status.js) 1.22KB 0.70KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 5.30KB 1.02KB
auth (useWorkspaceAdminStatus.js) 11.08KB 4.58KB
collaboration (CommentThread.js) 26.08KB 7.56KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 6.49KB 2.64KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.68KB 0.73KB
collaboration (useCollaborationTranslation.js) 6.05KB 2.52KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 500.20KB 114.67KB
core (index.js) 7.48KB 2.96KB
create-plugin (index.js) 28.04KB 9.46KB
data-objectstack (index.js) 205.46KB 56.78KB
fields (index.js) 246.97KB 62.30KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (builtinAggregateLabels.js) 0.86KB 0.49KB
i18n (currency.js) 1.22KB 0.64KB
i18n (fallbackInterpolation.js) 6.25KB 2.77KB
i18n (i18n.js) 6.57KB 2.76KB
i18n (index.js) 3.65KB 1.47KB
i18n (pickLocalized.js) 7.62KB 3.26KB
i18n (provider.js) 26.89KB 9.04KB
i18n (useDisplayLocale.js) 2.85KB 1.45KB
i18n (useObjectLabel.js) 34.34KB 9.17KB
i18n (useSafeTranslation.js) 5.60KB 2.33KB
layout (index.js) 38.84KB 10.94KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.75KB
mobile (index.js) 1.99KB 0.87KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.72KB 0.42KB
mobile (useSpecGesture.js) 4.39KB 1.66KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 13.52KB 4.88KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 6.24KB 2.16KB
permissions (discardProofCache.js) 1.04KB 0.55KB
permissions (evaluator.js) 8.39KB 3.10KB
permissions (index.js) 0.93KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.53KB
permissions (usePermissions.js) 4.83KB 2.27KB
plugin-ai (index.js) 14.81KB 3.63KB
plugin-calendar (index.js) 49.03KB 13.93KB
plugin-charts (index.js) 71.63KB 19.99KB
plugin-chatbot (index.js) 195.32KB 46.51KB
plugin-dashboard (index.js) 132.41KB 34.84KB
plugin-designer (index.js) 215.68KB 44.27KB
plugin-detail (index.js) 253.19KB 65.62KB
plugin-editor (index.js) 2.23KB 1.05KB
plugin-form (index.js) 136.79KB 34.19KB
plugin-gantt (index.js) 166.96KB 40.93KB
plugin-grid (index.js) 210.86KB 57.28KB
plugin-kanban (index.js) 57.58KB 16.47KB
plugin-list (index.js) 112.54KB 27.65KB
plugin-map (index.js) 20.49KB 6.83KB
plugin-markdown (index.js) 13.88KB 4.80KB
plugin-report (index.js) 43.42KB 11.92KB
plugin-timeline (index.js) 30.10KB 8.74KB
plugin-tree (index.js) 9.55KB 3.32KB
plugin-view (index.js) 84.42KB 20.80KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.66KB 3.50KB
providers (index.js) 0.45KB 0.23KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.62KB 2.34KB
react (LazyPluginLoader.js) 4.47KB 1.63KB
react (SchemaRenderer.js) 83.34KB 27.61KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 4.63KB 2.18KB
react (schema-input.js) 2.32KB 1.24KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 6.58KB 2.74KB
sdui-parser (dashboard-widget-options.js) 3.08KB 1.30KB
sdui-parser (index.js) 5.66KB 2.50KB
sdui-parser (input-type.js) 2.84KB 1.40KB
sdui-parser (kanban-quick-add.js) 2.71KB 1.35KB
sdui-parser (parse.js) 20.57KB 5.88KB
sdui-parser (provenance.js) 3.66KB 1.82KB
sdui-parser (types.js) 0.28KB 0.23KB
sdui-parser (validate.js) 14.82KB 4.99KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 1.00KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 2.93KB 1.49KB
types (crud.js) 0.20KB 0.18KB
types (dashboard-filter-alias.js) 6.23KB 2.74KB
types (data-display.js) 3.75KB 1.85KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.85KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (expression.js) 0.20KB 0.18KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-inflight.js) 8.87KB 3.73KB
types (http-retry.js) 4.32KB 2.02KB
types (icon-key-migration.js) 4.26KB 1.63KB
types (index.js) 4.74KB 2.25KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 4.73KB 2.28KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (select-option.js) 0.20KB 0.19KB
types (spec-report.js) 5.05KB 1.93KB
types (spec-ui-namespace.js) 0.20KB 0.19KB
types (strict-authoring-face.js) 14.27KB 5.47KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 6.28KB 2.87KB
types (ui-action.js) 8.11KB 3.32KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

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

Labels

documentation Improvements or additions to documentation package: components package: types tests

Projects

None yet

2 participants