Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta
#2,869 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 2 dias

@lovisschmidt já está trabalhando nisso.

Desde 5/10/2026.

  • #2870 de @lovisschmidt — aberto

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
55/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
react-native, typescript
Domínio
cli, mobile-dev

Direção de pesquisa

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.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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.

Linguagem predominante
TypeScript
Estrelas
2.9k
Forks
948
Merge médio
10d 19h
PRs com merge (30d)
1

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de react-native-community/cli

Todas as issues de react-native-community/cli

Issues semelhantes

Mais issues de TypeScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.