La notificación que se rindió al cabo de un minuto

Fuentes: The notification that gave up after a minute

PopsicleBoat acaba de incorporar notificaciones push del navegador: la promesa es sencilla, saber cuándo alguien te responde sin compartir tu correo. El servidor firma un mensaje, lo entrega al servicio de push, este lo retiene hasta que el navegador despierta un service worker y el sistema operativo muestra el aviso. Cuatro relevos encadenados que, si se cae uno, producen el mismo síntoma: silencio total y ningún registro de error.

El desarrollador relata cómo, tras recibir un 201 Created impecable, los avisos no aparecían. La causa fue doble. Primero, el permiso de notificación del sitio había vuelto a "default" tras una limpieza de datos del navegador, mientras la suscripción seguía viva en la base de datos; en ese estado, new Notification() no falla, simplemente no hace nada. Segundo, la biblioteca que utiliza fija por defecto un TTL de sesenta segundos, de modo que si el navegador estaba cerrado más de un minuto, el mensaje expiraba antes de ser entregado.

La solución pasa por reasignar el permiso como permanente y ampliar el TTL a 86.400 segundos, una jornada completa, suficiente para que un aviso de respuesta siga siendo relevante; pasado ese plazo, corresponde al buzón interno asumir la notificación.

El artículo extrae dos lecciones. En sistemas por capas donde cada nivel responde "OK", el fallo se esconde en los huecos entre capas: un permiso revocado, un mensaje expirado. Depurar exige recorrer el relevo y preguntar a cada tramo qué entrega al siguiente, no solo si tuvo éxito. Además, los valores por defecto son decisiones de terceros sobre tu producto: un modelo de permisos conservador o un TTL de sesenta segundos son opciones defendibles que pueden sabotear la experiencia prometida. Los banners ya llegan, incluso a la mañana siguiente.