eas build --platform ios error

I am receiving the following error trying to use eas build for ios.

Failed to sync capabilities com.*******.app
    UnexpectedAppleResponse: There is a problem with the request entity - The bundle '**********' cannot be deleted. Delete all the Apps related to this bundle to proceed.

Where are the apps related to this bundle that I need to delete. We haven’t uploaded to the app store before.

The bundle ‘**********’ cannot be deleted.

what is in the censored ‘************’ part of the message? is it just your bundle identifier or something else?

Yes it’s just an identifier, I didn’t think that part was specifically important. Here it is.

The bundle 'K3PHV8M3R9' cannot be deleted

I ran “EXPO_APP_STORE_DEBUG=true eas build --platform iOS” and I can see the following in regards to that specific error, it doesn’t help me solve it though.

Syncing capabilitiesError: Request failed with status code 409 (PATCH https://developer.apple.com/services-account/v1/bundleIds/K3PHV8M3R9)
1 Like

are you an admin of the apple developer team?

No, I’m not. We have a small team though, I should be able to get whatever I need.

you will need to be an admin because this requires credentials and identifier management on behalf of your team

Thanks for the quick responses yesterday. I have access to the admin account now.

Anyway you could assist with this or point me in the right direction.

@notbrent I am logging in from my admin account and am also getting the same error- There is a problem with the request entity - The bundle '6T63W7LF8Z' cannot be deleted

Here’s my output for running eas build --platform ios:
› Restoring session /Users/parkerplace/.app-store/auth/pleeplace@gmail.com/cookie
POST https://developer.apple.com/services-account/QH65B2/account/listTeams.action
200 OK (POST https://developer.apple.com/services-account/QH65B2/account/listTeams.action)
› Team Parker Place (54UFJVB567)
GET https://appstoreconnect.apple.com/olympus/v1/session
200 OK (GET https://appstoreconnect.apple.com/olympus/v1/session)
› Provider Parker Place (122585125)
:heavy_check_mark: Logged in Local session
POST https://developer.apple.com/services-account/QH65B2/account/listTeams.action
200 OK (POST https://developer.apple.com/services-account/QH65B2/account/listTeams.action)
⠋ Linking bundle identifier com.pakaplace.reddit-alertsPOST https://developer.apple.com/services-account/v1/bundleIds
⠹ Linking bundle identifier com.pakaplace.reddit-alerts200 OK (POST https://developer.apple.com/services-account/v1/bundleIds)
:heavy_check_mark: Bundle identifier registered com.pakaplace.reddit-alerts
⠋ Syncing capabilitiesPOST https://developer.apple.com/services-account/v1/bundleIds/6T63W7LF8Z/bundleIdCapabilities
⠹ Syncing capabilities200 OK (POST https://developer.apple.com/services-account/v1/bundleIds/6T63W7LF8Z/bundleIdCapabilities)
PATCH https://developer.apple.com/services-account/v1/bundleIds/6T63W7LF8Z
⠴ Syncing capabilitiesError: Request failed with status code 409 (PATCH https://developer.apple.com/services-account/v1/bundleIds/6T63W7LF8Z)
:heavy_multiplication_x: Failed to sync capabilities com.pakaplace.reddit-alerts
UnexpectedAppleResponse: There is a problem with the request entity - The bundle ‘6T63W7LF8Z’ cannot be deleted. Delete all the Apps related to this bundle to proceed.

with the admin account you encountered the same issue?

Yes, I’ve logged into the admin account within the eas cli while running this command.

if you go to the apple developer portal, then identifiers, then find your app there and enable and disable capabilities is that possible for you?

On the ’ Edit your App ID Configuration’ page I can see Capabilities that are able to be enabled/disabled.

so you can click those checkboxes and toggle them on and off and it works?

I get a popup indicating the following when I click save after modifying one of the checkboxes. Is this ok to do? I’ve never messed with this stuff so don’t want to break anything.

Modify App Capabilities

Adding or removing any capabilities will invalidate any provisioning profiles that include this App ID and they must be regenerated for future use.

gotcha, ok you don’t need to do that. i just wanted to ensure that you had sufficient permissions.

what capabilities are enabled for your identifier? can you also share the output of expo config --type introspect? (feel free to redact anything that you would consider sensitive, i mostly care about the contents of the ios key)

workaround that you can use to unblock, but we should get to the bottom of this: to skip syncing capabilities you can use EXPO_NO_CAPABILITY_SYNC=1 to work around this for now, but you may have to enable capabilities manually on apple developer portal if you are using their associated entitlements and they aren’t yet enabled.

The following are enabled:

  • Access WiFi Information
  • Apple Pay Payment Processing
  • Associated Domains
  • AutoFill Credential Provider
  • Fonts
  • Push Notifications
  • Sign In with Apple

Output of expo --config type introspect

{
  owner: 'renovationtrust',
  name: 'RenovationTrust',
  slug: 'RenovationTrust',
  scheme: 'renovationtrust',
  description: 'Buyer and Contractor Protection. Funds Held in Trust Until Job is Done.',
  backgroundColor: '#040571',
  platforms: [
    'ios',
    'android',
    'web'
  ],
  version: '0.0.4',
  orientation: 'portrait',
  icon: './assets/img/icon.png',
  assetBundlePatterns: [
    '**/*'
  ],
  sdkVersion: '41.0.0',
  splash: {
    image: './assets/splash/splash.png',
    resizeMode: 'cover',
    backgroundColor: '#ffffff'
  },
  notification: {
    icon: './assets/img/push_icon.png'
  },
  updates: {
    fallbackToCacheTimeout: 0
  },
  ios: {
    icon: './assets/img/icon_ios.png',
    supportsTablet: true,
    bundleIdentifier: 'com.renovationtrust.app',
    buildNumber: '0.0.4',
    googleServicesFile: './GoogleService-Info.plist',
    usesIcloudStorage: true,
    requireFullScreen: true,
    associatedDomains: [
      'applinks:dev.renovationtrust.com',
      'applinks:www.renovationtrust.com'
    ],
    config: {
      googleSignIn: {
        reservedClientId: 'com.googleusercontent.apps.*******'
      }
    },
    infoPlist: {
      NSCalendarsUsageDescription: 'Allow Renovation Trust to access your calendar',
      NSCameraUsageDescription: 'Allow use of your camera for: IDs, avatars and other photos including: project, inspirational, progress, logos and more',
      NSContactsUsageDescription: 'Allow use of your contacts to import customers or contractors',
      NSLocationWhenInUseUsageDescription: 'Allow use of your location to improve the accuracy of location searches and better secure your account',
      NSMicrophoneUsageDescription: 'Allow Renovation Trust to access your microphone',
      NSMotionUsageDescription: 'Allow Renovation Trust to access your accelerometer',
      NSPhotoLibraryAddUsageDescription: 'Allow Renovation Trust to save photos',
      NSPhotoLibraryUsageDescription: 'Allow access to your photos to upload IDs, avatars and other photos including: projects, inspiration, progress, logos and more',
      NSRemindersUsageDescription: 'Allow Renovation Trust to access your reminders',
      NSFaceIDUsageDescription: 'Use Face ID or Touch ID to login, release payments and fund projects.',
      LSApplicationQueriesSchemes: [
        'comgooglemaps',
        'citymapper',
        'uber',
        'lyft',
        'waze'
      ],
      NSUserTrackingUsageDescription: 'This identifier will be used to deliver personalized ads to you.',
      SKAdNetworkItems: [
        {
          SKAdNetworkIdentifier: 'v9wttpbfk9.skadnetwork'
        },
        {
          SKAdNetworkIdentifier: 'n38lu8286q.skadnetwork'
        }
      ],
      NSLocationAlwaysAndWhenInUseUsageDescription: 'Allow $(PRODUCT_NAME) to access your location',
      NSLocationAlwaysUsageDescription: 'Allow $(PRODUCT_NAME) to access your location',
      CFBundleShortVersionString: '0.0.4',
      CFBundleVersion: '0.0.4',
      UIUserInterfaceStyle: 'Light',
      CFBundleURLTypes: [
        {
          CFBundleURLSchemes: [
            'renovationtrust',
            'com.renovationtrust.app'
          ]
        },
        {
          CFBundleURLSchemes: [
            'com.googleusercontent.apps.31548342916-955d9ftq10kr3kuaicf3k9qoj7pdigct'
          ]
        },
        {
          CFBundleTypeRole: 'Editor',
          CFBundleURLName: 'OAuthRedirect',
          CFBundleURLSchemes: [
            'com.renovationtrust.app'
          ]
        }
      ],
      UIRequiresFullScreen: true,
      UISupportedInterfaceOrientations: [
        'UIInterfaceOrientationPortrait',
        'UIInterfaceOrientationPortraitUpsideDown'
      ],
      CFBundleDisplayName: 'RenovationTrust'
    },
    entitlements: {
      'com.apple.developer.associated-domains': [
        'applinks:dev.renovationtrust.com',
        'applinks:www.renovationtrust.com'
      ],
      'aps-environment': 'development'
    }
  },
  android: {
    package: 'com.renovationtrust.app',
    versionCode: 4,
    googleServicesFile: './google-services.json',
    useNextNotificationsApi: true,
    intentFilters: [
      {
        action: 'VIEW',
        autoVerify: true,
        data: [
          {
            scheme: 'https',
            host: '*.renovationtrust.com',
            pathPrefix: '/app'
          }
        ],
        category: [
          'BROWSABLE',
          'DEFAULT'
        ]
      }
    ],
    permissions: [
      'android.permission.ACCESS_COARSE_LOCATION',
      'android.permission.ACCESS_FINE_LOCATION',
      'android.permission.READ_CONTACTS',
      'android.permission.WRITE_CONTACTS',
      'android.permission.RECORD_AUDIO',
      'android.permission.CAMERA',
      'android.permission.READ_EXTERNAL_STORAGE',
      'android.permission.WRITE_EXTERNAL_STORAGE',
      'android.permission.INTERNET',
      'android.permission.FOREGROUND_SERVICE',
      'android.permission.USE_BIOMETRIC',
      'android.permission.USE_FINGERPRINT'
    ]
  },
  web: {
    startUrl: 'login',
    config: {
      firebase: {
        apiKey: '*********',
        measurementId: 'G-5R6ERDH7WD',
        projectId: 'renovation-trust-dev',
        appId: '1:1049372345126:web:5ee91e2a87a91b4fad37e7'
      }
    }
  },
  _internal: {
    isDebug: false,
    projectRoot: '/Users/mofo/Documents/RenovationTrustApp/RenovationTrust',
    dynamicConfigPath: null,
    staticConfigPath: '/Users/mofo/Documents/RenovationTrustApp/RenovationTrust/app.json',
    packageJsonPath: '/Users/mofo/Documents/RenovationTrustApp/RenovationTrust/package.json',
    pluginHistory: {
      'react-native-maps': {
        name: 'react-native-maps',
        version: 'UNVERSIONED'
      },
      'expo-ads-admob': {
        name: 'expo-ads-admob',
        version: 'UNVERSIONED'
      },
      'expo-apple-authentication': {
        name: 'expo-apple-authentication',
        version: '3.1.0'
      },
      'expo-contacts': {
        name: 'expo-contacts',
        version: '9.1.2'
      },
      'expo-notifications': {
        name: 'expo-notifications',
        version: '0.11.6'
      },
      'expo-updates': {
        name: 'expo-updates',
        version: 'UNVERSIONED'
      },
      'expo-branch': {
        name: 'expo-branch',
        version: 'UNVERSIONED'
      },
      'expo-document-picker': {
        name: 'expo-document-picker',
        version: '9.1.2'
      },
      'expo-facebook': {
        name: 'expo-facebook',
        version: '11.0.5'
      },
      'expo-splash-screen': {
        name: 'expo-splash-screen',
        version: '0.10.2'
      },
      'expo-firebase-core': {
        name: 'expo-firebase-core',
        version: '3.0.0'
      },
      'expo-app-auth': {
        name: 'expo-app-auth',
        version: '10.1.2'
      },
      'expo-av': {
        name: 'expo-av',
        version: '9.1.2'
      },
      'expo-camera': {
        name: 'expo-camera',
        version: '11.0.3'
      },
      'expo-image-picker': {
        name: 'expo-image-picker',
        version: '10.1.4'
      },
      'expo-file-system': {
        name: 'expo-file-system',
        version: '11.0.2'
      },
      'expo-location': {
        name: 'expo-location',
        version: '12.0.4'
      },
      'expo-screen-orientation': {
        name: 'expo-screen-orientation',
        version: '3.1.0'
      },
      'expo-local-authentication': {
        name: 'expo-local-authentication',
        version: '11.0.2'
      }
    },
    modResults: {
      android: {
        gradleProperties: [],
        manifest: {
          manifest: {
            '$': {
              'xmlns:android': 'http://schemas.android.com/apk/res/android',
              package: 'com.renovationtrust.app'
            },
            'uses-permission': [
              {
                '$': {
                  'android:name': 'android.permission.INTERNET'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.ACCESS_COARSE_LOCATION'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.ACCESS_FINE_LOCATION'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.READ_CONTACTS'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.WRITE_CONTACTS'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.RECORD_AUDIO'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.CAMERA'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.READ_EXTERNAL_STORAGE'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.WRITE_EXTERNAL_STORAGE'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.FOREGROUND_SERVICE'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.USE_BIOMETRIC'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.USE_FINGERPRINT'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.ACCESS_NETWORK_STATE'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.SYSTEM_ALERT_WINDOW'
                }
              },
              {
                '$': {
                  'android:name': 'android.permission.WAKE_LOCK'
                }
              },
              {
                '$': {
                  'android:name': 'com.google.android.c2dm.permission.RECEIVE'
                }
              }
            ],
            application: [
              {
                '$': {
                  'android:name': '.MainApplication',
                  'android:label': '@string/app_name',
                  'android:icon': '@mipmap/ic_launcher',
                  'android:roundIcon': '@mipmap/ic_launcher_round',
                  'android:allowBackup': 'true',
                  'android:theme': '@style/AppTheme'
                },
                activity: [
                  {
                    '$': {
                      'android:name': '.MainActivity',
                      'android:label': '@string/app_name',
                      'android:configChanges': 'keyboard|keyboardHidden|orientation|screenSize|uiMode',
                      'android:launchMode': 'singleTask',
                      'android:windowSoftInputMode': 'adjustResize',
                      'android:theme': '@style/Theme.App.SplashScreen',
                      'android:screenOrientation': 'portrait'
                    },
                    'intent-filter': [
                      {
                        action: [
                          {
                            '$': {
                              'android:name': 'android.intent.action.MAIN'
                            }
                          }
                        ],
                        category: [
                          {
                            '$': {
                              'android:name': 'android.intent.category.LAUNCHER'
                            }
                          }
                        ]
                      },
                      {
                        action: [
                          {
                            '$': {
                              'android:name': 'android.intent.action.VIEW'
                            }
                          }
                        ],
                        category: [
                          {
                            '$': {
                              'android:name': 'android.intent.category.DEFAULT'
                            }
                          },
                          {
                            '$': {
                              'android:name': 'android.intent.category.BROWSABLE'
                            }
                          }
                        ],
                        data: [
                          {
                            '$': {
                              'android:scheme': 'renovationtrust'
                            }
                          },
                          {
                            '$': {
                              'android:scheme': 'com.renovationtrust.app'
                            }
                          }
                        ]
                      },
                      {
                        '$': {
                          'android:autoVerify': 'true'
                        },
                        data: [
                          {
                            '$': {
                              'android:scheme': 'https',
                              'android:host': '*.renovationtrust.com',
                              'android:pathPrefix': '/app'
                            }
                          }
                        ],
                        action: [
                          {
                            '$': {
                              'android:name': 'android.intent.action.VIEW'
                            }
                          }
                        ],
                        category: [
                          {
                            '$': {
                              'android:name': 'android.intent.category.BROWSABLE'
                            }
                          },
                          {
                            '$': {
                              'android:name': 'android.intent.category.DEFAULT'
                            }
                          }
                        ]
                      }
                    ]
                  },
                  {
                    '$': {
                      'android:name': 'com.facebook.react.devsupport.DevSettingsActivity'
                    }
                  },
                  {
                    '$': {
                      'android:name': 'com.theartofdev.edmodo.cropper.CropImageActivity',
                      'android:theme': '@style/Base.Theme.AppCompat'
                    }
                  }
                ],
                'meta-data': [
                  {
                    '$': {
                      'android:name': 'expo.modules.updates.ENABLED',
                      'android:value': 'true'
                    }
                  },
                  {
                    '$': {
                      'android:name': 'expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH',
                      'android:value': 'ALWAYS'
                    }
                  },
                  {
                    '$': {
                      'android:name': 'expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS',
                      'android:value': '0'
                    }
                  },
                  {
                    '$': {
                      'android:name': 'expo.modules.updates.EXPO_UPDATE_URL',
                      'android:value': 'https://exp.host/@renovationtrust/RenovationTrust'
                    }
                  },
                  {
                    '$': {
                      'android:name': 'expo.modules.updates.EXPO_SDK_VERSION',
                      'android:value': '41.0.0'
                    }
                  },
                  {
                    '$': {
                      'android:name': 'expo.modules.notifications.default_notification_icon',
                      'android:resource': '@drawable/notification_icon'
                    }
                  }
                ]
              }
            ]
          }
        },
        strings: {
          resources: {
            string: [
              {
                '$': {
                  name: 'app_name'
                },
                _: 'RenovationTrust'
              }
            ]
          }
        }
      },
      ios: {
        infoPlist: {
          NSCalendarsUsageDescription: 'Allow Renovation Trust to access your calendar',
          NSCameraUsageDescription: 'Allow use of your camera for: IDs, avatars and other photos including: project, inspirational, progress, logos and more',
          NSContactsUsageDescription: 'Allow use of your contacts to import customers or contractors',
          NSLocationWhenInUseUsageDescription: 'Allow use of your location to improve the accuracy of location searches and better secure your account',
          NSMicrophoneUsageDescription: 'Allow Renovation Trust to access your microphone',
          NSMotionUsageDescription: 'Allow Renovation Trust to access your accelerometer',
          NSPhotoLibraryAddUsageDescription: 'Allow Renovation Trust to save photos',
          NSPhotoLibraryUsageDescription: 'Allow access to your photos to upload IDs, avatars and other photos including: projects, inspiration, progress, logos and more',
          NSRemindersUsageDescription: 'Allow Renovation Trust to access your reminders',
          NSFaceIDUsageDescription: 'Use Face ID or Touch ID to login, release payments and fund projects.',
          LSApplicationQueriesSchemes: [
            'comgooglemaps',
            'citymapper',
            'uber',
            'lyft',
            'waze'
          ],
          NSUserTrackingUsageDescription: 'This identifier will be used to deliver personalized ads to you.',
          SKAdNetworkItems: [
            {
              SKAdNetworkIdentifier: 'v9wttpbfk9.skadnetwork'
            },
            {
              SKAdNetworkIdentifier: 'n38lu8286q.skadnetwork'
            }
          ],
          NSLocationAlwaysAndWhenInUseUsageDescription: 'Allow $(PRODUCT_NAME) to access your location',
          NSLocationAlwaysUsageDescription: 'Allow $(PRODUCT_NAME) to access your location',
          CFBundleShortVersionString: '0.0.4',
          CFBundleVersion: '0.0.4',
          UIUserInterfaceStyle: 'Light',
          CFBundleURLTypes: [
            {
              CFBundleURLSchemes: [
                'renovationtrust',
                'com.renovationtrust.app'
              ]
            },
            {
              CFBundleURLSchemes: [
                'com.googleusercontent.apps.31548342916-955d9ftq10kr3kuaicf3k9qoj7pdigct'
              ]
            },
            {
              CFBundleTypeRole: 'Editor',
              CFBundleURLName: 'OAuthRedirect',
              CFBundleURLSchemes: [
                'com.renovationtrust.app'
              ]
            }
          ],
          UIRequiresFullScreen: true,
          UISupportedInterfaceOrientations: [
            'UIInterfaceOrientationPortrait',
            'UIInterfaceOrientationPortraitUpsideDown'
          ],
          CFBundleDisplayName: 'RenovationTrust'
        },
        entitlements: {
          'com.apple.developer.associated-domains': [
            'applinks:dev.renovationtrust.com',
            'applinks:www.renovationtrust.com'
          ],
          'aps-environment': 'development'
        },
        expoPlist: {
          EXUpdatesEnabled: true,
          EXUpdatesCheckOnLaunch: 'ALWAYS',
          EXUpdatesLaunchWaitMs: 0,
          EXUpdatesURL: 'https://exp.host/@renovationtrust/RenovationTrust',
          EXUpdatesSDKVersion: '41.0.0'
        }
      }
    }
  },
  mods: {
    android: {
      manifest: [AsyncFunction: interceptingMod] {
        isProvider: true
      },
      strings: [AsyncFunction: interceptingMod] {
        isProvider: true
      },
      gradleProperties: [AsyncFunction: interceptingMod] {
        isProvider: true
      }
    },
    ios: {
      infoPlist: [AsyncFunction: interceptingMod] {
        isProvider: true
      },
      entitlements: [AsyncFunction: interceptingMod] {
        isProvider: true
      },
      expoPlist: [AsyncFunction: interceptingMod] {
        isProvider: true
      }
    }
  }
}

looking at your entitlements configuration, it doesn’t match up with the capabilities you have enabled. as far as i know, those won’t actually do anything without the associated entitlements being added to the app, and your app only appears to use push notifications and associated domains entitlements. someone else on your team might have context on why they were enabled. you could try manually disabling everything except push notifications and associated domains on the apple developer portal for your identifier and re-running the build. it will invalidate your profile but eas build will re-generate the profile when you run another build.