Uso de Alarmas en extensiones de Chrome
Jul 21, 2024
Updated: Jun 24, 2026

Uso de Alarmas en extensiones de Chrome

La API chrome.alarms de Chrome nos permite programar la ejecución de código en intervalos específicos. A continuación te explico cómo puedes usar esta API en tus proyectos paso a paso.

Por qué usamos alarmas en Manifest V3

Antes de tocar código, vale la pena entender por qué existe esta API. En Manifest V3 las extensiones ya no tienen una página de fondo persistente, sino un service worker que es efímero: el navegador lo termina cuando no hay nada que hacer y lo reactiva solo cuando ocurre un evento. Eso significa que un setTimeout o un setInterval no sobreviven, porque el service worker puede haberse apagado mucho antes de que el temporizador se dispare.

La API chrome.alarms resuelve justo ese problema: las alarmas las gestiona el propio navegador, así que persisten aunque el service worker se duerma y vuelven a despertarlo cuando llega el momento. Por eso es el mecanismo recomendado para agendar trabajo diferido o periódico en extensiones modernas.

Creación de alarmas

Para crear una alarma usamos el método chrome.alarms.create. Este método acepta parámetros como el nombre de la alarma y el intervalo de tiempo.

Veamos un ejemplo:

chrome.alarms.create('myAlarm', { delayInMinutes: 1, periodInMinutes: 1 });

Aquí delayInMinutes indica cuánto esperar antes de la primera activación, y periodInMinutes con qué frecuencia repetirla después.

Nota sobre el intervalo mínimo: en extensiones publicadas, Chrome impone un intervalo mínimo de aproximadamente 1 minuto. Si configuras valores por debajo de ese límite, se ignoran silenciosamente en producción (solo funcionan al cargar la extensión sin empaquetar, durante el desarrollo). Por eso en el ejemplo usamos valores de 1 minuto: no intentes programar alarmas de pocos segundos esperando que se cumplan en una extensión real.

Configuración de permisos

Asegúrate de agregar el permiso necesario en el archivo manifest.json:

{
    "permissions": ["alarms"]
}

Escucha de alarmas

Para reaccionar a una alarma usamos el evento chrome.alarms.onAlarm.addListener:

chrome.alarms.onAlarm.addListener((alarm) => {
    if (alarm.name === 'myAlarm') {
        console.log('Alarma activada');
    }
});

Como puedes ver, recibimos el objeto alarm y comprobamos su name para saber cuál se disparó. Esto es útil cuando tienes varias alarmas y quieres ejecutar lógica distinta para cada una.

Resumen en 3 puntos

  1. En Manifest V3 el service worker es efímero, así que setTimeout y setInterval no son fiables para trabajo diferido; usamos chrome.alarms, que gestiona el navegador.
  2. Creamos alarmas con chrome.alarms.create y reaccionamos a ellas con chrome.alarms.onAlarm.addListener, comprobando alarm.name cuando tenemos varias.
  3. Recuerda declarar el permiso alarms en manifest.json y respetar el intervalo mínimo de aproximadamente 1 minuto en extensiones publicadas.

Ejercicios propuestos

  1. Crea una extensión mínima que registre una alarma cada minuto y escriba un mensaje en la consola del service worker cada vez que se dispare.
  2. Añade una segunda alarma con un nombre distinto y usa alarm.name dentro del listener para ejecutar una acción diferente según cuál se active.
  3. Investiga chrome.alarms.getAll y chrome.alarms.clear, e implementa un botón que liste las alarmas activas y permita cancelarlas.

Espero que este post te haya dado una visión general de cómo puedes usar la API chrome.alarms para desarrollar extensiones útiles y creativas. Si tienes ideas o proyectos en mente, no dudes en compartirlos. Déjame un comentario si te sirvió, y recuerda que si te gustó también puedes compartirlo usando los links a las redes sociales aquí abajo. Eso es todo, espero que este post te sea de utilidad y lo puedas aplicar a algún proyecto que tengas en mente. Buena suerte.

Sebastian Gomez

Sebastian Gomez

Creador de contenido principalmente acerca de tecnología.

Leave a Reply

0 Comments

Advertisements

Related Posts

Categorias