// @ts-check const { withXcodeProject } = require("@expo/config-plugins"); const RELEASE_SIGN_KEY = '"CODE_SIGN_IDENTITY[sdk=iphoneos*]"'; /** * RN / Expo sets Release CODE_SIGN_IDENTITY to "iPhone Developer", which forces * development-signed archives. Remove it so automatic signing picks Distribution * for App Store archives. */ /** @type {import('@expo/config-plugins').ConfigPlugin} */ function withAppStoreSigning(config) { return withXcodeProject(config, (config) => { const project = config.modResults; const configurations = project.pbxXCBuildConfigurationSection(); for (const key of Object.keys(configurations)) { const buildConfig = configurations[key]; if (!buildConfig || typeof buildConfig !== "object" || !buildConfig.buildSettings) { continue; } if (buildConfig.name !== "Release") { continue; } const identity = buildConfig.buildSettings[RELEASE_SIGN_KEY]; if ( identity === "iPhone Developer" || identity === '"iPhone Developer"' || identity === "Apple Distribution" || identity === '"Apple Distribution"' ) { delete buildConfig.buildSettings[RELEASE_SIGN_KEY]; } } return config; }); } module.exports = withAppStoreSigning;