You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[$175] Import contacts-Import contacts option is not displayed when tapping Start chat #103965
Version Number: 9.5.8-3 Reproducible in staging?: Yes Reproducible in production?: Yes If this was caught during regression testing, add the test name, ID and link from BrowserStack:#102928 Email or phone of affected tester (no customers): N/A Issue reported by: Applause Internal Team Bug source: Pull Request QA execution Device used: iPhone 15 iOS 26.6.2 App Component: Other
Action Performed:
Fresh install the app
Sign in with a new gmail account
Tap FAB - Start chat
Look for an "Import contacts" option
Expected Result:
"Import contacts" option is shown when tapping "Start chat"
Actual Result:
"Import contacts" option does not appear when tapping "Start chat"
Root Cause: This is expected behavior, not a bug. Migrate to Android Contact Picker and remove READ_CONTACTS added the "Import contacts" row in Start chat on Android only. Its test steps are Android-only. Its behavior table says the New chat row is "Not present" on iOS, and iOS is unchanged.
On iOS, the app still imports the whole address book after you grant the contacts permission. No row is needed.
Recommended Fix: No code change. Close this issue. To retest the PR, use an Android device, following the PR's "Android 17+" and "Android 16 or lower" steps.
Next Steps: Reply with @MelvinBot <your feedback> if iOS should get an "Import contacts" row too. That would be a new feature, not a regression.
changed the title [-]Import contacts-Import contacts option is not displayed when tapping Start chat[/-][+][$175] Import contacts-Import contacts option is not displayed when tapping Start chat[/+]on Oct 14, 2026
Please re-state the problem that we are trying to solve in this issue.
The "Import contacts" option does not appear when tapping "Start chat" from the Floating Action Button (FAB) on a fresh app installation.
What is the root cause of that problem?
In PR #102928, the "Import contacts" button on NewChatPage (src/pages/NewChatPage.tsx) was introduced with conditional rendering dependent on contactState?.pickContact and contact permission state. On a fresh installation, permissions have neither been requested nor initialized in Onyx state, causing contactState to be undefined/null on initial mount. As a result, the button condition evaluates to false and fails to render the "Import contacts" entry point.
What changes do you think we should make in order to solve the problem?
In src/pages/NewChatPage.tsx, update the condition for rendering the "Import contacts" item so that on supported native mobile platforms (iOS / Android), the button is rendered even if permissions have not yet been queried.
Trigger the native contact permission flow (requestContactsPermission) upon tapping the "Import contacts" item rather than requiring pre-granted permissions to simply display the option.
What alternative solutions did you explore? (Optional)
Querying permissions synchronously on app start, which causes unwanted permission prompts before the user interacts with chat.
Tests
Perform a clean install of the New Expensify app on iOS or Android.
Sign in with a new account.
Tap FAB > "Start chat".
Verify "Import contacts" is visibly displayed in the options list.
Tap "Import contacts" and verify the OS contact permission dialog appears as expected.
4. Root Cause: This is expected behavior, not a bug. Migrate to Android Contact Picker and remove READ_CONTACTS added the "Import contacts" row in Start chat on Android only. Its test steps are Android-only. Its behavior table says the New chat row is "Not present" on iOS, and iOS is unchanged.
Activity
applause-bot commentedon Oct 14, 2026
While Applause doesn't embed attachments for this bug, here are the links for quick view:
https://platform.applause.com/services/links/v1/external/e4473b3b0b34dab457efc91fe92e7b32cbab4e861c2c559245b471fae8d46a24
MelvinBot commentedon Oct 14, 2026
Issue Analysis
Root Cause: This is expected behavior, not a bug. Migrate to Android Contact Picker and remove READ_CONTACTS added the "Import contacts" row in Start chat on Android only. Its test steps are Android-only. Its behavior table says the New chat row is "Not present" on iOS, and iOS is unchanged.
The code matches that design:
src/libs/ContactPicker/index.ts:4setscanPickContacts = falsefor every platform except Android (index.android.ts:7).src/hooks/useSearchSelector/index.native.ts:41passespickContactonly whencanPickContactsis true.src/pages/NewChatPage/index.tsx:405renders the row only whenpickContactexists.On iOS, the app still imports the whole address book after you grant the contacts permission. No row is needed.
Recommended Fix: No code change. Close this issue. To retest the PR, use an Android device, following the PR's "Android 17+" and "Android 16 or lower" steps.
Next Steps: Reply with
@MelvinBot <your feedback>if iOS should get an "Import contacts" row too. That would be a new feature, not a regression.view run
j3ffffff commentedon Oct 14, 2026
melvin-bot commentedon Oct 14, 2026
Triggered auto assignment to Contributor-plus team member for initial proposal review - @rojiphil (
External)[-]Import contacts-Import contacts option is not displayed when tapping Start chat[/-][+][$175] Import contacts-Import contacts option is not displayed when tapping Start chat[/+]melvin-bot commentedon Oct 14, 2026
Job added to Upwork: https://www.upwork.com/jobs/~022110270660163217377
jloa-dev commentedon Oct 19, 2026
Contributor details
Your Expensify account email: jloa.dev@gmail.com
Upwork Profile Link: https://www.upwork.com/freelancers/~01584ea0bc208b0a94
Proposal
Please re-state the problem that we are trying to solve in this issue.
The "Import contacts" option does not appear when tapping "Start chat" from the Floating Action Button (FAB) on a fresh app installation.
What is the root cause of that problem?
In PR #102928, the "Import contacts" button on
NewChatPage(src/pages/NewChatPage.tsx) was introduced with conditional rendering dependent oncontactState?.pickContactand contact permission state. On a fresh installation, permissions have neither been requested nor initialized in Onyx state, causingcontactStateto be undefined/null on initial mount. As a result, the button condition evaluates to false and fails to render the "Import contacts" entry point.What changes do you think we should make in order to solve the problem?
src/pages/NewChatPage.tsx, update the condition for rendering the "Import contacts" item so that on supported native mobile platforms (iOS / Android), the button is rendered even if permissions have not yet been queried.requestContactsPermission) upon tapping the "Import contacts" item rather than requiring pre-granted permissions to simply display the option.What alternative solutions did you explore? (Optional)
Querying permissions synchronously on app start, which causes unwanted permission prompts before the user interacts with chat.
Tests
melvin-bot commentedon Oct 19, 2026
✅ Contributor details stored successfully. Thank you for contributing to Expensify!
melvin-bot commentedon Oct 19, 2026
@rojiphil Eep! 4 days overdue now. Issues have feelings too...
melvin-bot commentedon Oct 21, 2026
@rojiphil Still overdue 6 days?! Let's take care of this!
rojiphil commentedon Oct 23, 2026
Closing the issue as this is expected behaviour.