Skip to content

Free Apple Developer accounts cannot build iOS runner due to generic Bundle ID conflict #145

@EarthXP

Description

@EarthXP

Problem
When using a free (Personal Team) Apple Developer account, agent-device snapshot fails because the default Bundle Identifiers (com.myapp.AgentDeviceRunner and com.myapp.AgentDeviceRunnerUITests.xctrunner) cannot be registered — they are already taken by another team.
Error
Failed Registering Bundle Identifier: The app identifier "com.myapp.AgentDeviceRunner" cannot be registered to your development team because it is not available. Change your bundle identifier to a unique string to try again.

No profiles for 'com.myapp.AgentDeviceRunner' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.myapp.AgentDeviceRunner'.
Full build log from ~/.agent-device/daemon.log shows the same error for both targets:

com.myapp.AgentDeviceRunner (AgentDeviceRunner target)
com.myapp.AgentDeviceRunnerUITests.xctrunner (AgentDeviceRunnerUITests target)

Root Cause
Free Apple Developer accounts cannot register Bundle IDs that are already claimed by other teams. The placeholder com.myapp.* is too generic and is likely already taken, making it impossible for free account users to build the XCUITest runner without manually editing the Xcode project.
Paid developer accounts are typically unaffected, as they have broader provisioning capabilities.
Current Workaround
Manually open the Xcode project and change the Bundle IDs to something unique:
bashopen /opt/homebrew/lib/node_modules/agent-device/ios-runner/AgentDeviceRunner/AgentDeviceRunner.xcodeproj
Then for both AgentDeviceRunner and AgentDeviceRunnerUITests targets, change the Bundle Identifier to a unique value (e.g., com..AgentDeviceRunner), select your Personal Team, enable Automatically manage signing, and Build for Testing (⇧⌘U).
Note: This workaround is fragile — any npm update will overwrite the changes.
Suggested Improvements

Use a more unique default Bundle ID such as com.callstack.agent-device.runner that is owned/registered by the Callstack team, reducing the chance of conflicts.
Support a configurable Bundle ID via environment variable (e.g., AGENT_DEVICE_IOS_BUNDLE_ID) so users don't need to manually edit the Xcode project.
Document this limitation in the physical device prerequisites section for free account users.

Environment

Account type: Free Apple Developer (Personal Team)
agent-device: installed via npm (global), 0.7.1
Platform: macOS, Apple Silicon
Xcode: 16+

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions