Animated navigation transitions smooth and not janky
Why it matters
Navigation jank is the first thing users notice and the last thing developers test. When a destination screen starts rendering a 500-row FlatList or firing a data fetch during the transition animation, the JS thread is saturated and the animation drops below 60 FPS. ISO 25010:2011 performance-efficiency covers exactly this: degraded responsiveness under normal operating conditions. Users experiencing jank in the first 300ms of a screen transition — when the UI is most visually exposed — rate apps lower in store reviews and uninstall at higher rates than users who experience equivalent latency hidden behind a loading state.
Severity rationale
Low because jank degrades perceived quality and store ratings but does not block functionality or expose data; it is an experience failure, not a functional or security failure.
Remediation
Defer heavy rendering until after the navigation animation completes using InteractionManager.runAfterInteractions or a short useFocusEffect delay:
import { InteractionManager } from 'react-native'
import { useFocusEffect } from '@react-navigation/native'
function HeavyListScreen() {
const [ready, setReady] = React.useState(false)
useFocusEffect(
React.useCallback(() => {
const task = InteractionManager.runAfterInteractions(() => {
setReady(true)
})
return () => task.cancel()
}, [])
)
if (!ready) return <SkeletonPlaceholder />
return <FlatList data={data} renderItem={renderItem} />
}
InteractionManager.runAfterInteractions waits for all in-flight animations to complete before firing — more precise than a fixed timeout. Use a skeleton placeholder during the wait so the transition visually lands on real content, not a blank screen.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Mobile Navigation & Deep Linking Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · performance-efficiency — Performance Efficiency — Time Behaviour
Taxons
History
- 2026-04-18·v1.0.0·Initial import from mobile-navigation-linking·automated