Repository navigation
refactor(react,fields)!: retire 26 zero-consumer entry exports - #30650
Merged
Merged
Conversation
Barrel batch 4 of the zero-consumer sweep: react 20 names (two dead hook modules, two dead helpers and one dead type deleted), fields 6. Claude-Session: https://claude.ai/code/session_01L6bhgU8CeF9ECf7uDwJLVA Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L6bhgU8CeF9ECf7uDwJLVA Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L6bhgU8CeF9ECf7uDwJLVA Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
|
domain:ui#6 · os-sales · session_01L6bhgUR8Nu4M7tbtgES7q2 维护者速读
席位核对 — ACCEPT · head c5c2149
|
This was referenced Nov 5, 2026
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.
Requested by Sales · project thread
Part of #25921. The umbrella stays open; this is barrel batch 4, claim 6667585132 (seat
domain:ui#6, batch amendment from the seat after the census). Earlier batches: #30541, #30576, #30629.Clause-②: no (narrowing)
Metadata-protocol: none
维护者速读
@object-ui/react的包入口不再导出 20 个名字,其中 7 个连同代码一起删掉(两个无人使用的动效 hook 模块useReducedMotion/useViewTransition及其两个类型、useHasPageVariables、getShortcutDescriptions、AnimationTriggerType),其余 13 个只离开入口、模块照旧;@object-ui/fields的包入口不再导出 6 个名字(四个文件值辅助、筛选条件的额外运算符清单、表格列求和),模块全部保留。@object-ui/*包不受影响。入口的export *改成了具名列表,反向探针证明其余 516 个名字一个不少。回滚即 revert 本 PR。ui/packages/react/src/context/index.ts与ui/packages/react/src/index.ts(export *改具名列表,漏列即丢活名)、ui/packages/fields/src/index.tsx(三处同类改写)、两份.changeset/25921-*-zero-consumer-exports.md(迁移说明)。git grep -l -w -e useViewTransition -e useHasPageVariables -e NoDataSourcePanel -e sumColumn -- ':!ui/packages/react' ':!ui/packages/fields' ':!**/CHANGELOG.md'应只命中本 PR 的两份 changeset。What changes
@object-ui/react, deleted (nothing inside the package read them either): the modulessrc/hooks/useReducedMotion.ts(useReducedMotion) andsrc/hooks/useViewTransition.ts(useViewTransition,ViewTransitionConfig,ViewTransitionResult); the functionuseHasPageVariablesfromhooks/usePageVariables.tsx; the functiongetShortcutDescriptionsfromhooks/useKeyboardShortcuts.ts; the typeAnimationTriggerTypefromhooks/useAnimation.ts. Each was re-grepped on the new head: the only hits left are this PR's changeset.@object-ui/react, off the entry only (the module keeps its readers):formatUnresolvableVisibilityMessage,evaluateConfigBagInScope,SUPPORTED_TRANSITION_PRESETS,SUPPORTED_EASING_FUNCTIONS,useOptionalTheme,resolveNotificationPresentation,SUPPORTED_NOTIFICATION_DISPLAY_TYPES,SUPPORTED_NOTIFICATION_POSITIONS,SUPPORTED_NOTIFICATION_ACTION_VARIANTS,HostMapStyleContext,RecordPagePreferencesContext,PrintPageContext,NoDataSourcePanel. The entry reached them throughexport *, sosrc/index.ts(SchemaRenderer.js,ElementDataSourceGate.js),src/hooks/index.ts(useAnimation.js) andsrc/context/index.ts(ThemeContext.js,NotificationContext.js,HostMapStyleContext.js,RecordPagePreferencesContext.js,PrintPageContext.js) now name every kept export of those modules, listed from the TypeScript checker's export list; thevisibilityDiagnosticnamed list drops one line.@object-ui/fields, off the entry only:isImageValue,uploadResultView,withRecentUploads,FILE_STORAGE_BASE_PATH(widgets/file-value.ts),FILTER_CONDITION_EXTRA_OPERATORS(widgets/FilterConditionField.tsx),sumColumn(widgets/GridField.tsx). The threeexport *lines for those modules insrc/index.tsxbecome named lists of their kept exports..changeset/25921-react-zero-consumer-exports.mdand.changeset/25921-fields-zero-consumer-exports.md: patch level,!title, BREAKING paragraph that says which names are gone from the package and which only left the entry, FROM/TO lines for every retired name, ADR-0087 markernot-required (runtime-export-retired …)naming every operand.Why
Card #25921 narrows
ui/packagesbarrels to names someone imports. The checker export list after this PR is exactly the census list minus these 26 (react 324 to 304, fields 218 to 212), nothing added, and every kept name resolves to the same declaring module as before.Tests
Census on
origin/mainb90a6f7 with the method of batches 1 to 3: entry export names from the TypeScript checker; per namegit grep -l -w -Foutside the package, minus**/CHANGELOG.md,pnpm-lock.yamland.changeset/**(test files count); the package*.md(glob, top-level README included) anddemo/; keep rule 3 (reached from a kept export's declared signature, walked through non-exported local declarations too, which is what keepsDropZoneConfig); hotcrm6961ab1. Full table: project fileissue-25921-seat6/census-b4.md.@object-ui/react@object-ui/fieldsKept by seat ruling, zero hits notwithstanding: react
UNRESOLVABLE_ENABLEMENT_PREFIX(the entry comment names a host contract, and its siblingUNRESOLVABLE_VISIBILITY_PREFIXhas readers),createLazyPlugin/preloadPlugin/LazyPluginOptions(content/docs/frontend/architecture-overview.mdxteaches the module),RELATED_CHANGED_EVENT(plugin-detail spells its literal); fieldsUploadIncompleteError(thrown by the keptfileValueForSubmit),deriveHexBadgePalette/HexBadgePalette/UrlCellRenderer(declared inindex.tsx, a module move).Controls (outside hits):
SchemaRenderer1104,ElementDataSourceGate102,useTheme13,usePageVariables10,useNotifications9,usePrintPage7,HostMapStyleProvider5,reportUnresolvableVisibilityPredicate3,useRecordPagePreferences3,useConfigBagEvaluator3,useAnimation1,useKeyboardShortcuts1;isMatchAllCriteria10,fileValueForSubmit2,readFileValue2,lookupAutofillPatch2; hotcrm imports@object-ui/reactin 3 files.Readings at c5c2149:
turbo run build --filter=@object-ui/console... --filter='./packages/**' --filter='@objectstack/dogfood^...'113 of 113, VERDICT command-exit 0; thenturbo run build --force --filter=@object-ui/react --filter=@object-ui/fields(50 of 50) andtype-checkfor both (tsc --noEmit && tsc -p tsconfig.test.json), VERDICT command-exit 0.pnpm --filter @object-ui/react test: Test Files 137 passed (137), Tests 1568 passed (1568), exit 0.pnpm --filter @object-ui/fields test: Test Files 298 passed, 1 skipped (299), Tests 4467 passed, 7 skipped (4474), exit 0..d.ts, covering every kept name and not only the retired ones: two temporaryapp-shellprobes re-exporting ALL 324 base entry names of@object-ui/reactand all 218 of@object-ui/fields,tsc --noEmit -p tsconfig.jsoninui/packages/app-shell: exactly 26 errors (TS2305/TS2724 … has no exported member), all in the probes, and the set of names they name is identical (diff) to the 26 retired names; the other 516 resolved. Probes deleted;git statusclean.vitest run scripts/(ui): Test Files 170 passed, 2 skipped (172); Tests 4970 passed, 2 skipped (4972); VERDICT command-exit 0.dispatch-gates --commands): 29 derived, 29 run, each exit 0 captured before any pipe;--ranreconciliation: 29 run, 0 NOT-MEASURED (a derived zero: all 29 recorded an exit code, none is 3).check-platform-checklist --changed-from origin/main: exit 0, 0 anchored files.pnpm --filter @objectstack/dogfood testunder the lock): Test Files 420 passed, 3 skipped (423); Tests 3504 passed, 36 skipped (3540); VERDICT command-exit 0 (20m45s, shared box).Type Check UI) is CI's: no consumer imports a retired name (census), and the reverse probe reads the same rebuilt.d.tsthe consumers read.Acceptance notes
claude/project-thread-r79zcv, notclaude/issue-25921-*.content/docs/frontend/architecture-overview.mdx:143says plugins are wrapped byLazyPluginLoader, butcreateLazyPlugin/preloadPluginhave no reader anywhere outside their own jsdoc test; deleting the module and correcting that paragraph is a separate decision (kept here by seat ruling).RelatedList.tsxand two of its tests write theobjectui:related-changedliteral instead of importingRELATED_CHANGED_EVENT.components(about 65 zero-hit shadcn sub-parts),core(about 47),layout/plugin-editor/permissions(1 each); fields names declared inindex.tsxneed a module move first.Generated by Claude Code