Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

run-ios --buildFolder installs the app from the default DerivedData instead of the build folder

Ouverte
#2,869 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 2 jours

@lovisschmidt y travaille déjà.

Depuis le 5/10/2026.

  • #2870 par @lovisschmidt — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
55/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
react-native, typescript
Domaine
cli, mobile-dev

Piste de recherche

Start with packages/cli-platform-apple/src/commands/buildCommand/buildProject.ts and packages/cli-platform-apple/src/commands/runCommand/getBuildSettings.ts, then trace how runOnSimulator.ts, runOnDevice.ts and createRun.ts pass build options. Check how -showBuildSettings resolves TARGET_BUILD_DIR when --buildFolder is set. Done means the run paths install or open the app from that build folder; the issue names no tests.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Environment

System:
  OS: macOS 27.0.1
Binaries:
  Node: 24.18.0
  pnpm: 11
IDEs:
  Xcode: 27.0/27A266a
npmPackages:
  "@react-native-community/cli-platform-apple": 20.2.0
  react-native: 0.85

The bug does not depend on the Xcode version; the relevant code is unchanged on main (21.0.0-alpha.1).

Description

run-ios --buildFolder <dir> builds into <dir> but installs the app from Xcode's default DerivedData.

buildProject passes the folder to the build as -derivedDataPath <dir>. After the build, installApp resolves the app through getBuildSettings, which runs xcodebuild … -showBuildSettings -json without -derivedDataPath. TARGET_BUILD_DIR therefore points into ~/Library/Developer/Xcode/DerivedData/<Project>-<hash>/… and not into <dir>. As a result:

  • If the default DerivedData holds an older build of the project (for example from an Xcode IDE build), the CLI installs and launches that stale .app without any warning.

  • If it holds no build, the command fails after success Successfully built the app:

    UnhandledPromiseRejection: … The promise rejected with the reason "Error: target build directory /Users/…/Library/Developer/Xcode/DerivedData/<Project>-<hash>/Build/Products/Debug-iphonesimulator does not exist".
    

The same applies to runOnDevice (physical device and Mac Catalyst) and to openApp (macOS), because they all go through getBuildSettings.

--binary-path does not work around this: it skips the build and passes buildOutput: '', so getBuildSettings throws on getPlatformName('') (#2517).

Code references on main:

  • packages/cli-platform-apple/src/commands/buildCommand/buildProject.ts adds -derivedDataPath from args.buildFolder.
  • packages/cli-platform-apple/src/commands/runCommand/getBuildSettings.ts builds the -showBuildSettings call without it.
  • runOnSimulator.ts, runOnDevice.ts and createRun.ts (macOS) do not pass args.buildFolder to installApp / openApp / getBuildSettings.

Related: createRun calls process.chdir(sourceDir) (the ios/ directory) before building, so a relative --buildFolder resolves against ios/ and not the project root. The option description does not say which directory it is relative to.

Proposed fix: thread buildFolder from the run paths into getBuildSettings and append -derivedDataPath <buildFolder> to the -showBuildSettings call when it is set. I applied this as a local patch on 20.2.0: run-ios --buildFolder build/DerivedData then installs and launches the freshly built app from ios/build/DerivedData/Build/Products/Debug-iphonesimulator/. PR to follow.

Reproducible Demo

  1. In any React Native project, make sure the default DerivedData has no build for it: rm -rf ~/Library/Developer/Xcode/DerivedData/<Project>-*.
  2. Run npx react-native run-ios --buildFolder build/DerivedData.
  3. The build succeeds into ios/build/DerivedData, then the CLI fails with target build directory …/Library/Developer/Xcode/DerivedData/<Project>-<hash>/Build/Products/Debug-iphonesimulator does not exist.

Expected: the CLI installs and launches the app it just built in ios/build/DerivedData.

Langage dominant
TypeScript
Étoiles
2.9k
Forks
951
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de react-native-community/cli

Toutes les issues de react-native-community/cli

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.