Skip to content

[Due for payment 2026-08-25] Button migration batch 8: text+icon plain, icon-only, no-content #95177

Description

@mountiny

Sub-issue of #83762.
Migration plan: Guccio163 comment.

Batch

Files

text + icon · plain:

  • src/components/AnimatedSubmitButton/index.tsx ×2
  • src/components/Attachments/AttachmentView/index.tsx
  • src/components/Domain/CopyableTextField.tsx
  • src/components/Search/SearchPageHeader/SearchSaveButton.tsx
  • src/components/SettlementButton/AnimatedSettlementButton.tsx
  • src/pages/Debug/DebugJSON.tsx
  • src/pages/Debug/Report/DebugReportPage.tsx ×3
  • src/pages/MissingPersonalDetails/subPages/PIN.tsx
  • src/pages/domain/DomainsListPage.tsx
  • src/pages/inbox/report/ShowPreviousMessagesButton.tsx
  • src/pages/settings/Agents/AgentsPage.tsx
  • src/pages/settings/Agents/Fields/EditAgentAvatarPage.tsx ×2
  • src/pages/settings/Profile/Avatar/AvatarPreview.tsx
  • src/pages/workspace/WorkspacesListPage.tsx

icon-only:

  • src/components/Attachments/AttachmentCarousel/CarouselButtons.tsx ×2
  • src/components/AvatarCropModal/AvatarCropModal.tsx ×2
  • src/components/MapView/GPSMapView.tsx
  • src/components/MapView/MapView.tsx
  • src/components/MapView/MapViewImpl.web.tsx
  • src/pages/TransactionMerge/TransactionMergeReceipts.tsx
  • src/pages/iou/request/step/IOURequestStepScan/ReceiptView/index.tsx
  • src/pages/iou/request/step/IOURequestStepScan/components/ReceiptPreviews/index.tsx
  • src/pages/settings/Agents/AgentsListRow.tsx ×3

no-content:

  • src/components/Attachments/AttachmentCarousel/CarouselItem.tsx
  • src/components/ButtonComposed/index.tsx ⚠️ SKIP (JSDoc example)
  • src/components/ReportActionItem/ChronosOOOListActions.tsx
  • src/pages/inbox/report/FloatingMessageCounter.tsx
  • src/pages/inbox/report/actionContents/ChatMessageContent.tsx
  • src/pages/settings/Subscription/CardSection/CardSectionButton/index.tsx
  • src/pages/settings/Wallet/CardDetailsActionButtons.tsx

Migration rules

Mechanical swap per prop-change rules:

  • Import: @components/Button@components/ButtonComposed
  • text / icon / related props → <Button.Text> / <Button.Icon> children
  • success / dangervariant="success" / variant="danger"
  • small / medium / largesize={CONST.BUTTON_SIZE.SMALL | MEDIUM | LARGE}
  • link<LinkButton> from @components/ButtonComposed/composed/LinkButton
  • Forwarded size props: update DROPDOWN_BUTTON_SIZEBUTTON_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/buttonSizevariant/size) — tracked separately
  • Keep each wrapper's public API as-is; map to composed Button internally only

Acceptance criteria

  • Every listed file fully migrated (no remaining @components/Button import), except explicit SKIP entries
  • Wrapper components use composed Button internally
  • eslint-seatbelt count reduced accordingly
  • PR author spot-checks 2–3 representative screens

Dependencies

  • Blocked by: #93789
  • Blocked by batch 1: deprecation guard must exist before merge
Issue OwnerCurrent Issue Owner: @ZhenjaHorbach

Activity

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

Metadata

Metadata

Labels

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions