diff --git a/payload_consumer/postinstall_runner_action.cc b/payload_consumer/postinstall_runner_action.cc
index 1717dd7..84237b1 100644
--- a/payload_consumer/postinstall_runner_action.cc
+++ b/payload_consumer/postinstall_runner_action.cc
@@ -111,12 +111,17 @@
   // If we are switching slots, then we are required to MapAllPartitions,
   // as FinishUpdate() requires all partitions to be mapped.
   // And switching slots requires FinishUpdate() to be called first
-  if (!install_plan_.partitions.empty() ||
-      install_plan_.switch_slot_on_reboot) {
-    if (!dynamic_control->MapAllPartitions()) {
-      LOG(ERROR) << "Failed to map all partitions, this would cause "
-                    "FinishUpdate to fail. Abort early.";
-      return CompletePostinstall(ErrorCode::kPostInstallMountError);
+  if (dynamic_control->GetVirtualAbFeatureFlag().IsEnabled()) {
+    // If we are switching slots, then we are required to MapAllPartitions,
+    // as FinishUpdate() requires all partitions to be mapped.
+    // And switching slots requires FinishUpdate() to be called first
+    if (!install_plan_.partitions.empty() ||
+        install_plan_.switch_slot_on_reboot) {
+      if (!dynamic_control->MapAllPartitions()) {
+        LOG(ERROR) << "Failed to map all partitions, this would cause "
+                      "FinishUpdate to fail. Abort early.";
+        return CompletePostinstall(ErrorCode::kPostInstallMountError);
+      }
     }
   }
 
diff --git a/payload_consumer/postinstall_runner_action_unittest.cc b/payload_consumer/postinstall_runner_action_unittest.cc
index 7416e66..74775ad 100644
--- a/payload_consumer/postinstall_runner_action_unittest.cc
+++ b/payload_consumer/postinstall_runner_action_unittest.cc
@@ -112,6 +112,8 @@
         .WillByDefault(Return(true));
     ON_CALL(*mock_dynamic_control_, UnmapAllPartitions())
         .WillByDefault(Return(true));
+    ON_CALL(*mock_dynamic_control_, GetVirtualAbFeatureFlag)
+        .WillByDefault(Return(FeatureFlag(FeatureFlag::Value::NONE)));
   }
 
   // Setup an action processor and run the PostinstallRunnerAction with a single
@@ -291,6 +293,8 @@
 // /postinst command which only exits 0.
 TEST_F(PostinstallRunnerActionTest, RunAsRootSimpleTest) {
   ScopedLoopbackDeviceBinder loop(postinstall_image_, false, nullptr);
+  ON_CALL(*mock_dynamic_control_, GetVirtualAbFeatureFlag)
+      .WillByDefault(Return(FeatureFlag(FeatureFlag::Value::LAUNCH)));
 
   RunPostinstallAction(loop.dev(), kPostinstallDefaultScript, false, false);
   EXPECT_EQ(ErrorCode::kSuccess, processor_delegate_.code_);
@@ -302,12 +306,16 @@
 }
 
 TEST_F(PostinstallRunnerActionTest, RunAsRootRunSymlinkFileTest) {
+  ON_CALL(*mock_dynamic_control_, GetVirtualAbFeatureFlag)
+      .WillByDefault(Return(FeatureFlag(FeatureFlag::Value::LAUNCH)));
   ScopedLoopbackDeviceBinder loop(postinstall_image_, false, nullptr);
   RunPostinstallAction(loop.dev(), "bin/postinst_link", false, false);
   EXPECT_EQ(ErrorCode::kSuccess, processor_delegate_.code_);
 }
 
 TEST_F(PostinstallRunnerActionTest, RunAsRootPowerwashRequiredTest) {
+  ON_CALL(*mock_dynamic_control_, GetVirtualAbFeatureFlag)
+      .WillByDefault(Return(FeatureFlag(FeatureFlag::Value::LAUNCH)));
   ScopedLoopbackDeviceBinder loop(postinstall_image_, false, nullptr);
   // Run a simple postinstall program but requiring a powerwash.
   RunPostinstallAction(loop.dev(),
@@ -324,6 +332,8 @@
 // Runs postinstall from a partition file that doesn't mount, so it should
 // fail.
 TEST_F(PostinstallRunnerActionTest, RunAsRootCantMountTest) {
+  ON_CALL(*mock_dynamic_control_, GetVirtualAbFeatureFlag)
+      .WillByDefault(Return(FeatureFlag(FeatureFlag::Value::LAUNCH)));
   RunPostinstallAction("/dev/null", kPostinstallDefaultScript, false, false);
   EXPECT_EQ(ErrorCode::kPostInstallMountError, processor_delegate_.code_);
 
@@ -334,6 +344,8 @@
 }
 
 TEST_F(PostinstallRunnerActionTest, RunAsRootSkipOptionalPostinstallTest) {
+  ON_CALL(*mock_dynamic_control_, GetVirtualAbFeatureFlag)
+      .WillByDefault(Return(FeatureFlag(FeatureFlag::Value::LAUNCH)));
   ScopedLoopbackDeviceBinder loop(postinstall_image_, false, nullptr);
   InstallPlan::Partition part;
   part.name = "part";
@@ -415,6 +427,8 @@
 
 // Test that we can cancel a postinstall action while it is running.
 TEST_F(PostinstallRunnerActionTest, RunAsRootCancelPostinstallActionTest) {
+  ON_CALL(*mock_dynamic_control_, GetVirtualAbFeatureFlag)
+      .WillByDefault(Return(FeatureFlag(FeatureFlag::Value::LAUNCH)));
   ScopedLoopbackDeviceBinder loop(postinstall_image_, false, nullptr);
   EXPECT_CALL(*mock_dynamic_control_, MapAllPartitions()).Times(AtLeast(1));
 
@@ -430,6 +444,8 @@
 // Test that we parse and process the progress reports from the progress
 // file descriptor.
 TEST_F(PostinstallRunnerActionTest, RunAsRootProgressUpdatesTest) {
+  ON_CALL(*mock_dynamic_control_, GetVirtualAbFeatureFlag)
+      .WillByDefault(Return(FeatureFlag(FeatureFlag::Value::LAUNCH)));
   EXPECT_CALL(*mock_dynamic_control_, MapAllPartitions())
       .Times(AtLeast(1))
       .WillRepeatedly(Return(true));
