Sub-issue of #83762.
Migration plan: Guccio163 comment.
Batch
Files
src/components/DistanceRequest/DistanceRequestFooter.tsx
src/components/EmptyStateComponent/index.tsx
src/components/FloatingGPSButton/index.native.tsx
src/components/MoneyReportHeaderActions/MoneyReportHeaderSecondaryActions.tsx
src/components/MoneyRequestConfirmationListFooter/ConfirmationFieldList.tsx
src/components/MoneyRequestReportView/MoneyRequestReportTransactionList.tsx (has link → LinkButton)
src/components/Navigation/QuickCreationActionsBar/index.tsx ×4
src/pages/DynamicReportParticipantDetailsPage.tsx
src/pages/DynamicReportParticipantsPage.tsx
src/pages/DynamicRoomMemberDetailsPage.tsx
src/pages/DynamicRoomMembersPage.tsx
src/pages/EnablePayments/Wallet/AddBankAccount/SetupMethod.tsx
src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx ×3 (has link → LinkButton)
src/pages/ReimbursementAccount/NonUSD/SignerInfo/HangTight.tsx
src/pages/domain/Admins/DomainAdminsPage.tsx ×2
src/pages/domain/Groups/DomainGroupsPage.tsx
src/pages/domain/Members/DomainMemberDetailsPage.tsx
src/pages/domain/Members/DomainMembersPage.tsx
src/pages/home/SpendOverTimeSection/SpendOverTimeSectionContent.tsx
src/pages/media/AttachmentModalScreen/routes/TransactionReceiptModalContent.tsx ×6
src/pages/settings/Profile/AgentAIPromptSection.tsx
src/pages/settings/Profile/ProfilePage.tsx
src/pages/settings/Rules/ExpenseRulesPage.tsx
src/pages/settings/Subscription/FreeTrial.tsx
src/pages/settings/Wallet/ExpensifyCardPage/ChangePINPage.tsx ×2
src/pages/settings/Wallet/ExpensifyCardPage/index.tsx ×7
src/pages/settings/Wallet/TravelCVVPage/TravelCVVPage.tsx ×2
src/pages/workspace/WorkspaceMembersPage.tsx
src/pages/workspace/WorkspaceOverviewPage.tsx ×2
src/pages/workspace/categories/WorkspaceCategoriesPage.tsx
src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx
src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx
src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx
src/pages/workspace/reports/ReportFieldsListValuesPage.tsx
src/pages/workspace/rooms/WorkspaceRoomsPage.tsx ×2
src/pages/workspace/rules/PolicyRulesPageRevamp.tsx
src/pages/workspace/tags/WorkspaceTagsPage.tsx
src/pages/workspace/taxes/WorkspaceTaxesPage.tsx
Migration rules
Mechanical swap per prop-change rules:
- Import:
@components/Button → @components/ButtonComposed
text / icon / related props → <Button.Text> / <Button.Icon> children
success / danger → variant="success" / variant="danger"
small / medium / large → size={CONST.BUTTON_SIZE.SMALL | MEDIUM | LARGE}
link → <LinkButton> from @components/ButtonComposed/composed/LinkButton
- Forwarded size props: update
DROPDOWN_BUTTON_SIZE → BUTTON_SIZE where applicable
// before
<Button success large text="Add members" icon={Plus} iconRight={ArrowRight} onPress={onAdd} />
// after
<Button variant="success" size={CONST.BUTTON_SIZE.LARGE} onPress={onAdd}>
<Button.Icon src={Plus} />
<Button.Text>Add members</Button.Text>
<Button.Icon src={ArrowRight} />
</Button>
Out of scope
- Renaming wrapper public APIs (
ButtonWithDropdownMenu success/buttonSize → variant/size) — tracked separately
- Keep each wrapper's public API as-is; map to composed Button internally only
Acceptance criteria
Dependencies
- Blocked by: #93789
- Blocked by batch 1: deprecation guard must exist before merge
Issue Owner
Current Issue Owner: @mikolajpochec
Sub-issue of #83762.
Migration plan: Guccio163 comment.
Batch
link→LinkButton. Minor wrapper public prop mapping allowed internally only.Files
src/components/DistanceRequest/DistanceRequestFooter.tsxsrc/components/EmptyStateComponent/index.tsxsrc/components/FloatingGPSButton/index.native.tsxsrc/components/MoneyReportHeaderActions/MoneyReportHeaderSecondaryActions.tsxsrc/components/MoneyRequestConfirmationListFooter/ConfirmationFieldList.tsxsrc/components/MoneyRequestReportView/MoneyRequestReportTransactionList.tsx(has link → LinkButton)src/components/Navigation/QuickCreationActionsBar/index.tsx×4src/pages/DynamicReportParticipantDetailsPage.tsxsrc/pages/DynamicReportParticipantsPage.tsxsrc/pages/DynamicRoomMemberDetailsPage.tsxsrc/pages/DynamicRoomMembersPage.tsxsrc/pages/EnablePayments/Wallet/AddBankAccount/SetupMethod.tsxsrc/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx×3 (has link → LinkButton)src/pages/ReimbursementAccount/NonUSD/SignerInfo/HangTight.tsxsrc/pages/domain/Admins/DomainAdminsPage.tsx×2src/pages/domain/Groups/DomainGroupsPage.tsxsrc/pages/domain/Members/DomainMemberDetailsPage.tsxsrc/pages/domain/Members/DomainMembersPage.tsxsrc/pages/home/SpendOverTimeSection/SpendOverTimeSectionContent.tsxsrc/pages/media/AttachmentModalScreen/routes/TransactionReceiptModalContent.tsx×6src/pages/settings/Profile/AgentAIPromptSection.tsxsrc/pages/settings/Profile/ProfilePage.tsxsrc/pages/settings/Rules/ExpenseRulesPage.tsxsrc/pages/settings/Subscription/FreeTrial.tsxsrc/pages/settings/Wallet/ExpensifyCardPage/ChangePINPage.tsx×2src/pages/settings/Wallet/ExpensifyCardPage/index.tsx×7src/pages/settings/Wallet/TravelCVVPage/TravelCVVPage.tsx×2src/pages/workspace/WorkspaceMembersPage.tsxsrc/pages/workspace/WorkspaceOverviewPage.tsx×2src/pages/workspace/categories/WorkspaceCategoriesPage.tsxsrc/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsxsrc/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsxsrc/pages/workspace/members/WorkspaceMemberDetailsPage.tsxsrc/pages/workspace/reports/ReportFieldsListValuesPage.tsxsrc/pages/workspace/rooms/WorkspaceRoomsPage.tsx×2src/pages/workspace/rules/PolicyRulesPageRevamp.tsxsrc/pages/workspace/tags/WorkspaceTagsPage.tsxsrc/pages/workspace/taxes/WorkspaceTaxesPage.tsxMigration rules
Mechanical swap per prop-change rules:
@components/Button→@components/ButtonComposedtext/icon/ related props →<Button.Text>/<Button.Icon>childrensuccess/danger→variant="success"/variant="danger"small/medium/large→size={CONST.BUTTON_SIZE.SMALL | MEDIUM | LARGE}link→<LinkButton>from@components/ButtonComposed/composed/LinkButtonDROPDOWN_BUTTON_SIZE→BUTTON_SIZEwhere applicableOut of scope
ButtonWithDropdownMenusuccess/buttonSize→variant/size) — tracked separatelyAcceptance criteria
@components/Buttonimport)<Button link>usages swapped toLinkButtonFloatingGPSButton, etc.) use composed Button internallyDependencies
Issue Owner
Current Issue Owner: @mikolajpochec