diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 489f9e0..f2197c4 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -1526,6 +1526,11 @@
         .applyIf(
             featureSplitConfiguration != null,
             b -> b.setIsolatedSplits(featureSplitConfiguration.isIsolatedSplitsEnabled()))
+        .applyIf(
+            resourceShrinkerConfiguration != null,
+            b ->
+                b.setOptimizedResourceShrinking(
+                    resourceShrinkerConfiguration.isOptimizedShrinking()))
         .build();
   }
 
diff --git a/src/main/java/com/android/tools/r8/dump/DumpOptions.java b/src/main/java/com/android/tools/r8/dump/DumpOptions.java
index f2beb28..052a6de 100644
--- a/src/main/java/com/android/tools/r8/dump/DumpOptions.java
+++ b/src/main/java/com/android/tools/r8/dump/DumpOptions.java
@@ -47,6 +47,7 @@
   private static final String INTERMEDIATE_KEY = "intermediate";
   private static final String INCLUDE_DATA_RESOURCES_KEY = "include-data-resources";
   private static final String ISOLATED_SPLITS_KEY = "isolated-splits";
+  private static final String OPTIMIZED_RESOURCE_SHRINKING = "optimized-resource-shrinking";
   private static final String TREE_SHAKING_KEY = "tree-shaking";
   private static final String MINIFICATION_KEY = "minification";
   private static final String FORCE_PROGUARD_COMPATIBILITY_KEY = "force-proguard-compatibility";
@@ -66,6 +67,7 @@
   private final Optional<Boolean> intermediate;
   private final Optional<Boolean> includeDataResources;
   private final Optional<Boolean> isolatedSplits;
+  private final Optional<Boolean> optimizedResourceShrinking;
   private final Optional<Boolean> treeShaking;
   private final Optional<Boolean> minification;
   private final Optional<Boolean> forceProguardCompatibility;
@@ -113,7 +115,8 @@
       Map<String, String> systemProperties,
       boolean dumpInputToFile,
       String traceReferencesConsumer,
-      AndroidResourceProvider androidResourceProvider) {
+      AndroidResourceProvider androidResourceProvider,
+      Optional<Boolean> optimizedResourceShrinking) {
     this.backend = backend;
     this.tool = tool;
     this.compilationMode = compilationMode;
@@ -125,6 +128,7 @@
     this.intermediate = intermediate;
     this.includeDataResources = includeDataResources;
     this.isolatedSplits = isolatedSplits;
+    this.optimizedResourceShrinking = optimizedResourceShrinking;
     this.treeShaking = treeShaking;
     this.minification = minification;
     this.forceProguardCompatibility = forceProguardCompatibility;
@@ -173,9 +177,12 @@
       addOptionalDumpEntry(buildProperties, INTERMEDIATE_KEY, intermediate);
       addOptionalDumpEntry(buildProperties, INCLUDE_DATA_RESOURCES_KEY, includeDataResources);
       addOptionalDumpEntry(buildProperties, ISOLATED_SPLITS_KEY, isolatedSplits);
+      addOptionalDumpEntry(buildProperties, OPTIMIZED_RESOURCE_SHRINKING, isolatedSplits);
       addOptionalDumpEntry(buildProperties, TREE_SHAKING_KEY, treeShaking);
       addOptionalDumpEntry(
           buildProperties, FORCE_PROGUARD_COMPATIBILITY_KEY, forceProguardCompatibility);
+      addOptionalDumpEntry(
+          buildProperties, OPTIMIZED_RESOURCE_SHRINKING, optimizedResourceShrinking);
     } else {
       addDumpEntry(buildProperties, TRACE_REFERENCES_CONSUMER, traceReferencesConsumer);
     }
@@ -251,6 +258,9 @@
       case ISOLATED_SPLITS_KEY:
         builder.setIsolatedSplits(Boolean.parseBoolean(value));
         return;
+      case OPTIMIZED_RESOURCE_SHRINKING:
+        builder.setOptimizedResourceShrinking(Boolean.parseBoolean(value));
+        return;
       case TREE_SHAKING_KEY:
         builder.setTreeShaking(Boolean.parseBoolean(value));
         return;
@@ -391,6 +401,7 @@
     private Collection<ArtProfileProvider> artProfileProviders;
     private Collection<StartupProfileProvider> startupProfileProviders;
     private AndroidResourceProvider androidResourceProvider;
+    private Optional<Boolean> optimizedResourceShrinking = Optional.empty();
 
     private boolean enableMissingLibraryApiModeling = false;
     private boolean isAndroidPlatformBuild = false;
@@ -472,6 +483,10 @@
       return this;
     }
 
+    public void setOptimizedResourceShrinking(boolean optimizedResourceShrinking) {
+      this.optimizedResourceShrinking = Optional.of(optimizedResourceShrinking);
+    }
+
     public Builder setForceProguardCompatibility(boolean forceProguardCompatibility) {
       this.forceProguardCompatibility = Optional.of(forceProguardCompatibility);
       return this;
@@ -581,7 +596,8 @@
           systemProperties,
           dumpInputToFile,
           traceReferencesConsumer,
-          androidResourceProvider);
+          androidResourceProvider,
+          optimizedResourceShrinking);
     }
 
     public AndroidResourceProvider getAndroidResourceProvider() {
diff --git a/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java b/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java
index 3e484d4..ab542a4 100644
--- a/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java
+++ b/src/main/java/com/android/tools/r8/utils/CompileDumpCompatR8.java
@@ -49,6 +49,7 @@
           "--release",
           "--enable-missing-library-api-modeling",
           "--android-platform-build",
+          "--optimized-resource-shrinking",
           ISOLATED_SPLITS_FLAG);
 
   private static final List<String> VALID_OPTIONS_WITH_SINGLE_OPERAND =
@@ -120,6 +121,7 @@
     int threads = -1;
     BooleanBox enableMissingLibraryApiModeling = new BooleanBox(false);
     BooleanBox androidPlatformBuild = new BooleanBox(false);
+    BooleanBox optimizedResourceShrinking = new BooleanBox(false);
     BooleanBox isolatedSplits = new BooleanBox(false);
     for (int i = 0; i < args.length; i++) {
       String option = args[i];
@@ -151,6 +153,9 @@
           case "--android-platform-build":
             androidPlatformBuild.set(true);
             break;
+          case "--optimized-resource-shrinking":
+            optimizedResourceShrinking.set(true);
+            break;
           case ISOLATED_SPLITS_FLAG:
             isolatedSplits.set(true);
             break;
@@ -302,6 +307,11 @@
               ResourceShrinkerDumpUtils.setupBaseResourceShrinking(
                   finalAndroidResourcesInput, finalAndroidResourcesOutput, commandBuilder),
           "Failed initializing resource shrinker.");
+      runIgnoreMissing(
+          () ->
+              ResourceShrinkerDumpUtils.setOptimziedResourceShrinking(
+                  optimizedResourceShrinking.get(), commandBuilder),
+          "Failed setting optimized resource shrinking flag.");
     }
     if (desugaredLibKeepRuleConsumer != null) {
       commandBuilder.setDesugaredLibraryKeepRuleConsumer(desugaredLibKeepRuleConsumer);
diff --git a/src/main/java/com/android/tools/r8/utils/compiledump/ResourceShrinkerDumpUtils.java b/src/main/java/com/android/tools/r8/utils/compiledump/ResourceShrinkerDumpUtils.java
index 8ab1c93..c4964c1 100644
--- a/src/main/java/com/android/tools/r8/utils/compiledump/ResourceShrinkerDumpUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/compiledump/ResourceShrinkerDumpUtils.java
@@ -22,4 +22,8 @@
     builder.setAndroidResourceProvider(new ArchiveProtoAndroidResourceProvider(input));
     builder.setAndroidResourceConsumer(new ArchiveProtoAndroidResourceConsumer(output));
   }
+
+  public static void setOptimziedResourceShrinking(boolean value, R8Command.Builder builder) {
+    builder.setResourceShrinkerConfiguration(b -> b.enableOptimizedShrinkingWithR8().build());
+  }
 }
diff --git a/tools/compiledump.py b/tools/compiledump.py
index 43267ef..c27fcf8 100755
--- a/tools/compiledump.py
+++ b/tools/compiledump.py
@@ -150,6 +150,10 @@
                         help='Run as a platform build',
                         default=False,
                         action='store_true')
+    parser.add_argument('--optimized-resource-shrinking',
+                        help='Use optimized resource shrinking',
+                        default=False,
+                        action='store_true')
     parser.add_argument('--compilation-mode',
                         '--compilation_mode',
                         help='Run compilation in specified mode',
@@ -427,6 +431,10 @@
         return True
     return build_properties.get('android-platform-build') == 'true'
 
+def determine_optimized_resource_shrinking(args, build_properties):
+    if args.optimized_resource_shrinking:
+        return True
+    return build_properties.get('optimized-resource-shrinking') == 'true'
 
 def determine_enable_missing_library_api_modeling(args, build_properties):
     if args.enable_missing_library_api_modeling:
@@ -600,6 +608,8 @@
         classfile = determine_class_file(args, build_properties)
         android_platform_build = determine_android_platform_build(
             args, build_properties)
+        optimized_resource_shrinking = determine_optimized_resource_shrinking(
+            args, build_properties)
         enable_missing_library_api_modeling = determine_enable_missing_library_api_modeling(
             args, build_properties)
         mode = determine_compilation_mode(args, build_properties)
@@ -715,6 +725,8 @@
             cmd.extend(['--classfile'])
         if android_platform_build:
             cmd.extend(['--android-platform-build'])
+        if optimized_resource_shrinking:
+            cmd.extend(['--optimized-resource-shrinking'])
         if enable_missing_library_api_modeling:
             cmd.extend(['--enable-missing-library-api-modeling'])
         if args.threads:
