Sync ExpoWidgetsTarget version and build number with the main app on prebuild.
Fixes App Store Connect warnings when the widget extension CFBundle version does not match the containing application. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -64,6 +64,7 @@
|
||||
"bundleIdentifier": "com.beenvoice.app.ExpoWidgetsTarget"
|
||||
}
|
||||
],
|
||||
"./plugins/withSyncWidgetVersions.js",
|
||||
[
|
||||
"expo-local-authentication",
|
||||
{
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
// @ts-check
|
||||
const { withXcodeProject } = require("@expo/config-plugins");
|
||||
|
||||
/**
|
||||
* expo-widgets seeds ExpoWidgetsTarget with hardcoded MARKETING_VERSION/CURRENT_PROJECT_VERSION
|
||||
* and does not update them on later prebuilds. App Store Connect warns when the extension
|
||||
* does not match the containing app.
|
||||
*/
|
||||
/** @type {import('@expo/config-plugins').ConfigPlugin} */
|
||||
function withSyncWidgetVersions(config) {
|
||||
return withXcodeProject(config, (config) => {
|
||||
const marketingVersion = config.version ?? "1.0.0";
|
||||
const buildNumber = config.ios?.buildNumber ?? "1";
|
||||
const project = config.modResults;
|
||||
const configurations = project.pbxXCBuildConfigurationSection();
|
||||
|
||||
for (const key of Object.keys(configurations)) {
|
||||
const buildConfig = configurations[key];
|
||||
if (!buildConfig?.buildSettings) continue;
|
||||
|
||||
const bundleId = buildConfig.buildSettings.PRODUCT_BUNDLE_IDENTIFIER;
|
||||
if (!bundleId || !String(bundleId).includes("ExpoWidgetsTarget")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
buildConfig.buildSettings.MARKETING_VERSION = marketingVersion;
|
||||
buildConfig.buildSettings.CURRENT_PROJECT_VERSION = buildNumber;
|
||||
}
|
||||
|
||||
return config;
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = withSyncWidgetVersions;
|
||||
Reference in New Issue
Block a user