1. El fin del FragmentManager
En el antiguo framework, dependíamos trágicamente del inestable `FragmentManager` para realizar transacciones de pantallas. Los 'IllegalStateException' tras rotar el teléfono o restaurar el estado desde background eran el pan de cada día en los foros de StackOverflow. Jetpack Compose propuso una revolución minimalista: la pantalla completa es solamente otra gran función `@Composable` intercambiada dentro de un simple `NavHost`.
2. Navegación basada en URLs (Strings) vs Type-Safe
El estándar inicial de la librería `navigation-compose` basaba sus argumentos de traslación en rudimentarias rutas tipo URL web: `navController.navigate("details_screen/user123")`. Esto propiciaba enormes bugs ortográficos si te olvidabas el slash o casteabas un String como Entero a mitad por error. Hoy, la buena práctica es la **Navegación Type-Safe** mediante Kotlin Serialization: declarar la ruta destino como una `data class UserDetail(val id: Int)` fuerte asegurada por compliación, previniendo para siempre crasheadas de malformado.
3. Controladores y Múltiples Backstacks
Integrar de forma robusta la barra inferior (Bottom Navigation) presenta su propia amargura. Emplear un diseño en Compose requiere conservar cuidadosamente la pila "atrás" subyacente de la tab A mientras navegas a la Tab B, para que al regresar a la A, sigas en el preciso fragmento Scrolleado y no pierdas el estado. Usa implacablemente `saveState = true` y `restoreState = true` en cada invocación manual de tu bottom bar nav.