Skip to content

Instantly share code, notes, and snippets.

@theprashant-one
Last active March 22, 2025 03:39
Show Gist options
  • Select an option

  • Save theprashant-one/2caa96dfcb5e9958a7d9058c0d10c94e to your computer and use it in GitHub Desktop.

Select an option

Save theprashant-one/2caa96dfcb5e9958a7d9058c0d10c94e to your computer and use it in GitHub Desktop.

Revisions

  1. theprashant-one revised this gist Feb 15, 2025. No changes.
  2. theprashant-one created this gist Feb 15, 2025.
    55 changes: 55 additions & 0 deletions withDisableBundleCompression.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,55 @@
    const { withAppBuildGradle } = require("@expo/config-plugins")

    /**
    * A Config Plugin to disable bundle compression in Android build.gradle.
    * @param {import('@expo/config-plugins').ConfigPlugin} config
    * @returns {import('@expo/config-plugins').ConfigPlugin}
    */
    const withDisableBundleCompression = (config) => {
    return withAppBuildGradle(config, (config) => {
    let buildGradle = config.modResults.contents

    const hasAndroidResources = buildGradle.includes("androidResources {")
    const hasNoCompress = buildGradle.includes("noCompress")

    if (hasAndroidResources && hasNoCompress) {
    if (
    buildGradle.includes('noCompress += ["bundle"]') ||
    buildGradle.includes("noCompress += 'bundle'") ||
    buildGradle.includes('noCompress += "bundle"')
    ) {
    return config
    }

    const lines = buildGradle.split("\n")
    const modifiedLines = lines.map((line) => {
    if (line.trim().startsWith("noCompress")) {
    if (line.includes("+=")) {
    return line.replace(/\]/, ', "bundle"]')
    } else if (line.includes("=")) {
    return line.replace("=", '+= ["bundle",') + "]"
    }
    }
    return line
    })
    config.modResults.contents = modifiedLines.join("\n")
    } else {
    const androidBlock = buildGradle.indexOf("android {")
    if (androidBlock !== -1) {
    const insertPosition = buildGradle.indexOf("\n", androidBlock) + 1
    const newContent =
    buildGradle.slice(0, insertPosition) +
    " androidResources {\n" +
    ' noCompress += ["bundle"]\n' +
    " }\n" +
    buildGradle.slice(insertPosition)

    config.modResults.contents = newContent
    }
    }

    return config
    })
    }

    module.exports = withDisableBundleCompression