diff --git a/cli/src/tasks/migrate.ts b/cli/src/tasks/migrate.ts
index 305951c8c..789af9d67 100644
--- a/cli/src/tasks/migrate.ts
+++ b/cli/src/tasks/migrate.ts
@@ -172,6 +172,11 @@ export async function migrateCommand(config: Config, noprompt: boolean, packagem
       }
 
       if (allDependencies['@capacitor/android'] && existsSync(config.android.platformDirAbs)) {
+        // AndroidManifest.xml add navigation"
+        await runTask(`Migrating AndroidManifest.xml by adding navigation to Activity configChanges.`, () => {
+          return updateAndroidManifest(join(config.android.srcMainDirAbs, 'AndroidManifest.xml'));
+        });
+
         const gradleWrapperVersion = getGradleWrapperVersion(
           join(config.android.platformDirAbs, 'gradle', 'wrapper', 'gradle-wrapper.properties'),
         );
@@ -594,6 +599,23 @@ function setAllStringIn(data: string, start: string, end: string, replacement: s
   return result;
 }
 
+async function updateAndroidManifest(filename: string) {
+  const txt = readFile(filename);
+  if (!txt) {
+    return;
+  }
+
+  if (txt.includes('navigation')) {
+    return; // Probably already updated
+  }
+  const replaced = txt.replace(
+    'android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"',
+    'android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation"',
+  );
+
+  writeFileSync(filename, replaced, 'utf-8');
+}
+
 export async function patchOldCapacitorPlugins(config: Config): Promise<void[]> {
   const allPlugins = await getPlugins(config, 'android');
   const androidPlugins = await getAndroidPlugins(allPlugins);
@@ -628,28 +650,3 @@ export async function patchOldCapacitorPlugins(config: Config): Promise<void[]>
     }),
   );
 }
-
-async function removeKey(filename: string, key: string) {
-  const txt = readFile(filename);
-  if (!txt) {
-    return;
-  }
-  let lines = txt.split('\n');
-  let removed = false;
-  let removing = false;
-  lines = lines.filter((line) => {
-    if (removing && line.includes('</string>')) {
-      removing = false;
-      return false;
-    }
-    if (line.includes(`<key>${key}</key`)) {
-      removing = true;
-      removed = true;
-    }
-    return !removing;
-  });
-
-  if (removed) {
-    writeFileSync(filename, lines.join('\n'), 'utf-8');
-  }
-}