Illustrative example with made-up findings. Not from a real client.
Each finding separates the evidence, the advisory's own severity where there is one, and our priority for this particular app. Severity describes a vulnerability in general; priority depends on whether it is reachable and what it exposes.
Secret payments API key in the release JavaScript bundle
Priority: High
Evidence: the key is set through react-native-config and appears in plain text in the shipped bundle.
Fix: rotate the key now, then move the calls that need it to the backend and give the app short-lived, per-user tokens. Moving the key into Keychain would not help, because it would still ship with the app.
Refresh token stored in AsyncStorage
Priority: Medium
Evidence: the token is readable in the app's unencrypted Async Storage data on a test device.
Fix: store tokens with Keychain and Keystore-backed storage (react-native-keychain or expo-secure-store) and remove the old entry on upgrade.
minimist 1.2.5 matches GHSA-xvch-5gv4-984h
Advisory: Critical Priority: Low
Evidence: the advisory's affected range is >=1.0.0 <1.2.6. In this app the package is only used by a build script; it is not in the shipped bundle and never parses user input.
Fix: move to 1.2.6 or later through the parent package at the next routine dependency update.
React Native 0.68 is unsupported
Planning
Evidence: 0.68 is outside the officially supported releases. Being unsupported is not a vulnerability by itself; no finding in this audit traces to React Native core. The risk is that future fixes won't be released for this version.
Fix: plan an upgrade to a supported release. It crosses the New Architecture boundary at 0.82, so scope it as a migration.
3 dependencies without a release in over 2 years
Planning
Evidence: none matches a published advisory, but two block the React Native upgrade.
Fix: replace them or take over maintenance as part of the upgrade plan.
No certificate pinning
Not needed here
Evidence: traffic is HTTPS-only with App Transport Security and Android's cleartext defaults intact. Pinning is a threat-model decision, and Apple and Android both advise against it in most cases.
No change. If the threat model changes, pin public keys with backup pins and a rotation plan.
Release build configuration
Pass
Evidence: release builds use the release configuration, and cleartext exceptions exist only in debug configuration.
Fix first:
Rotate the exposed API key.