Skip to content

Verify NitroSQLite iOS database directory in native CI #103804

Closed

Description

@MelvinBot

Problem

On iOS, NitroSQLite reads the RNNitroSQLite_DatabaseLocation plist key to store the Onyx database in Library/Application Support. If a dependency upgrade changes how its native code reads that key, NitroSQLite silently falls back to Documents. With file sharing enabled, Documents is visible in the Files app, so the Onyx database files become visible, shareable, and deletable by users.

The current CI checks only assert that the plist contains the key and value. They would still pass after such an upgrade, even though the native code no longer honors the setting. A regression like this was reported in iOS- Onyx files appears in Files and Unable to view attachment after upgrade.

Solution

Add a native regression check to the existing macOS verification job, renamed Verify iOS native configuration:

  • Compile the installed NitroSQLite package's unchanged ios/OnLoad.mm.
  • Run its iOS directory-selection branch with the host plist in a temporary bundle.
  • Assert that the selected directory is Application Support, and report the actual selection on failure.
  • Run the job on dependency and iOS changes, and also when the native test, the workflow, or NitroSQLite patches change.

Original proposal: https://github.com/Expensify/Mobile-Expensify/pull/14129#discussion_r4160094962

Related

Activity

  1. melvin-bot commented on Oct 21, 2026

    @melvin-bot

    @Julesssss @chrispader

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

  2. chrispader commented on Oct 21, 2026

    @chrispader
    Contributor

    @Julesssss feel free to close this whenever you feel like!

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

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions