Skip to content

fix(mobile): unblock release flow — Android Hermes entryFile + iOS fastlane Xcode 26#14394

Merged
raymondjacobson merged 2 commits into
mainfrom
rj-mobile-release-retry-2
May 23, 2026
Merged

fix(mobile): unblock release flow — Android Hermes entryFile + iOS fastlane Xcode 26#14394
raymondjacobson merged 2 commits into
mainfrom
rj-mobile-release-retry-2

Conversation

@raymondjacobson
Copy link
Copy Markdown
Member

@raymondjacobson raymondjacobson commented May 23, 2026

Summary

Fixes both halves of the broken release run 26316494213 so a single re-release can ship both platforms.

1. Android RC + Prod — Hermes entryFile pointed at monorepo root

Both Android builds failed at the JS bundle task with:
```

  • What went wrong:
    A problem was found with the configuration of task ':app:createBundleReleaseCandidateReleaseJsAndAssets' (type 'BundleHermesCTask').
    • In plugin 'com.facebook.react' type 'com.facebook.react.tasks.BundleHermesCTask' property 'entryFile'
      specifies file '/home/runner/work/apps/apps/index.js' which doesn't exist.
      ```

When I added the Android gradle path overrides for the hoisted node_modules in #14365, I also set `react.root = file("../../../../")` (monorepo root). The React-Native Gradle plugin anchors `entryFile` to `root` (`PathUtils.kt#detectEntryFile` → `File(reactRoot, "index.js")`), so it searched for `/home/runner/work/apps/apps/index.js` instead of `packages/mobile/index.js`.

Drop the `root` override and let it default to `../..` (= `packages/mobile`, where `index.js` lives). The explicit `reactNativeDir`, `codegenDir`, and `cliFile` overrides are absolute paths and continue to point at the hoisted node_modules.

2. iOS RC + Prod — fastlane crash on Xcode 26 altool errors

Both iOS jobs successfully archived the IPA (gym ~20 min) but died at the `pilot` TestFlight upload step with:
```
fastlane_core/itunes_transporter.rb:266:in 'execute':
undefined method 'each' for nil (NoMethodError)
```

Root cause is two upstream bugs interacting:

  • Xcode 26 changed altool's error prefix from `*** Error:` to `ERROR:`. fastlane 2.225.0's `ERROR_REGEX = /*** Error:\s+(.+)/` no longer matches, so `error_line_index = nil`.
  • The fallback displayer does `@all_lines[-20..-1].each`. Under Ruby 3.x, that slice returns `nil` when the array has fewer than 20 elements (Ruby 3.0 stopped clamping out-of-range negative starts), so `.each` crashes on nil. The real altool error is hidden by this crash.

Both upstream bugs are fixed:

  • fastlane#29545 (455bb5e1, 2.228.0): displayer iterates `@all_lines` directly, no more broken slice
  • fastlane#29740 (744b01ce, 2.230.0): ERROR_REGEX matches both `*** Error:` and Xcode 26's `ERROR:`

Bump the iOS Gemfile pin from `~> 2.225.0` to `2.234.0` (latest at time of writing, includes both fixes). `Gemfile.lock` updated to match. Android's Gemfile is already `>= 2.220.0` and locks at 2.231.1 — unaffected.

If altool itself has a real upload error remaining, it will at least surface in the logs after this lands; can be addressed in a follow-up.

3. Re-trigger the release flow

  • `packages/mobile/package.json`: `1.5.181` → `1.5.182`
  • iOS `Info.plist` `CFBundleShortVersionString`: `1.1.194` → `1.1.195`
  • Android `versionName`: `1.1.530` → `1.1.531`

Test plan

  • Merge to main → version-check fires all 4 binary build/upload jobs
  • Android RC + Prod reach `fastlane releaseCandidate` / `prod` — no `BundleHermesCTask entryFile` failure
  • iOS RC + Prod either succeed end-to-end OR fail at `pilot` with a readable altool error (no more `undefined method 'each' for nil`)

🤖 Generated with Claude Code

…ease

When I added the Android gradle plugin path overrides for the hoisted
node_modules in PR #14365, I also moved `react.root` to the monorepo
root. That broke the React-Native Gradle plugin's entryFile lookup,
which is anchored at `root` — it ended up searching for index.js at
the monorepo root instead of packages/mobile/index.js. The Android
release/production builds in run 26316494213 failed with:

  > Task :app:createBundleReleaseCandidateReleaseJsAndAssets FAILED
  - In plugin 'com.facebook.react' type
    'com.facebook.react.tasks.BundleHermesCTask' property 'entryFile'
    specifies file '/home/runner/work/apps/apps/index.js'
    which doesn't exist.

Restore the default `root = ../..` (packages/mobile) so entryFile
resolves to packages/mobile/index.js. The other explicit overrides
(reactNativeDir, codegenDir, cliFile) are absolute paths and still
point at the hoisted node_modules — unaffected.

Bump versions again so version-check fires the binary build jobs:
- packages/mobile/package.json: 1.5.181 -> 1.5.182
- iOS Info.plist CFBundleShortVersionString: 1.1.194 -> 1.1.195
- Android versionName: 1.1.530 -> 1.1.531

Note: in the same run, both iOS jobs successfully archived (gym
~20min) but failed at the `pilot` TestFlight upload step with
`undefined method 'each' for nil` in fastlane's itunes_transporter.rb
— that's a separate fastlane error-reporting bug (fastlane#21455)
masking the real Transporter error. Not addressed here; the iOS
build itself works.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 23, 2026

⚠️ No Changeset found

Latest commit: 8f47f56

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@socket-security
Copy link
Copy Markdown

socket-security Bot commented May 23, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​@​babel/​plugin-proposal-class-static-block@​7.21.01001007150100
Updatedgem/​fastlane@​2.225.0 ⏵ 2.234.071 +1100100100100
Updatednpm/​@​esbuild-plugins/​node-globals-polyfill@​0.1.1 ⏵ 0.2.3100 +110071 +180100
Addednpm/​@​babel/​preset-typescript@​7.22.151001007294100
Addednpm/​@​babel/​plugin-transform-runtime@​7.18.2991007495100
Addednpm/​@​emotion/​server@​11.11.01001007582100
Updatednpm/​@​babel/​helper-compilation-targets@​7.22.15 ⏵ 7.27.110010075 +194100
Addednpm/​@​audius/​fetch-nft@​0.2.8751009984100
Addednpm/​@​babel/​plugin-transform-react-jsx@​7.21.01001007694100
Updatednpm/​@​babel/​template@​7.22.15 ⏵ 7.27.1100 +110076 +194100
Updatednpm/​@​audius/​hedgehog@​2.1.0 ⏵ 3.0.0-alpha.176 +11009483100
Addednpm/​@​babel/​preset-env@​7.22.15961007796100
Addednpm/​@​atlaskit/​pragmatic-drag-and-drop@​1.7.71001007789100
Addednpm/​@​audius/​stems@​0.3.10771009384100
Updatednpm/​@​babel/​helper-module-transforms@​7.22.20 ⏵ 7.27.1100 +110077 +194100
Updatednpm/​@​babel/​parser@​7.22.16 ⏵ 7.27.19910077 -396100
Updatednpm/​@​babel/​compat-data@​7.22.20 ⏵ 7.27.1100 +110078 +196100
Addednpm/​@​coral-xyz/​anchor@​0.29.0931007883100
Updatednpm/​@​babel/​generator@​7.22.15 ⏵ 7.27.110010079 +195100
Updatednpm/​@​babel/​traverse@​7.22.20 ⏵ 7.27.1100 +1100 +7579 +195100
Updatednpm/​@​babel/​helpers@​7.22.15 ⏵ 7.27.199 +1100 +280 +195100
Updatednpm/​@​babel/​core@​7.22.20 ⏵ 7.23.79810080 +195100
Addednpm/​@​elastic/​elasticsearch@​8.1.0991001009880
Updatednpm/​@​babel/​types@​7.26.3 ⏵ 7.27.1981008195100
Addednpm/​@​emotion/​styled@​11.14.01001008282100
Addednpm/​@​emotion/​eslint-plugin@​11.12.01001009582100
Addednpm/​@​bravemobile/​react-native-code-push@​12.3.28210010092100
Addednpm/​@​emotion/​babel-preset-css-prop@​11.12.010010010082100
Addednpm/​@​commander-js/​extra-typings@​12.1.01001009382100
Updatednpm/​@​emotion/​react@​11.11.3 ⏵ 11.14.099 +310087 +182100
Addednpm/​@​emotion/​native@​11.11.010010010082100
Addednpm/​@​apollo/​client@​3.3.7931008299100
See 9 more rows in the dashboard

View full report

@socket-security
Copy link
Copy Markdown

socket-security Bot commented May 23, 2026

Caution

Review the following alerts detected in dependencies.

According to your organization's Security Policy, you must resolve all "Block" alerts before proceeding. It is recommended to resolve "Warn" alerts too. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Block Low
Potential code anomaly (AI signal): npm @amplitude/session-replay-browser is 100.0% likely to have a medium risk anomaly

Notes: This is a session-replay / DOM-capture library that intentionally collects detailed page state (DOM, canvas bitmaps, user interactions), persists them locally, compresses, and sends them to Amplitude session-replay endpoints. The behavior is expected for such SDKs. The primary security concern is privacy/data exfiltration: if misconfigured or used without user consent, the library can capture sensitive inputs and page content. No evidence of traditional malware (reverse shell, arbitrary remote code execution, eval-based payloads) was found in the provided fragment. Recommendations: only use from trusted package sources, ensure masking/ignore selectors are tightly configured (especially for inputs and sensitive CSS selectors), review remote config behavior (it fetches sampling/privacy config), consider privacy/legal implications (consent), and monitor network endpoints and API keys.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@amplitude/plugin-session-replay-browser@1.8.2npm/@amplitude/session-replay-browser@1.15.1

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@amplitude/session-replay-browser@1.15.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @ampproject/remapping is 100.0% likely to have a medium risk anomaly

Notes: The code implements a standard SourceMap remapping mechanism. There is no inherent malicious behavior or backdoor within the shown fragment. The only potential risk lies in the use of the user-supplied loader callback, which could be misused by a project integrating this library. If the loader is trusted and sandboxed, the code poses no evident security threats. Overall, the security risk is moderate due to loader trust requirements.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@babel/core@7.23.7npm/@ampproject/remapping@2.2.1

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@ampproject/remapping@2.2.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @ampproject/remapping is 100.0% likely to have a medium risk anomaly

Notes: The code is a conventional, loader-driven Source Map remapping utility. It exhibits a legitimate trust boundary at the loader. No intrinsic malware present; security concerns hinge on loader trust and content exposure. Recommend reviewing loader implementations and ensuring options properly redact or restrict sourcesContent when distributing SourceMaps.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@babel/core@7.23.7npm/@ampproject/remapping@2.2.1

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@ampproject/remapping@2.2.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @apollo/protobufjs is 100.0% likely to have a medium risk anomaly

Notes: The analyzed code segment is a standard RPC service wrapper (protobufjs style) with conventional input validation, encoding/decoding, event emission, and end handling. No malicious behavior is evident, and there are no observable security vulnerabilities beyond ordinary library-level error handling. It does not exhibit data exfiltration, backdoors, or other anti-security patterns.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@apollo/protobufjs@1.2.7

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@apollo/protobufjs@1.2.7. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @audius/hedgehog is 100.0% likely to have a medium risk anomaly

Notes: The source code contains hardcoded sensitive credentials and cryptographic material that are directly exported, posing a high security risk if used in production or published publicly. There is no evidence of malware or obfuscation, but the insecure practice of embedding plaintext passwords and keys in source code can lead to credential leakage and compromise. It is strongly recommended to remove hardcoded secrets, implement secure credential management, and restrict exposure of sensitive data.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@audius/hedgehog@3.0.0-alpha.1

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@audius/hedgehog@3.0.0-alpha.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @babel/core is 100.0% likely to have a medium risk anomaly

Notes: The analyzed code fragment is a standard Babel core error handling and code-frame rendering utility. It reads internal node and code data to produce informative errors but does not perform any suspicious network activity, data exfiltration, or backdoor behavior. The observed behavior is typical for a compiler/transpiler component and, in this isolated context, does not indicate malicious activity.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@babel/core@7.23.7

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@babel/core@7.23.7. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @babel/core is 100.0% likely to have a medium risk anomaly

Notes: The analyzed fragment implements a conventional file transformation entry point with no evident malicious behavior or hard-coded secrets. Security concerns depend on the downstream transformation logic (run) and configuration loading (loadConfig). The code maintains safe control flow (null config handling) and avoids arbitrary code execution within this scope.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@babel/core@7.23.7

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@babel/core@7.23.7. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @babel/helper-module-imports is 100.0% likely to have a medium risk anomaly

Notes: The analyzed code is a Babel AST helper (ImportBuilder) used to construct import statements and interop-wrapped imports. It contains no indicators of malicious behavior, data exfiltration, backdoors, or runtime abuses. It operates within a compiler/transpiler context to produce code, not to execute arbitrary user data. Therefore, the code itself does not present security risks or malware indicators under normal usage. This is benign library behavior intended for code transformation.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@emotion/babel-preset-css-prop@11.12.0npm/@emotion/css@11.13.5npm/@emotion/react@11.14.0npm/@emotion/styled@11.14.0npm/@babel/preset-env@7.22.15npm/@babel/helper-module-transforms@7.27.1npm/@babel/plugin-transform-runtime@7.18.2npm/@babel/plugin-transform-react-jsx@7.21.0npm/@babel/helper-module-imports@7.28.6

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@babel/helper-module-imports@7.28.6. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @babel/helper-module-transforms is 100.0% likely to have a medium risk anomaly

Notes: The code is a legitimate, static-code transformation utility used in Babel to ensure proper behavior of ES module bindings after transforms. There is no evidence of malicious behavior, data leakage, or external communications within this fragment. It operates purely on AST-level transformations consistent with module import/export handling.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@babel/helper-module-transforms@7.27.1

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@babel/helper-module-transforms@7.27.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @babel/helper-string-parser is 100.0% likely to have a medium risk anomaly

Notes: The analyzed code is a standard, well-structured parsing utility for JavaScript string literals and escapes (consistent with Babel’s helper-string-parser). It includes thorough validation, proper Unicode handling, and defensive error reporting. There is no evidence of malicious behavior, data leakage, or network activity within this fragment. The security risk is low when used as part of a trusted toolchain; the code otherwise poses no evident supply-chain threat based on the provided snippet.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@emotion/babel-preset-css-prop@11.12.0npm/@emotion/css@11.13.5npm/@emotion/react@11.14.0npm/@emotion/styled@11.14.0npm/@babel/preset-env@7.22.15npm/@babel/plugin-proposal-class-static-block@7.21.0npm/@babel/types@7.27.1npm/@babel/helper-module-transforms@7.27.1npm/@babel/preset-typescript@7.22.15npm/@babel/plugin-transform-runtime@7.18.2npm/@babel/plugin-transform-react-jsx@7.21.0npm/@babel/helper-string-parser@7.27.1

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@babel/helper-string-parser@7.27.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @babel/helpers is 100.0% likely to have a medium risk anomaly

Notes: The analyzed fragment is a conventional Babel/TypeScript-style decorators runtime (applyDecs) responsible for applying decorators to class members and managing metadata and initializers. There is no evidence of malware, backdoors, or external data leakage within this module. While complex, the code behaves as a metadata-driven decorator processor and should be considered low risk when used as intended. Downstream risks depend on the decorators provided by consumers, not this utility itself.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@babel/helpers@7.27.1

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@babel/helpers@7.27.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @babel/plugin-syntax-typescript is 100.0% likely to have a medium risk anomaly

Notes: The code is a standard Babel plugin fragment that configures syntax support for TypeScript by manipulating parser plugins. There is no malicious logic, no data exfiltration, and no unsafe operations. It appears to be a legitimate helper for enabling TypeScript syntax in Babel pipelines.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@babel/preset-typescript@7.22.15npm/@babel/plugin-syntax-typescript@7.27.1

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@babel/plugin-syntax-typescript@7.27.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @babel/runtime is 100.0% likely to have a medium risk anomaly

Notes: Selected report 1 provides a thorough evaluation of decorator-related runtime utilities and concludes low risk with potential for finishers to alter constructors if used with untrusted inputs. The improved assessment confirms normal, expected behavior for Babel decorator infrastructure and notes that the primary risk lies in the finishers channel if untrusted code is supplied. Security risk remains low to moderate depending on input provenance; malware likelihood is negligible based on the fragment.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@changesets/cli@2.27.1npm/@babel/runtime@7.24.0

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@babel/runtime@7.24.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @bravemobile/react-native-code-push is 75.0% likely to have a medium risk anomaly

Notes: The fragment represents a standard, legitimate OTA update mechanism for React Native, with normal update orchestration, user prompts, retry/rollback, and status reporting. There is no obvious malicious behavior or backdoor within this code fragment. The main security considerations relate to the integrity and authenticity of updates, secure transport, and the security of the native bridge implementation. Overall risk is moderate due to remote updates, but not due to internal malicious code in this snippet.

Confidence: 0.75

Severity: 0.55

From: package-lock.jsonnpm/@bravemobile/react-native-code-push@12.3.2

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@bravemobile/react-native-code-push@12.3.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @clack/prompts is 100.0% likely to have a medium risk anomaly

Notes: The code fragment appears to be a part of a larger project related to CLI interactions and logging. The heavy obfuscation, incomplete functions, and potential untrusted input handling raise concerns about its security and reliability.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@clack/prompts@0.7.0

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@clack/prompts@0.7.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @cspotcode/source-map-support is 100.0% likely to have a medium risk anomaly

Notes: The fragment is consistent with a legitimate source-map support utility (likely source-map-support) used to enhance debugging by resolving and applying source maps. While it performs long-lived network/file I/O and intensively manipulates error reporting, there is no concrete evidence of malicious activity or data exfiltration beyond what such debugging tooling normally performs. The security risk is modest and largely dependent on trust in remote map sources and logging practices.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@cspotcode/source-map-support@0.8.1

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@cspotcode/source-map-support@0.8.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @emotion/cache is 100.0% likely to have a medium risk anomaly

Notes: The analyzed fragment is a legitimate part of Emotion’s CSS-in-JS cache that manages hydration of server-rendered styles and style insertion. It does not exhibit malicious behavior or supply chain exploits within this snippet. The security risk is low to moderate (primarily DOM manipulation, which is expected for a UI library), with no evident data leakage or external communications.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@emotion/css@11.13.5npm/@emotion/react@11.14.0npm/@emotion/cache@11.14.0

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@emotion/cache@11.14.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm @emotion/styled is 100.0% likely to have a medium risk anomaly

Notes: Overall, this is a standard, non-malicious portion of the Emotion styling library. No evidence of backdoors, credential theft, or external network/data exfiltration. The primary risk vector is the CSS-in-DOM injection path via dangerouslySetInnerHTML, which is expected but should be reviewed in the context of trusted inputs. Security posture is low-to-moderate; no immediate danger, but maintain caution with user-supplied template literals and ensure dependencies are trusted.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/@emotion/styled@11.14.0

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@emotion/styled@11.14.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm axios is 100.0% likely to have a medium risk anomaly

Notes: The code appears to be a standard, well-scoped progress-event utility used to report progress (upload/download) to a consumer listener. It reads input from the event object and computes metrics, then forwards a structured payload to a listener. A minor data exposure risk exists due to passing the raw event object to the listener; mitigations include sanitizing the payload or removing the event object before emission. Overall security risk remains modest, with malware likelihood negligible in this isolated module.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/axios@1.7.4

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/axios@1.7.4. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm axios is 100.0% likely to have a medium risk anomaly

Notes: The code is a legitimate, self-contained throttling transformer designed for Axios-like streaming workflows. It throttles data output based on maxRate and timeWindow, preserves data integrity by splitting chunks when necessary, and emits optional progress telemetry. No malicious activity or data leakage is detected in this fragment. Security risk remains moderate due to throttling complexity and potential misconfiguration in real deployments, but the module itself does not introduce obvious security flaws.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/axios@1.7.4

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/axios@1.7.4. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm cacache is 100.0% likely to have a medium risk anomaly

Notes: The analyzed code is a straightforward content-cache retrieval and streaming utility. It reads from a cache using an index, supports digest-based access, and optionally memoizes results. There is no evidence of malicious behavior, data exfiltration, backdoors, or external network activity within this module. The security risk appears low, assuming the surrounding system properly manages cache integrity and does not expose untrusted cache contents without validation.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/cacache@18.0.4

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/cacache@18.0.4. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Potential code anomaly (AI signal): npm commander is 100.0% likely to have a medium risk anomaly

Notes: The code represents a standard Commander-like CLI framework with dynamic subcommand execution via spawning local executables. It is not inherently malicious, but the external-executable dispatch mechanism introduces a legitimate supply-chain risk: untrusted or misconfigured subcommands can execute arbitrary local code. Recommend tightening executable discovery (absolute trusted paths only, explicit allowlists), validating subcommand targets before spawning, and ensuring regular security reviews of any projects using this pattern.

Confidence: 1.00

Severity: 0.60

From: package-lock.jsonnpm/commander@5.1.0

ℹ Read more on: This package | This alert | What is an AI-detected potential code anomaly?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/commander@5.1.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

See 18 more rows in the dashboard

View full report

@pull-request-size pull-request-size Bot added size/L and removed size/S labels May 23, 2026
@raymondjacobson raymondjacobson changed the title fix(mobile/android): drop react root override + bump versions for release fix(mobile): unblock release flow — Android Hermes entryFile + iOS fastlane Xcode 26 May 23, 2026
The TestFlight upload step in the iOS RC + Prod builds crashes with

  fastlane_core/itunes_transporter.rb:266:in 'execute':
  [!] undefined method 'each' for nil (NoMethodError)

The build itself succeeds (gym archives the IPA in ~20 min), then
pilot calls altool, which fails — but fastlane crashes trying to
log the failure, hiding the real upload error.

Root cause: Xcode 26 changed altool's error prefix from "*** Error:"
to "ERROR:". fastlane 2.225.0's ERROR_REGEX (`/\*\*\* Error:\s+(.+)/`)
no longer matches, so `error_line_index = nil`. The fallback path
then does `@all_lines[-20..-1].each`, but under Ruby 3.x the slice
returns nil when the array has fewer than 20 elements (Ruby 3.0
changed Array#[] to no longer clamp out-of-range negative starts),
so `.each` blows up on nil.

Fixed upstream in fastlane:
- 455bb5e1 (2.228.0): rewrites the displayer to iterate `@all_lines`
  directly, removing the broken slice
- 744b01ce (2.230.0): updates ERROR_REGEX to also match "ERROR:" so
  Xcode 26 altool errors get parsed correctly

Bump the Gemfile pin from 2.225.0 to 2.234.0 (latest at time of
writing, includes both fixes). Lockfile updated to match.

The Android Gemfile is already `>= 2.220.0` and locks at 2.231.1,
so it's unaffected.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@raymondjacobson raymondjacobson force-pushed the rj-mobile-release-retry-2 branch from b0de73c to 8f47f56 Compare May 23, 2026 00:56
@raymondjacobson raymondjacobson merged commit 06420ca into main May 23, 2026
2 of 3 checks passed
@raymondjacobson raymondjacobson deleted the rj-mobile-release-retry-2 branch May 23, 2026 01:07
raymondjacobson added a commit that referenced this pull request May 23, 2026
…14396)

## Summary

Two real failures surfaced in [run
26319345276](https://github.com/AudiusProject/apps/actions/runs/26319345276)
after the displayer fix in #14394 made fastlane log altool errors again.

### 1. iOS RC + Prod — Apple now requires iOS 26 SDK

altool now returns:
\`\`\`
ERROR: Validation failed (409) SDK version issue. This app was built
with the iOS 18.5 SDK.
All iOS and iPadOS apps must be built with the iOS 26 SDK or later,
included in Xcode 26 or
later, in order to be uploaded to App Store Connect or submitted for
distribution.
(ID: 287c542e-3971-4158-b3c3-71eb1fcd6eb3)
\`\`\`

The \`macos-15\` runners ship Xcode 16.4 (iOS 18.5 SDK) by default —
that's why gym archived fine but altool rejected the upload. Switch both
iOS jobs to \`macos-26\` (Tahoe, GA), which has Xcode 26 as the only
supported major.

### 2. Android RC + Prod — hermesc binary lookup also anchored at the
wrong root

\`\`\`
Couldn't determine Hermesc location. Please set \`react.hermesCommand\`
to the path of the
hermesc binary file.
node_modules/react-native/sdks/hermesc/%OS-BIN%/hermesc
\`\`\`

#14394 restored \`react.root\` to its default (\`../.. =
packages/mobile\`) to unblock the Hermes JS bundle's \`entryFile\`
lookup. But the same gradle plugin uses \`root\` for hermesc detection
too (\`PathUtils.kt#detectOSAwareHermesCommand\` → only checks
\`root/node_modules/react-native/sdks/hermesc/...\`), and RN is hoisted
to the monorepo \`node_modules\` so that path doesn't exist.

Set \`react.hermesCommand\` explicitly to the hoisted prebuilt:
\`\`\`groovy
hermesCommand =
"\$rootDir/../../../node_modules/react-native/sdks/hermesc/%OS-BIN%/hermesc"
\`\`\`
The \`%OS-BIN%\` placeholder is substituted by the plugin at runtime
(linux64-bin / osx-bin / win64-bin). Verified all three subdirs exist in
\`node_modules/react-native/sdks/hermesc/\` after \`npm ci\`.

### Housekeeping
- \`packages/mobile/ios/Gemfile.lock\`: dependency line aligned to \`=
2.234.0\` to match the Gemfile pin from #14394. (The squash-merge of
#14394 amended the Gemfile to a pin but kept the lock at the pre-pin
\`>= 2.228.0\` constraint; CI was re-resolving every build.)
- Versions bumped to re-fire the build matrix:
  - \`packages/mobile/package.json\`: \`1.5.182\` → \`1.5.183\`
- iOS Info.plist \`CFBundleShortVersionString\`: \`1.1.195\` →
\`1.1.196\`
  - Android \`versionName\`: \`1.1.531\` → \`1.1.532\`

## Test plan
- [ ] Merge → version-check fires all 4 binary jobs
- [ ] Android RC + Prod reach \`fastlane releaseCandidate\` / \`prod\`
(no \`Couldn't determine Hermesc location\`)
- [ ] iOS RC + Prod reach App Store Connect (no \`SDK version issue\`
409)
- [ ] Slack notification fires from the success branch of each iOS /
Android job

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant