Building project with app clip target fails ("The relationship 'parentBundleId' is required")
Build/Submit details page URL
No response
Summary
I've created a project from scratch with npx create-expo-app, and added an app clip target. I've used react-native-app-clip to generate the native configuration and the app clip target in the native project. I have run the app locally and both the parent app and the app clip functions on a simulator/connected device. However, when attempting to build with eas build --profile preview --platform ios, the build fails.
Managed or bare?
managed
Environment
expo-env-info 1.2.0 environment info:
System:
OS: macOS 14.2.1
Shell: 5.9 - /bin/zsh
Binaries:
Node: 18.17.0 - ~/.nvm/versions/node/v18.17.0/bin/node
Yarn: 1.22.19 - ~/.nvm/versions/node/v18.17.0/bin/yarn
npm: 10.0.0 - ~/.nvm/versions/node/v18.17.0/bin/npm
Watchman: 2023.12.04.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.15.2 - /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 23.2, iOS 17.2, macOS 14.2, tvOS 17.2, visionOS 1.0, watchOS 10.2
IDEs:
Xcode: 15.2/15C500b - /usr/bin/xcodebuild
npmPackages:
expo: ~50.0.8 => 50.0.8
react: 18.2.0 => 18.2.0
react-native: 0.73.4 => 0.73.4
npmGlobalPackages:
eas-cli: 7.3.0
Expo Workflow: managed
expo doctor:
✔ Check Expo config for common issues
✔ Check package.json for common issues
✔ Check dependencies for packages that should not be installed directly
✔ Check for issues with metro config
✖ Check for common project setup issues
✔ Check npm/ yarn versions
✔ Check Expo config (app.json/ app.config.js) schema
✔ Check for legacy global CLI installed locally
✔ Check that native modules do not use incompatible support packages
✖ Check that native modules use compatible support package versions for installed Expo SDK
✔ Check that packages match versions required by installed Expo SDK
Detailed check results:
Expected package @expo/config-plugins@~7.8.0
Found invalid:
@expo/[email protected]
(for more info, run: npm why @expo/config-plugins)
Advice: Upgrade dependencies that are using the invalid package versions0.
This project has native project folders but is also configured to use Prebuild. EAS Build will not sync your native configuration if the ios or android folders are present. Add these folders to your .gitignore file if you intend to use prebuild (aka "managed" workflow).
Error output
Here's the error message (with preceding logs attached, full bundle name removed):
Setting up credentials for target expoappclipClip (com.REDACTED.expoappclip.Clip)
- Linking bundle identifier com.REDACTED.expoappclip.Clip
✔ Bundle identifier registered com.REDACTED.expoappclip.Clip
- Syncing capabilities
Current remote capabilities:
[
{
"context": {
"providerId": 123207890,
"teamId": "93CBXCV95G"
},
"id": "7FVHV7255H_IN_APP_PURCHASE",
"attributes": {
"ownerType": "BUNDLE",
"settings": null,
"editable": true,
"inputs": null,
"enabled": true,
"responseId": "948e4f62-9325-4226-8bb2-8d8646add1d1"
}
},
{
"context": {
"providerId": 123207890,
"teamId": "93CBXCV95G"
},
"id": "7FVHV7255H_ON_DEMAND_INSTALL_CAPABLE",
"attributes": {
"ownerType": "BUNDLE",
"settings": null,
"editable": true,
"inputs": null,
"enabled": true,
"responseId": "948e4f62-9325-4226-8bb2-8d8646add1d1"
}
},
{
"context": {
"providerId": 123207890,
"teamId": "93CBXCV95G"
},
"id": "7FVHV7255H_APP_GROUPS",
"attributes": {
"ownerType": "BUNDLE",
"settings": null,
"editable": true,
"inputs": null,
"enabled": true,
"responseId": "948e4f62-9325-4226-8bb2-8d8646add1d1"
}
}
]
Current local entitlements:
{
"com.apple.developer.associated-appclip-app-identifiers": [
"$(AppIdentifierPrefix)com.REDACTED.expoappclip.Clip"
],
"com.apple.security.application-groups": [
"group.com.REDACTED.expoappclip"
]
}
Skipping entitlement that is not supported by EAS: com.apple.developer.associated-appclip-app-identifiers
Skipping existing capability: com.apple.security.application-groups (App Groups)
Remaining to remove: [
'7FVHV7255H_IN_APP_PURCHASE',
'7FVHV7255H_ON_DEMAND_INSTALL_CAPABLE'
]
Existing to disable: [
'7FVHV7255H_IN_APP_PURCHASE',
'7FVHV7255H_ON_DEMAND_INSTALL_CAPABLE'
]
✔ Synced capabilities: No updates
- Syncing capabilities identifiers
Linking ID to appGroups: group.com.REDACTED.expoappclip (UURVCR4XDB)
Updating bundle identifier with capability identifiers: [
{
capabilityType: 'APP_GROUPS',
option: 'ON',
relationships: { appGroups: [Array] }
}
]
✖ Failed to sync capability identifiers com.REDACTED.expoappclip.Clip
Relationship is required but was not provided. - The relationship 'parentBundleId' is required but was not provided with this request.
UnexpectedAppleResponse: Relationship is required but was not provided. - The relationship 'parentBundleId' is required but was not provided with this request.
at o.parseResponse (/Users/szabolcs/.nvm/versions/node/v18.17.0/lib/node_modules/eas-cli/node_modules/@expo/apple-utils/build/index.js:1:741792)
at o.requestAndParseAsync (/Users/szabolcs/.nvm/versions/node/v18.17.0/lib/node_modules/eas-cli/node_modules/@expo/apple-utils/build/index.js:1:740477)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async o.fetchSingleModelAsync (/Users/szabolcs/.nvm/versions/node/v18.17.0/lib/node_modules/eas-cli/node_modules/@expo/apple-utils/build/index.js:1:740200)
at async o.patchModelAsync (/Users/szabolcs/.nvm/versions/node/v18.17.0/lib/node_modules/eas-cli/node_modules/@expo/apple-utils/build/index.js:1:740306)
at async l.updateBundleIdCapabilityAsync (/Users/szabolcs/.nvm/versions/node/v18.17.0/lib/node_modules/eas-cli/node_modules/@expo/apple-utils/build/index.js:1:800954)
at async syncCapabilityIdentifiersForEntitlementsAsync (/Users/szabolcs/.nvm/versions/node/v18.17.0/lib/node_modules/eas-cli/build/credentials/ios/appstore/capabilityIdentifiers.js:104:9)
at async syncCapabilityIdentifiersAsync (/Users/szabolcs/.nvm/versions/node/v18.17.0/lib/node_modules/eas-cli/build/credentials/ios/appstore/ensureAppExists.js:91:37)
at async syncCapabilitiesAsync (/Users/szabolcs/.nvm/versions/node/v18.17.0/lib/node_modules/eas-cli/build/credentials/ios/appstore/ensureAppExists.js:80:5)
at async ensureBundleIdExistsWithNameAsync (/Users/szabolcs/.nvm/versions/node/v18.17.0/lib/node_modules/eas-cli/build/credentials/ios/appstore/ensureAppExists.js:58:9) {
errorInfo: "Relationship is required but was not provided. - The relationship 'parentBundleId' is required but was not provided with this request.",
data: { errors: [ [Object] ] }
}
Error: build command failed.
Reproducible demo or steps to reproduce from a blank project
- create new expo app with
npx create-expo-app - create native project with
prebuild - add
react-native-app-cliplibrary and follow setup instructions (npx expo install react-native-app-clipand adding config toapp.json) – see: https://github.com/bndkt/react-native-app-clip?tab=readme-ov-file#installation - run app with
expo run:ios, thenexpo run:ios --schemeand select app clip (follow steps inreact-native-app-clipreadme for configuring Signing & Capabilities) - attempt to run EAS build with:
EXPO_DEBUG=true eas build --profile preview --platform ios - Failure on
Setting up credentials for targetstep.
The failure appears to be here (https://github.com/expo/eas-cli/blob/561e3bbb5ac2e5211d92a4f1f6a4c9bb8f807dc9/packages/eas-cli/src/credentials/ios/appstore/ensureAppExists.ts#L153) and it looks like the API call on line 140 may throw the exception.
Same issue here!
Hi,
Did you try doing https://github.com/bndkt/react-native-app-clip?tab=readme-ov-file#before-building-for-the-app-store?