Context
This is a sub-issue of #53493 (Replace modal screens with modals from @react-navigation).
For full background and migration approach, see the triage analysis comment and the sub-issue breakdown comment.
Problem
PaymentCardCurrencyModal is currently implemented using react-native-modal, which causes animation inconsistencies on native platforms.
Migration approach (Group 2 — Lift local useState to Onyx)
- File:
src/components/AddPaymentCard/PaymentCardCurrencyModal.tsx
- Used by: Only
PaymentCardChangeCurrencyForm.tsx
- On select:
onCurrencyChange(selectedCurrency) → setCurrency(...) local state, consumed by changeBillingCurrency(currency, values) on form submit
- State to lift:
currency in PaymentCardChangeCurrencyForm → CHANGE_BILLING_CURRENCY_FORM draft or a dedicated Onyx key.
Steps
- Lift the
currency state from PaymentCardChangeCurrencyForm to the CHANGE_BILLING_CURRENCY_FORM draft or a dedicated Onyx key.
- Create a new
@react-navigation modal route for currency selection.
- Extract the modal content into a standalone screen component that writes the selected currency to Onyx.
- Replace the
<PaymentCardCurrencyModal /> usage with a navigation call.
- Test the currency change flow on iOS, Android, and web.
Reference
Upwork Automation - Do Not Edit
- Upwork Job URL: https://www.upwork.com/jobs/~022054512639937790325
- Upwork Job ID: 2054512639937790325
- Last Price Increase: 2026-05-13
Issue Owner
Current Issue Owner: @mallenexpensify
Context
This is a sub-issue of #53493 (Replace modal screens with modals from
@react-navigation).For full background and migration approach, see the triage analysis comment and the sub-issue breakdown comment.
Problem
PaymentCardCurrencyModalis currently implemented usingreact-native-modal, which causes animation inconsistencies on native platforms.Migration approach (Group 2 — Lift local
useStateto Onyx)src/components/AddPaymentCard/PaymentCardCurrencyModal.tsxPaymentCardChangeCurrencyForm.tsxonCurrencyChange(selectedCurrency)→setCurrency(...)local state, consumed bychangeBillingCurrency(currency, values)on form submitcurrencyinPaymentCardChangeCurrencyForm→CHANGE_BILLING_CURRENCY_FORMdraft or a dedicated Onyx key.Steps
currencystate fromPaymentCardChangeCurrencyFormto theCHANGE_BILLING_CURRENCY_FORMdraft or a dedicated Onyx key.@react-navigationmodal route for currency selection.<PaymentCardCurrencyModal />usage with a navigation call.Reference
@react-navigation#53493Upwork Automation - Do Not Edit
Issue Owner
Current Issue Owner: @mallenexpensify