Skip to content

iOS- Onyx files appears in Files and Unable to view attachment after upgrade #102798

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.0-0
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: #101437
Email or phone of affected tester (no customers): [email protected]
Issue reported by: Applause Internal Team
Bug source: Pull Request QA execution
Device used: iPhone 11 iOS 26.7.1
App Component: User Settings

Action Performed:

Preconditions:

  • Install Prod build and login testing account.
  • Use another account from second device, send some pdf, image files attachment to testing account
  1. Open Hybrid app
  2. Upgrade to latest staging build
  3. Go to hybrid app again
  4. Tap on Continue until reaching Home
  5. Go to Expensify folder in local Files app
  6. Navigate back to Hybrid app
  7. Go to DM chat with second device account
  8. Open attachment files
  9. Send some attachment files

Expected Result:

OnyxDB should not appears in Expensify folder. User can view the attachment files

Actual Result:

OnyxDB appears in Expensify folder. User unable to view the uploaded attachment files.
Unable to test in Prod because we can not upgrade from prod

Workaround:

Unknown

Platforms:

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

Screenshots/Videos

Bug7274274_1790848164892.101437Issue.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Rizky Gunawan
Bug ID: 7274274

Activity

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

  3. melvin-bot commented on Oct 1, 2026

    @melvin-bot

    You have been assigned to this deploy blocker because you recently merged this PR: #101437

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

    @melvin-bot

    @NicolasBonet @ikevin127 you have been assigned to this deploy blocker because you reviewed the offending PR: #101437

  6. melvin-bot commented on Oct 1, 2026

    @melvin-bot

    @chrispader you have been assigned to this deploy blocker because you authored the offending PR: #101437

  7. melvin-bot commented on Oct 1, 2026

    @melvin-bot

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

  8. MelvinBot commented on Oct 1, 2026

    @MelvinBot
    Contributor

    Deploy Blocker Investigation

    Causing PR: chore(deps): Update NitroSQLite to 9.8.2. The auto-assignment is correct.

    Confidence: Medium-high for OnyxDB appearing in Files. Medium for attachments not loading.

    Root cause: Before this PR, a local patch stored OnyxDB in Library/Application Support for every host app. The PR removed that patch. NitroSQLite 9.8.x now uses Application Support only if the host app's Info.plist sets RNNitroSQLite_DatabaseLocation = ApplicationSupport. The PR set this key only in the standalone NewDot plist. The HybridApp host app uses its own plist, which lacks the key. So HybridApp creates a new, empty OnyxDB in Documents, and iOS shows that folder in the Files app.

    Recommendation: Fix forward (revert if that stalls).

    1. Add RNNitroSQLite_DatabaseLocation = ApplicationSupport to the HybridApp host app's iOS Info.plist. Cherry-pick it to staging. Do not set RNNitroSQLite_AppGroup, because it overrides the location key.
    2. Retest with a fresh prod-to-staging upgrade. Devices that already ran 9.5.0-0 have a split database.
    3. If the plist fix can't be confirmed on staging quickly, revert chore(deps): Update NitroSQLite to 9.8.3 and chore(deps): Update NitroSQLite to 9.8.2 together, plus the matching HybridApp lockfile changes.

    Keep DeployBlockerCash. Without the fix, production HybridApp users would lose local state and queued offline writes. Upstream migration treats a database in Documents as the live copy. If the key ships in a later release, the empty database would overwrite the user's original one.

    Investigation details

    Mechanism

    Attachments symptom (not proven from App code). Two explanations fit, and both trace to the 9.8.x upgrade:

    Other PRs ruled out. I checked every PR on Deploy Checklist: New Expensify 2026-09-30. Only the two NitroSQLite PRs touch NitroSQLite, the iOS Info.plist, or on-disk storage location. The receipt-storage PRs affect expense receipts, not DM attachments. No PR touched the attachment cache code.

    Optional hardening: Extend the Jest check to cover the HybridApp plist, or log the database path at startup on HybridApp.


    Next Steps: Reply with @MelvinBot <your feedback> to refine this analysis.


    view run

  9. chrispader commented on Oct 1, 2026

    @chrispader
    Contributor
  10. IuliiaHerets commented on Oct 1, 2026

    @IuliiaHerets

    Tester unable to find the Expensify folder in the local files app. Is there any precondition missing?

    102798-1.mp4
  11. IuliiaHerets commented on Oct 1, 2026

    @IuliiaHerets

    The Expensify folder appears after sending some files
    Issue is not reproducible on iPhone 13 Mini/ iOS 26.5 in v9.5.0-5

    102798-2.mp4
  12. self-assigned this
    on Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

BugSomething is broken. Auto assigns a BugZero manager.EngineeringHourlyKSv2

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions