Enable Android 14+ predictive back gesture support in Expo Router. Use when the user says 'predictive back android', 'back gesture android', 'android 14 back'.
Installs into .claude/skills of the current project.
Are you the author of Add Predictive Back?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/khadinakbarlabs-add-predictive-back)
---
name: "add-predictive-back"
description: "Enable Android 14+ predictive back gesture support in Expo Router. Use when the user says 'predictive back android', 'back gesture android', 'android 14 back'."
---
# Add Predictive Back (Android 14+)
Android 14 introduced predictive back: drag from edge to "peek" behind. Premium UX feel.
## Enable in app.json
```json
{
"expo": {
"android": {
"softwareKeyboardLayoutMode": "pan",
"predictiveBackGestureEnabled": true
}
}
}
```
Some Expo SDK versions enable it via `expo-build-properties`:
```json
[
"expo-build-properties",
{
"android": {
"enablePredictiveBack": true
}
}
]
```
## Test
1. Build on Android 14+ device (NOT emulator — gesture nav required)
2. Settings → System → Gestures → "Predictive back" → ON (Android Developer Options if not visible)
3. Drag from left or right edge in your app
4. Should see app peek behind your current screen
## What Expo Router does automatically
- Stack navigator: peeks previous screen as you drag
- Tabs navigator: dismisses to home
- Modal: dismisses
## Override behavior
Use `BackHandler`:
```tsx
import { BackHandler } from 'react-native';
useEffect(() => {
const sub = BackHandler.addEventListener('hardwareBackPress', () => {
if (hasUnsavedChanges) {
showConfirmDialog();
return true; // prevent default
}
return false;
});
return () => sub.remove();
}, [hasUnsavedChanges]);
```
## Common gotchas
- Only works on Android 14+
- Emulator simulation is buggy — test on real device
- "Back" inside a modal should dismiss modal, not whole stack
- Conflicts with custom swipe gestures in screen content
## Pair with
- `add-edge-to-edge-android` (commonly paired)
- `set-up-expo-router` (predictive back needs proper stack setup)