expo / expo/eas-cli

EAS iOS build omits valid widget extension provisioning profile from Fastlane mapping

Open
#4,378 2 comments 0 reactions 0 assignees View on GitHub
needs review
Dominant language
TypeScript
Stars
1.4k
Forks
236
Avg merge
3d 1h
Merged PRs (30d)
91

Description

### Build/Submit details page URL

https://expo.dev/accounts/ilmm/projects/ilmm-ai/builds/f1386802-6fa3-43b6-9d4e-1f995b494962

### Summary

An existing React Native project with a WidgetKit extension builds successfully with local iOS credentials but fails on EAS cloud builds. EAS has valid remote credentials for both the main app and widget, but the cloud build passes Fastlane a provisioning-profile mapping for only the main app target.

### Managed or bare?

bare

### Environment

npx expo-env-info

```
expo-env-info 2.1.0 environment info:
System:
OS: macOS 26.4.1
Shell: 5.9 - /bin/zsh
Binaries:
Node: 22.22.0 - /Users/anas/.nvm/versions/node/v22.22.0/bin/node
Yarn: 1.22.22 - /Users/anas/.nvm/versions/node/v22.22.0/bin/yarn
npm: 10.9.4 - /Users/anas/.nvm/versions/node/v22.22.0/bin/npm
Watchman: 2025.10.27.00 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.16.2 - /Users/anas/.rbenv/shims/pod
SDKs:
iOS SDK:
Platforms: DriverKit 25.5, iOS 26.5, macOS 26.5, tvOS 26.5, visionOS 26.5, watchOS 26.5
Android SDK:
API Levels: 34, 35, 36
Build Tools: 35.0.0, 36.0.0
IDEs:
Android Studio: 2025.1 AI-251.26094.121.2513.14007798
Xcode: 26.5/17F42 - /usr/bin/xcodebuild
npmPackages:
babel-preset-expo: ~57.0.10 => 57.0.11
expo: ~57.0.21 => 57.0.21
react: 19.2.3 => 19.2.3
react-dom: 19.2.3 => 19.2.3
react-native: ^0.86.3 => 0.86.3
npmGlobalPackages:
eas-cli: 24.0.0
Expo Workflow: bare
```

npx expo-doctor
```

19/21 checks passed. 2 checks failed. Possible issues detected:
Use the --verbose flag to see more details about passed checks.

✖ Check for app config fields that may not be synced in a non-CNG project
This project contains native project folders but also has native configuration properties in app.json, indicating it is configuredto use Prebuild. When the android/ios folders are present, EAS Build will not sync the following properties: scheme, userInterfaceStyle, ios, android, plugins.

✖ Validate packages against React Native Directory package metadata
The following issues were found when validating your dependencies against React Native Directory:
Untested on New Architecture: @nozbe/watermelondb
Unmaintained: @notifee/react-native, @react-native-community/blur, @react-native-voice/voice
No metadata available: @react-native-vector-icons/common, react-native-pcm-player-lite, @nozbe/simdjson
Advice:
Use libraries that are actively maintained and support the New Architecture. Find alternative libraries with https://reactnative.directory.
Add packages to expo.doctor.reactNativeDirectoryCheck.exclude in package.json to selectively skip validations, if the warning is not relevant.
Update React Native Directory to include metadata for unknown packages. Alternatively, set expo.doctor.reactNativeDirectoryCheck.listUnknownPackages in package.json to false to skip warnings about packages with no metadata, if the warning is not relevant.

2 checks failed, indicating possible issues with the project.
```

Additional environment details:

```
EAS CLI: 24.0.0
Expo SDK: 57
React Native: 0.86.3
Xcode build image: 26.5
macOS build environment: EAS cloud
```

### Error output

The build fails during the Run fastlane step with:

```
Detected provisioning profile mapping:
{:\"com.ilmmai.ilmm\"=>\"259a6624-0583-44ca-92d6-0ae6516ef541\"}

No profiles for 'com.ilmmai.ilmm.ILMMWidget' were found: Xcode couldn't find
any iOS App Development provisioning profiles matching
'com.ilmmai.ilmm.ILMMWidget'. Automatic signing is disabled and unable to
generate a profile. To enable automatic signing, pass
-allowProvisioningUpdates to xcodebuild.

(in target 'ILMMWidgetExtension' from project 'ilmm')
```

The mapping contains the main app profile but omits the widget profile. The expected additional entry is:

```
\"com.ilmmai.ilmm.ILMMWidget\" => \"77548484-10a4-401a-86f2-76fce84c4d2a\"
```

The build also reports that it is using remote iOS credentials and that the main app credentials are ready. The widget provisioning profile is present and active in the EAS dashboard, but it is not passed to Fastlane/Xcode.

### Reproducible demo or steps to reproduce from a blank project

This is an existing bare React Native project, so there is no blank-project reproduction yet.

1. Create an iOS project with these targets:
- Main target: `ilmm`
- Main bundle ID: `com.ilmmai.ilmm`
- Widget target: `ILMMWidgetExtension`
- Widget bundle ID: `com.ilmmai.ilmm.ILMMWidget`

2. Configure the widget with this entitlement:

```json
{
"com.apple.security.application-groups": [
"group.com.ilmmai.ilmm"
]
}
```

3. Configure valid App Store distribution credentials in EAS for both bundle IDs.

4. Run:

```bash
eas build --platform ios --profile ios-production --auto-submit --non-interactive
```

5. EAS reports the main app credentials as ready, but Fastlane's provisioning-profile mapping contains only `com.ilmmai.ilmm`.

6. Xcode fails while archiving `ILMMWidgetExtension` because no profile is assigned to the widget target.

The same project succeeds with local credentials because `credentials.json` explicitly maps `ILMMWidgetExtension` to its provisioning profile.

## Credentials and targets

Both App Store distribution profiles are present and valid in EAS:

```text
Main bundle ID: com.ilmmai.ilmm
Main profile UUID: 259a6624-0583-44ca-92d6-0ae6516ef541

Widget target: ILMMWidgetExtension
Widget bundle ID: com.ilmmai.ilmm.ILMMWidget
Widget profile UUID: 77548484-10a4-401a-86f2-76fce84c4d2a
```

Could you investigate why the EAS cloud build sees the valid remote widget credentials but does not include the widget bundle identifier in Fastlane's provisioning-profile mapping?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.