Firebase Auth pierde sesión al reiniciar Android

Guía práctica para mantener la sesión de Firebase Auth en Flutter en Android: utiliza authStateChanges, evita lecturas sincrónicas y gestiona el splash screen para una autenticación estable al reabrir la app.

19 sept 2025 • 5 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Estoy desarrollando una app Flutter con Firebase Auth y me encontré con un problema habitual en Android: la sesión del usuario no se mantiene cuando el usuario mata la app desde aplicaciones recientes y la vuelve a abrir. En otras palabras la autenticación funciona durante la ejecución normal y al minimizar la app, pero al forzar el cierre y relanzar la app FirebaseAuth.instance.currentUser aparece como null y el usuario es redirigido al login.

Síntomas observados: al iniciar sesión el usuario opera con normalidad; al minimizar la app la sesión persiste; al matar la app completamente y abrirla de nuevo la app detecta usuario nulo y pide login otra vez. En logs de authStateChanges se ve Connection state active Has data false User NULL.

Causas más probables y aclaraciones técnicas

1) Lectura prematura de currentUser
Firebase en plataformas móviles restaura credenciales de forma nativa pero esa restauración llega de forma asíncrona. Si en la pantalla splash se consulta FirebaseAuth.instance.currentUser inmediatamente, es frecuente obtener null antes de que el backend nativo haya rehidratado el usuario. Usar currentUser como chequeo único en cold start no es fiable.

2) Suscripción incorrecta al stream de estado
El patrón recomendado es suscribirse a authStateChanges o idTokenChanges y esperar al primer evento real del sistema en lugar de depender de una lectura directa y sincrónica.

3) Código que fuerza cierre de sesión
Revisa que no haya llamadas a signOut dispersas en servicios de inicialización, en AppLifecycleManager o en rutinas de limpieza que se ejecuten en cold start. Por ejemplo DeviceSessionService.endSession nunca debe ejecutarse al reinicio automático salvo que el usuario haya cerrado sesión explícitamente.

4) Inicializaciones y orden de arranque
Si alguna inicialización tarda mucho, si se lanzan isolates o si se manipula FirebaseApp secundario, puede haber comportamientos inesperados. Asegura que WidgetsFlutterBinding.ensureInitialized se llama antes de Firebase.initializeApp y evita interferir con la restauración de sesión mientras esperas el authState.

5) Proguard, ofuscación o librerías nativas
En builds release comprueba reglas de Proguard y que no se estan eliminando clases esenciales de Firebase. En algunos casos una configuración agresiva de ofuscación o eliminación de dependencias puede romper la persistencia.

Soluciones prácticas y pasos para resolverlo

A) Suscribirse al stream de estado y esperar la primera emisión
No usar currentUser en cold start. En la pantalla splash o en la inicialización principal suscríbete a authStateChanges y navega cuando el stream emita el estado real del usuario. Ejemplo de lógica simplificada
FirebaseAuth.instance.authStateChanges().listen((user) { if (user != null) { navegar a pantalla principal } else { navegar a login } });

B) Añadir un timeout razonable
Si por cualquier motivo no llega evento en x segundos navega a login y registra la incidencia para diagnóstico, de forma similar a un watchdog. Esto evita que el usuario quede esperando indefinidamente.

C) Evitar lecturas sincrónicas
Eliminar comprobaciones tipo final user = FirebaseAuth.instance.currentUser en el inicio salvo que vayas a comprobarlo tras haberte suscrito al stream o tras una espera corta y controlada.

D) Revisar código que pueda cerrar sesión
Audita DeviceSessionService, AppLifecycleManager y cualquier servicio iniciado en background para asegurar que no llaman a signOut en cold start o en callbacks de error. Añade logs detallados para capturar cualquier llamada a signOut o endSession inesperada.

E) Verificar Proguard y dependencias en release
Revisa configuración de minifyEnabled y reglas de keep para Firebase Auth en build.gradle y documentación oficial de Firebase para Flutter en release builds.

F) Diagnóstico con logs
Usa adb logcat para capturar llamadas de Firebase Auth y puntos donde la app pueda emitir signOut. Registra los eventos de authStateChanges con timestamps para entender el flujo durante cold start.

Recomendación concreta para tu SplashScreen

En lugar de hacer una comprobación sincrónica de currentUser, suscríbete a authStateChanges y espera el primer evento. Mantén un timeout y evita navegar hasta que se emita el primer estado fiable. Si usas un heartbeat o servicios que actualizan sesión periódica, asegúrate de no interferir con la restauración inicial.

Checklist de validaciòn

1) WidgetsFlutterBinding.ensureInitialized antes de Firebase.initializeApp
2) No llamar signOut en inicializaciones automáticas
3) Suscribirse a authStateChanges o idTokenChanges para decidir navegación
4) Probar en modo release y debug y comparar logs
5) Revisar ofuscación y reglas de Proguard

Si tras aplicar lo anterior el problema persiste comprueba también que los certificados SHA en Firebase Console incluyan los fingerprints de debug y release, que Google Play services funciona en el dispositivo y que no hay políticas del sistema que eliminen los datos de la app al matar el proceso.

Acerca de Q2BSTUDIO

En Q2BSTUDIO somos una empresa de desarrollo de software que crea aplicaciones a medida y soluciones escalables para empresas. Nos especializamos en software a medida, aplicaciones a medida, inteligencia artificial y ciberseguridad, con servicios cloud aws y azure y soluciones de inteligencia de negocio como Power BI. Si necesitas apoyo para estabilizar autenticación y flujo de sesión en apps móviles o quieres desarrollar una plataforma robusta con integración de IA para empresas, contamos con experiencia práctica y paquetes de consultoría.

Puedes conocer nuestros servicios de desarrollo y apps a medida en desarrollo de aplicaciones y software a medida y explorar soluciones de IA en servicios de inteligencia artificial para empresas. También ofrecemos servicios de ciberseguridad, pentesting, servicios cloud aws y azure, agentes IA y soluciones de Business Intelligence y Power BI para mejorar la toma de decisiones de tu negocio.

Palabras clave integradas para SEO: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

Si quieres puedo revisar tu implementación concreta y proponerte un patch para la SplashScreen o un ejemplo probado y limpio de gestión de authState que puedas integrar de inmediato. Indica si quieres que prepare ese ejemplo listo para pegar y compilar en tu proyecto.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat