Apple's guideline 5.1.1 states that apps may not require users to register or log in before using features that don't require identity. An app that redirects everyone to a login screen on first launch gives the reviewer no way to evaluate the core functionality — which itself can cause rejection. Beyond compliance, requiring signup before showing any value is the single highest-conversion-killing pattern in mobile onboarding: users uninstall rather than create accounts for apps they haven't seen yet. A meaningful guest mode isn't optional polish — it's required by policy and critical for growth.
Low because reviewers may grant an exception for apps where all features are genuinely identity-bound, but unwarranted auth gates are a documented rejection trigger under guideline 5.1.1.
Implement a guest navigator that exposes the app's core read-only value before authentication is required.
// src/navigation/RootNavigator.tsx
export function RootNavigator() {
const { user } = useAuth();
return (
<Stack.Navigator screenOptions={{ headerShown: false }}>
{user ? (
<Stack.Screen name="App" component={AuthenticatedNavigator} />
) : (
// Guest users see the main browse/explore experience
<Stack.Screen name="Guest" component={GuestNavigator} />
)}
</Stack.Navigator>
);
}
Gate only actions that genuinely require identity: saving, posting, purchasing, syncing preferences. When a guest attempts a gated action, show a prompt inviting them to sign up — not a hard redirect to login from the app root.
app-store-review-blockers.policy-compliance.guest-access-availablelowif (!user) return <LoginScreen />). Examine what content or features are available without signing in. Features that should work without auth: browsing a catalog, reading content, searching, viewing public profiles, exploring the app's main value proposition. Features that legitimately require auth: saving preferences, posting content, making purchases, accessing personalized data. Also look for expo-router middleware or React Navigation guards that blanket-redirect all non-auth users to login."App redirects all unauthenticated users to LoginScreen immediately on launch — no guest access to any features" or "'Continue as Guest' option exists but leads to a screen with no content"// In navigation root
const Stack = createNativeStackNavigator();
return (
<Stack.Navigator>
{user ? (
<Stack.Screen name="App" component={AuthenticatedNavigator} />
) : (
<Stack.Screen name="Guest" component={GuestNavigator} />
)}
</Stack.Navigator>
);