diff --git a/packages/config/src/Serialize.ts b/packages/config/src/Serialize.ts index e2a2c9f066..daedfd20f0 100644 --- a/packages/config/src/Serialize.ts +++ b/packages/config/src/Serialize.ts @@ -64,7 +64,10 @@ export function serializeAfterStaticPlugins(val: any): any { const output: { [key: string]: any } = {}; for (const property in val) { if (val.hasOwnProperty(property)) { - if (property === 'plugins' && Array.isArray(val[property])) { + if (property === 'mods') { + // Don't serialize mods + output[property] = val[property]; + } else if (property === 'plugins' && Array.isArray(val[property])) { // Serialize the mods by removing any config plugins output[property] = val[property].map(serializeAndEvaluatePlugin); } else { diff --git a/packages/config/src/__tests__/fixtures/plugins/my-plugin.js b/packages/config/src/__tests__/fixtures/plugins/my-plugin.js index cda76a1292..6fdfe9f21f 100644 --- a/packages/config/src/__tests__/fixtures/plugins/my-plugin.js +++ b/packages/config/src/__tests__/fixtures/plugins/my-plugin.js @@ -1,4 +1,7 @@ +const { withAndroidManifest } = require('@expo/config-plugins'); + module.exports = config => { config.slug = 'from-custom-plugin'; - return config; + // test that the mods don't get serialized + return withAndroidManifest(config, config => config); };