Skip to content

KYC flow-Country and state fields are empty and cannot be filled #105210

Closed

Description

@applause-bot

If you haven’t already, check out our contributing guidelines for onboarding. To join our Slack channel, fill out this form.


Version Number: 9.5.24-2
Reproducible in staging?: Yes
Reproducible in production?: Unable to validate in Prod - Provide reasoning.
If this was caught during regression testing, add the test name, ID and link from BrowserStack: https://test-management.browserstack.com/tc/TC-4422. https://test-management.browserstack.com/tc/TC-300156
Email or phone of affected tester (no customers): N/A
Issue reported by: Applause Internal Team
Bug source: Regression TC Execution
Device used: MacBook Air 26.6.2 Chrome, iPhone 15 iOS 26.6.1
App Component: Other

Action Performed:

  1. Sign in to ND with a new gmail account, verify the account
  2. Open a chat with another user, click + button, select Pay
  3. Enter an amount and select Pay with personal account
  4. Click Next, Log into your bank, Regions 1111
  5. Enter first and last name, click Next
  6. Enter a valid address in Address line 1 field, select from suggested
  7. Observe the Country and State fields
  8. Try to update the fields manually

Expected Result:

The country and state are populated from the suggested address. The fields can be filled manually

Actual Result:

Country and State fields are empty after selecting the suggested address and cannot be filled manually

Workaround:

Unknown

Platforms:

  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome Safari

Screenshots/Videos

Bug7298415_1793146391040.Country_and_state_empty.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Alberto Gutierrez
Bug ID: 7298415

Activity

  1. applause-bot commented on Oct 28, 2026

    @applause-bot
    Author

    While Applause doesn't embed attachments for this bug, here are the links for quick view:
    https://platform.applause.com/services/links/v1/external/165355bb0d028763725a16720dc5aa8ad905ccbe960473c4380d58f22f7d377c

  2. added
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 28, 2026
  3. github-actions commented on Oct 28, 2026

    @github-actions
    Contributor

    👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

    1. Identify the pull request that introduced this issue and revert it.
    2. Find someone who can quickly fix the issue.
    3. Fix the issue yourself.
  4. melvin-bot commented on Oct 28, 2026

    @melvin-bot

    Triggered auto assignment to @jasperhuangg (DeployBlockerCash), see https://stackoverflowteams.com/c/expensify/questions/9980/ for more details.

  5. melvin-bot commented on Oct 28, 2026

    @melvin-bot

    💬 A slack conversation has been started in #expensify-open-source

  6. MelvinBot commented on Oct 28, 2026

    @MelvinBot
    Contributor

    Deploy Blocker Analysis

    Causing PR: [No QA] Disallow manual memoization in compiled React code (author roryabraham, merged 2026-10-26). Confidence: High. It is the only PR in this deploy that changes the affected file.

    Root Cause: The PR removed the useMemo around address in AddPersonalBankAccountPage/substeps/AddressStep.tsx:43-50. address is now a new object on every render. The effect at AddressStep.tsx:64-72 lists address as a dependency, so it runs after every render. Each time, it resets Country and State to the saved values, which are empty for a new account. Selecting a suggestion or picking a value manually is wiped immediately.

    Recommended Fix (roll forward): In AddressStep.tsx, remove address from the effect's dependency array and drop the always-true if (!address) guard. The effect then runs only when the primitive fields (address?.state, address?.country, address?.city, address?.zip, draftCountry, draftState) change.

    A full revert is the fallback. It is risky, because the PR touches 932 files and later PRs build on it.

    Investigation details
    • Screen: The steps (Pay with personal account → Plaid → name → address) go through AddPersonalBankAccountPage, whose address page is substeps/AddressStep.tsx.
    • Why only Country and State break: In AddressForm, Country and State are controlled inputs (value={country} / value={state}, AddressForm.tsx:174-206). City and Zip use defaultValue (AddressForm.tsx:209-231), so the resets don't reach them.
    • Why the user's choice is lost: handleAddressChange (AddressStep.tsx:74-100) sets the new country or state. That re-renders the page, which rebuilds address, which reruns the effect and sets the value back to ''.
    • Staging bundle check: In the deployed staging web bundle, React Compiler compiled AddressStep but did not cache address. The object is rebuilt each render, and the effect's dependency array includes it. So the PR's assumption that the compiler would keep address stable does not hold here. Native uses the same compiler, which fits the iOS and Android reports.
    • Why production is fine: Production does not include this PR, so the explicit useMemo is still there.
    • Follow-up: Other files changed by the PR may have the same pattern: an object built during render is listed in an effect's dependencies, and the effect sets state. Those files are worth a quick scan.
    • Limitation: I did not reproduce this in a running app. The evidence is the source code plus the compiled staging bundle.

    Next Steps: Reply with @MelvinBot implement this to create a draft PR, or @MelvinBot <your feedback> to refine this analysis.

  7. roryabraham commented on Oct 28, 2026

    @roryabraham
    Contributor
  8. IuliiaHerets commented on Oct 28, 2026

    @IuliiaHerets

    @roryabraham issue was checked here

  9. melvin-bot commented on Oct 29, 2026

    @melvin-bot

    @roryabraham

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.24-8 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

    The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]

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

Metadata

Metadata

Assignees

Labels

BugSomething is broken. Auto assigns a BugZero manager.DailyKSv2Engineering

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions