Repository navigation
Bump async to 2.6.4 in example app - #347
Draft
jasperhuangg wants to merge 1 commit into
Draft
jasperhuangg wants to merge 1 commit into
jasperhuangg wants to merge 1 commit into
Conversation
Fixes prototype pollution in async (GHSA-fwr7-v2mv-hh25, Dependabot alert #32). Only the async entry in example/yarn.lock changes.
jasperhuangg
commented
Nov 12, 2026
jasperhuangg
left a comment
Author
There was a problem hiding this comment.
(Jasper's Agent)
- Lockfile-only bump. The integrity/sha1 match the registry, 2.6.4 satisfies
^2.4.0, and thelink:..entry is identical to master. - The only path is react-native → cli 4.10.1 → metro 0.58.0 → async. Nothing actually requires it: Metro didn't load it while building both bundles or serving them from the dev server.
- The published package (no deps,
.npmignoredropsexample) and Expensify/App (dropped this lib in 2021) are unaffected. - Covers Dependabot alert 32, the only open async alert. Supersedes #180.
- Fixed the Explanation's bare "#32" so it links to the alert instead of PR 32.
- Updated Tests: Node 17+ needs
--openssl-legacy-provider, added simulator-free Metrocurlchecks, corrected the app/share-sheet labels, and marked iOS optional sincepod installfails on Xcode 27 (unrelated to this PR).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Explanation of Change
asyncfrom 2.6.3 to 2.6.4 in the example app's lockfile. This fixes the prototype pollution advisory (GHSA-fwr7-v2mv-hh25, Dependabot alert 32).asyncentry inexample/yarn.lock. No other packages move.asynconly reaches the example app's dev tooling: React Native CLI → Metro →async. The published library has no dependencies and its package excludesexample/(.npmignore), so nothing changes for apps that installreact-native-share-menu.Fixed Issues
$ https://github.com/Expensify/Expensify/issues/701874
This supersedes #180, which can't be updated because master has unsigned commits that the signature rule rejects.
Tests
Before you start: on Node 17 or newer, run
export NODE_OPTIONS=--openssl-legacy-providerin every terminal you use below. Without it, React Native 0.63's Metro answers every bundle request with a 500 (error:0308010C:digital envelope routines::unsupported), and the app shows a red screen. This also happens onmaster. Metro may also printWatchman crawl failed. Retrying once with node crawlerwithpath "." must be absolute. That comes fromwatchFoldersinexample/metro.config.js, is the same onmaster, and is safe to ignore.Metro and the CLI (no simulator needed)
example/, runyarn install --frozen-lockfile.git statusshows no change toyarn.lock.node -p "require('async/package.json').version".2.6.4.yarn start.example/, runcurl -s -o /dev/null -w '%{http_code}\n' 'http://localhost:8081/index.bundle?platform=ios&dev=true'.200. This is the main app bundle.curl -s -o /dev/null -w '%{http_code}\n' 'http://localhost:8081/index.share.bundle?platform=ios&dev=true'.200. This is the bundle the iOS share extension loads.curl -s -o /dev/null -w '%{http_code}\n' 'http://localhost:8081/index.bundle?platform=android&dev=true'.200.example/App.js, change theReact Native Share Menutitle text toShare Menu Testand save. Then runcurl -s 'http://localhost:8081/index.bundle?platform=ios&dev=true' | grep -c 'Share Menu Test'.1. Metro picked up the edit without a restart. Undo the change and save.Android app (keep Metro from step 3 running)
yarn androidfromexample/.examplein the launcher) opens and shows the "React Native Share Menu" title, with no red error screen.Share Menu Testwithout restarting the app. Undo the change and save.Shared type: text/plainandShared text:followed by the selected text.Shared type: image/...and displays the image.iOS app (optional: needs an Xcode that can still build React Native 0.63; on Xcode 27,
pod installfails building Flipper-Glog, onmastertoo)example/ios, runpod install. Then, fromexample/, runyarn ios.Teston the home screen) opens in the simulator and shows the "React Native Share Menu" title, with no red error screen.Share Menu Testwithout restarting the app. Undo the change and save.Testapp opens and showsShared type: text/plainandShared text:followed by the selected text.Shared type: image/..., displays the image, and showsExtra data: {"hello":"from the other side"}.Automated checks already run on this branch (not manual tests): frozen-lockfile install and
yarn check --integritypass, a prototype-pollution check fails on async 2.6.3 and passes on 2.6.4, and Metro builds iOS bundles for bothindex.jsandindex.share.js.QA
react-native-share-menupackage.