01NavegaciónLa navegación es la del sistema
las pilas, las tabs y las transiciones son las de iOS, no una recreaciónPendiente
Cuándo aplicacualquier app con más de una pantalla
Qué estás comprobandoLas pilas de pantallas, las barras y las tabs usan los componentes de navegación de la plataforma en lugar de vistas propias animadas a mano. Apple recomienda los patrones estándar porque hacen que la app resulte familiar desde el primer uso, y porque traen gratis comportamientos que nadie recuerda reimplementar.
La prueba, con el móvil en la mano
Abre una pantalla de detalle y vuelve. Haz lo mismo en Ajustes o en Mail del propio iPhone, una detrás de otra, sin soltar el móvil. Compara la curva, la duración y por dónde entra la pantalla.
Pasa si
La transición es indistinguible de la de una app del sistema, el título de la barra se comporta igual y el botón de volver aparece solo.
En React Native o Expo
expo-router y @react-navigation/native-stack usan el controlador de navegación nativo por debajo. El stack en JavaScript (@react-navigation/stack) dibuja la transición con Animated: se parece, pero no es el mismo componente. Si usas expo-router ya estás en native-stack salvo que lo hayas cambiado a propósito.
Detalle técnico
Las pantallas se declaran, no se animan:
// app/_layout.tsx
import { Stack } from 'expo-router';
export default function Layout() {
return (
<Stack>
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
<Stack.Screen name="detalle/[id]" options={{ title: 'Detalle' }} />
</Stack>
);
}Si en tu proyecto aparece una animación de pantalla escrita a mano, ese es el sitio por el que empezar a mirar.