diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d44540ec..2b74e0df 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,8 +4,10 @@
 
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
+    <uses-permission
+        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
         android:maxSdkVersion="28" />
+
     <queries>
         <intent>
             <action android:name="android.intent.action.MAIN" />
@@ -19,6 +21,7 @@
     <application
         android:name=".infrastructure.android.AndroidApp"
         android:allowBackup="true"
+        android:enableOnBackInvokedCallback="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/read_you"
         android:roundIcon="@mipmap/ic_launcher_round"
diff --git a/app/src/main/java/me/ash/reader/ui/ext/NavGraphBuilderExt.kt b/app/src/main/java/me/ash/reader/ui/ext/NavGraphBuilderExt.kt
index ef1656d5..c81ba47d 100644
--- a/app/src/main/java/me/ash/reader/ui/ext/NavGraphBuilderExt.kt
+++ b/app/src/main/java/me/ash/reader/ui/ext/NavGraphBuilderExt.kt
@@ -8,38 +8,88 @@
 
 package me.ash.reader.ui.ext
 
+import android.os.Build
 import androidx.compose.animation.*
+import androidx.compose.animation.core.tween
 import androidx.compose.runtime.Composable
 import androidx.navigation.NamedNavArgument
 import androidx.navigation.NavBackStackEntry
 import androidx.navigation.NavDeepLink
 import androidx.navigation.NavGraphBuilder
 import androidx.navigation.compose.composable
+import me.ash.reader.ui.motion.EmphasizedAccelerate
+import me.ash.reader.ui.motion.EmphasizedDecelerate
 import me.ash.reader.ui.motion.materialSharedAxisXIn
 import me.ash.reader.ui.motion.materialSharedAxisXOut
 
 private const val INITIAL_OFFSET_FACTOR = 0.10f
+private const val INITIAL_SCALE_FACTOR = 0.8f
+
 
 fun NavGraphBuilder.animatedComposable(
-        route: String,
-        arguments: List<NamedNavArgument> = emptyList(),
-        deepLinks: List<NavDeepLink> = emptyList(),
-        content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit
-) = composable(
+    route: String,
+    arguments: List<NamedNavArgument> = emptyList(),
+    deepLinks: List<NavDeepLink> = emptyList(),
+    usePredictiveBack: Boolean = Build.VERSION.SDK_INT >= 34,
+    content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit,
+) {
+    if (usePredictiveBack) {
+        animatedComposablePredictiveBack(route, arguments, deepLinks, content)
+    } else {
+        animatedComposableLegacy(route, arguments, deepLinks, content)
+    }
+}
+
+fun NavGraphBuilder.animatedComposablePredictiveBack(
+    route: String,
+    arguments: List<NamedNavArgument> = emptyList(),
+    deepLinks: List<NavDeepLink> = emptyList(),
+    content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit,
+) =
+    composable(
         route = route,
         arguments = arguments,
         deepLinks = deepLinks,
-        enterTransition = {
-            materialSharedAxisXIn(initialOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() })
-        },
+        enterTransition = { materialSharedAxisXIn(initialOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() }) },
         exitTransition = {
             materialSharedAxisXOut(targetOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
         },
         popEnterTransition = {
-            materialSharedAxisXIn(initialOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
+            scaleIn(
+                animationSpec = tween(durationMillis = 350, easing = EmphasizedDecelerate),
+                initialScale = INITIAL_SCALE_FACTOR,
+            ) + materialSharedAxisXIn(initialOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
         },
         popExitTransition = {
-            materialSharedAxisXOut(targetOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() })
+            materialSharedAxisXOut(targetOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() }) +
+                    scaleOut(
+                        targetScale = INITIAL_SCALE_FACTOR,
+                        animationSpec = tween(durationMillis = 350, easing = EmphasizedAccelerate),
+                    )
         },
-        content = content
+        content = content,
+    )
+
+fun NavGraphBuilder.animatedComposableLegacy(
+    route: String,
+    arguments: List<NamedNavArgument> = emptyList(),
+    deepLinks: List<NavDeepLink> = emptyList(),
+    content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit
+) = composable(
+    route = route,
+    arguments = arguments,
+    deepLinks = deepLinks,
+    enterTransition = {
+        materialSharedAxisXIn(initialOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() })
+    },
+    exitTransition = {
+        materialSharedAxisXOut(targetOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
+    },
+    popEnterTransition = {
+        materialSharedAxisXIn(initialOffsetX = { -(it * INITIAL_OFFSET_FACTOR).toInt() })
+    },
+    popExitTransition = {
+        materialSharedAxisXOut(targetOffsetX = { (it * INITIAL_OFFSET_FACTOR).toInt() })
+    },
+    content = content
 )
diff --git a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt
index fae4b522..63163fcf 100644
--- a/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt
+++ b/app/src/main/java/me/ash/reader/ui/page/home/feeds/FeedsPage.kt
@@ -204,9 +204,6 @@ fun FeedsPage(
         }
     }
 
-    BackHandler(true) {
-        context.findActivity()?.moveTaskToBack(false)
-    }
 
     RYScaffold(
         topBarTonalElevation = topBarTonalElevation.value.dp,