Skip to content

[Due for payment 2026-10-16] [$175] Expense - Device settings page when location is disabled in device. #102961

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: V9..5.2-0
Reproducible in staging?: Yes
Reproducible in production?: N/A - new feature, doesn't exist in prod
If this was caught during regression testing, add the test name, ID and link from BrowserStack: #102013
Email or phone of affected tester (no customers): dreamnitethedragon+vegst@gmail.com
Issue reported by: Applause Internal Team
Bug source: Exploratory - Significant User Experience Deterioration
Device used: Redmi note 10s android 13
App Component: User Settings

Action Performed:

  1. Launch app
  2. Turn off location services for the whole device
  3. Go to FAB > Track distance > GPS and tap Start.
    Verify a "Location access required" modal appears with Open settings and Dismiss buttons
  4. Tap Dismiss and verify the modal closes and no trip starts
  5. Tap Start again, tap Open settings, and verify the device location settings open

Expected Result:

Device location settings page must be opened when location is disabled in device.

Actual Result:

Device settings page is opened instead of device location settings page when location is disabled in device.

Workaround:

Unknown

Platforms:

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

Screenshots/Videos

Bug7277439_1791172358522.Screenrecorder-2026-10-05-09-16-45-574.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Julia Ponikarchuk
Bug ID: 7277439

Upwork Automation - Do Not Edit
Issue OwnerCurrent Issue Owner: @mallenexpensify

Activity

  1. added
    DeployBlockerCashThis issue or pull request should block deployment
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 5, 2026
  2. applause-bot commented on Oct 5, 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/f967582113468ff50c42204dc9c1e096cbf147f051b232bcfbf1698f3c2622ff

  3. melvin-bot commented on Oct 5, 2026

    @melvin-bot

    @roryabraham recently merged #102013, but they are OOO right now, so I'll auto-assign someone else.

  4. melvin-bot commented on Oct 5, 2026

    @melvin-bot

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

  5. github-actions commented on Oct 5, 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.
  6. melvin-bot commented on Oct 5, 2026

    @melvin-bot

    @roryabraham @ZhenjaHorbach you have been assigned to this deploy blocker because you reviewed the offending PR: #102013

  7. melvin-bot commented on Oct 5, 2026

    @melvin-bot

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

  8. MelvinBot commented on Oct 5, 2026

    @MelvinBot
    Contributor

    Deploy Blocker Investigation

    Verdict: not a regression from this release. Don't revert. Demote it once QA confirms it reproduces on production.

    Root cause: On Android, "Open settings" sends the generic android.settings.SETTINGS intent. That intent opens the top-level device settings, not the location settings (openSettings/index.android.ts:3-6).

    Causing PR: Add location services check - GPS trip, merged 2026-01-20. That PR added this file, and the file hasn't changed since. [Batch 6] Migrate GPS trip ConfirmModal usages to useConfirmModal did not cause this. It only moved the modal to useConfirmModal() and still passes the same openSettings function.

    Recommended fix (fix forward): In openSettings/index.android.ts, change the intent to 'android.settings.LOCATION_SOURCE_SETTINGS'. Optionally, fall back to Linking.openSettings() if sendIntent rejects.

    Investigation details
    • Flow: checkSettingsAndPermissions calls hasServicesEnabledAsync(). If location services are off, it shows the disabled-services modal (GPSButtons/index.tsx:168-179). Its confirm button runs openSettings (GPSButtons/index.tsx:85-96).
    • PR [Batch 6] Migrate GPS trip ConfirmModal usages to useConfirmModal #102013 diff: the old modal's handler (openSettingsForLocationServices) called openSettings(). The new modal passes openSettings directly, so the behavior is unchanged. The PR didn't touch the openSettings/ folder.
    • Likely already in production: the GPS tab has no beta gate in DistanceRequestStartPage.tsx, and this code has shipped since January. The issue says "N/A - new feature", so QA should confirm it on the production Android build before anyone removes DeployBlockerCash.
    • iOS matches: iOS also opens general settings, not Location Services (openSettings/index.ios.ts:4-8). That suggests opening general settings was intended. Whether iOS should change too is a product decision.
    • Not affected: the permission-denied modal calls Linking.openSettings(), which opens the app's own settings page. That is correct (GPSButtons/index.tsx:98-116).
    • Owners: the auto-assignment is based on the wrong PR. GCyganek (author of PR Add location services check - GPS trip #79488) and its reviewers dukenv0307 and AndrewGable are better owners.
    • Testing: I didn't run a test. The bug is in an Android-only native intent, and web can't reproduce it.

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


    view run

  9. 25 remaining items

  10. changed the title [-][$175] Expense - Device settings page when location is disabled in device.[/-] [+][Due for payment 2026-10-16] [$175] Expense - Device settings page when location is disabled in device.[/+] on Oct 9, 2026
  11. melvin-bot commented on Oct 9, 2026

    @melvin-bot

    @ZhenjaHorbach

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

    If no regressions arise, payment will be issued on 2026-10-16. 🎊

    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]

  12. melvin-bot commented on Oct 12, 2026

    @melvin-bot

    @ZhenjaHorbach Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

  13. melvin-bot commented on Oct 14, 2026

    @melvin-bot

    @ZhenjaHorbach Huh... This is 4 days overdue. Who can take care of this?

  14. melvin-bot commented on Oct 15, 2026

    @melvin-bot

    Triggered auto assignment to @mallenexpensify (Awaiting Payment)

  15. melvin-bot commented on Oct 15, 2026

    @melvin-bot

    Payment Summary

    Resolving PRs:

    BugZero Checklist (@mallenexpensify)

    • I have confirmed assignees, roles, and Upwork contracts look correct
    • I have paid out Upwork contracts / manual NewDot requests
    • [BugZero Assignee] I have created a GH issue for creating/updating the regression test once above steps have been agreed upon
  16. mallenexpensify commented on Oct 17, 2026

    @mallenexpensify
    Contributor

    Payment Summary

    Contributor+: @ZhenjaHorbach due $175 via NewDot

    @ZhenjaHorbach plz address mentions of 'deploy blocker' so I don't have to research (cuz I pay 100+ issues a week). Thx

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

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionBugSomething 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