All navigable screens are properly registered in navigation stack/tab/drawer definitions
Why it matters
A screen that appears in the linking config but is not registered as <Stack.Screen> or <Tab.Screen> is a dangling reference — React Navigation logs a warning and refuses to navigate, so deep links, push-notification taps, and navigation.navigate('X') calls silently fail. Orphaned registrations with undefined components crash the tree on mount. The user sees a frozen button, a broken link, or a white screen with no recovery path.
Severity rationale
High because unregistered screens break navigation for real users at runtime without producing a loud crash.
Remediation
Register every screen named in the linking config inside the matching navigator. In your root navigator file, mirror each config.screens entry with a <Stack.Screen> using the exact same name:
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="ProductDetail" component={ProductDetailScreen} />
</Stack.Navigator>
Run a grep across the codebase for each screen name in linking.config.screens and confirm a component is bound.
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.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from mobile-navigation-linking·automated