Node.js 20 retirado en Cloud Functions for Firebase: pasa a Node.js 24 o 22
El 30 de octubre de 2026 se retiró (decommission) Node.js 20 como entorno de ejecución de Cloud Functions. Ya no puedes desplegar ni actualizar funciones en Node.js 20, así que firebase deploy se detiene con el error de abajo. Lo que hay que cambiar es una línea de functions/package.json. Si solo tienes funciones de 2.ª gen., pasa a Node.js 24; si tienes funciones de 1.ª gen., a Node.js 22.
Error: Runtime Node.js 20 was decommissioned on 2026-10-30. To deploy you must
first upgrade your runtime version.En resumen
- No solo se bloquean los despliegues. Las funciones ya desplegadas todavía se ejecutan, pero dejaron de recibir parches de seguridad y pueden inhabilitarse sin una fecha fijada. Fechas y qué significan
- Cambia una línea y vuelve a desplegar. Configura
engines.nodecomo"24"o"22". Sifirebase.jsontieneruntime, ese valor tiene prioridad. Cómo hacerlo - 24 para la 2.ª gen. y 22 para la 1.ª gen. Node.js 22 es el último entorno de ejecución de las funciones de 1.ª gen., así que tienen que pasar a la 2.ª gen. antes de que Node.js 22 termine, el 31 de octubre de 2027. Funciones de 1.ª gen.
- Si actualizas los SDK, revisa dos cosas.
firebase-functions7 eliminófunctions.config(), yfirebase-admin14 solo funciona en Node.js 22 o posterior. Versiones de los SDK
Fechas y qué significan
Este es el calendario de compatibilidad de entornos de ejecución de Google Cloud. En la fase de obsolescencia (deprecation) todavía puedes desplegar; tras la retirada (decommission), ya no puedes crear funciones nuevas ni actualizar las existentes con ese entorno de ejecución.
| Entorno de ejecución | Funciones que pueden usarlo | Obsolescencia | Retirada |
|---|---|---|---|
| Node.js 18 | 1.ª gen., 2.ª gen. | 2025-04-30 | 2025-10-30 |
| Node.js 20 | 1.ª gen., 2.ª gen. | 2026-04-30 | 2026-10-30 |
| Node.js 22 | 1.ª gen., 2.ª gen. | 2027-04-30 | 2027-10-31 |
| Node.js 24 | Solo 2.ª gen. | 2028-04-30 | 2028-10-31 |
Esto es lo que cambia con la retirada.
| En la fase de obsolescencia | Tras la retirada | |
|---|---|---|
| Desplegar o actualizar | Sí | No |
| Funciones ya desplegadas | Se ejecutan | Se ejecutan, pero pueden inhabilitarse |
| Parches de seguridad de Node.js y del SO | Sí | Ninguno |
La política no fija ninguna fecha de inhabilitación. Incluso una función que hoy va bien no se puede volver a desplegar en cuanto necesites corregir un error, y no sabes cuándo se detendrá. Tampoco hay forma de esquivarlo: aunque desactives la comprobación del entorno de ejecución en la CLI, el servidor lo bloquea por su cuenta (código de la CLI).
Pasar a Node.js 24 o 22
- Comprueba la generación y el entorno de ejecución de cada función. Ejecuta
firebase functions:list. En la columna Version,v1es 1.ª gen. yv2es 2.ª gen.; la columna Runtime muestra el entorno de ejecución actual. - Elige una versión. Hay un entorno de ejecución por base de código (normalmente la carpeta
functions), no uno por función. Si hay al menos una función de 1.ª gen., elige 22; si todas son de 2.ª gen., elige 24. Node.js 24 se puede usar hasta el 31 de octubre de 2028, pero no admite la 1.ª gen. La lista de versiones de la documentación de Firebase todavía no incluye 24, pero el calendario de Cloud lo recoge para la 2.ª gen. y Firebase CLI lo admite desde la versión 14.26.0. - Cambia una línea de
package.json. El valor es un único número de versión principal. Con un rango como>=22o22.x, la CLI falla con el errorDetected node engine ... which is not a supported version.{ "engines": { "node": "24" } }Si
firebase.jsontieneruntime, la CLI usa primero ese valor. En ese caso, cámbialo ahí.{ "functions": { "source": "functions", "runtime": "nodejs24" } } - Usa la misma versión de Node.js en local y en CI. El emulador ejecuta tus funciones con el Node.js que tengas instalado. Si las versiones no coinciden, solo muestra la advertencia
Your requested "node" version "24" doesn't match your global version "20"y las sigue ejecutando en 20, así que tus pruebas corren en una versión distinta de la de producción. - Despliega. Ejecuta
firebase deploy --only functionsy comprueba que la columna Runtime defirebase functions:listhaya cambiado anodejs24(onodejs22).
Versiones de los SDK
Si actualizas los SDK a la vez que Node.js, revisa lo siguiente.
| Paquete | Qué revisar |
|---|---|
firebase-tools (CLI) | Puede desplegar nodejs22 desde la 13.11.0 y nodejs24 desde la 14.26.0. |
firebase-functions | Por debajo de la 6.2.0, el código ESM con un await de nivel superior falla en Node.js 22.12 y posteriores. La 7.0.0 eliminó functions.config(), y cada llamada da un error en tiempo de ejecución. |
firebase-admin | La 14 solo funciona en Node.js 22 o posterior y hay que usarla con firebase-functions 7.3.0 o posterior (dependencia peer). La 13 funciona en Node.js 18 o posterior. |
Si todavía usas functions.config(), deja firebase-functions en 6.x y cambia solo Node.js. Desplegar con functions.config() también fallará después de marzo de 2027, así que antes tienes que pasar a variables de entorno o Secret Manager.
Funciones de 1.ª gen.
El último entorno de ejecución que pueden usar las funciones de 1.ª gen. es Node.js 22, que se retira el 31 de octubre de 2027. Antes de esa fecha tienen que pasar a la 2.ª gen. Firebase CLI 15.35.0 muestra en sus advertencias 2028-10-31 como fecha de retirada de Node.js 22, pero la que cuenta es la del calendario de Google Cloud, 2027-10-31 (código de la CLI). Como no se puede cambiar una función directamente con el mismo nombre, Firebase recomienda desplegar la función de 2.ª gen. con un nombre nuevo, migrar el tráfico y luego borrar la de 1.ª gen. (guía de actualización). Estos son los puntos que pueden complicar el cambio.
- Las URL cambian. En las funciones de HTTP, las que admiten llamadas y las de listas de tareas en cola, un nombre nuevo es una URL nueva. Pasa tus apps y webhooks a la URL nueva y luego borra la función antigua con
firebase functions:delete. - Los eventos se procesan dos veces. Mientras existan las dos funciones, los activadores de eventos, como los de Firestore o Storage, ejecutan las dos con el mismo evento. Haz que el resultado sea el mismo aunque se ejecuten dos veces.
- Faltan cosas. La 2.ª gen. no tiene
functions.config()ni activadores de eventos de Analytics, y los activadores de Authentication de creación y eliminación de usuarios (onUserCreated,onUserDeleted) todavía están en versión preliminar. - Los valores predeterminados son otros. Una instancia atiende de forma predeterminada hasta 80 solicitudes a la vez, y la cuenta de servicio predeterminada pasa a ser la cuenta de servicio predeterminada de Compute Engine. Si guardas en variables globales valores distintos en cada solicitud o diste permisos de IAM a la cuenta de servicio predeterminada de App Engine, tienes que corregirlo.
Extensiones
Las extensiones instaladas también se ejecutan en Cloud Functions, y su entorno de ejecución lo determina la versión de la extensión. Firebase recomienda actualizar las extensiones a su versión más reciente.
firebase ext:update <instance-id>
firebase deploy --only extensionsEl servicio de Extensiones de Firebase se cerrará el 31 de marzo de 2027. Las extensiones instaladas seguirán ejecutándose después, pero las tareas de administración, como actualizarlas, ya no estarán disponibles. La mayoría están hechas con funciones de 1.ª gen., así que pueden detenerse o inhabilitarse cuando se retire su entorno de ejecución. Si vas a seguir usando lo que hace una extensión, planea también pasarlo a una función propia.
Fuentes
- Calendario de compatibilidad de entornos de ejecución, notas de la versión de Cloud Functions: fechas, qué significan la obsolescencia y la retirada, compatibilidad de Node.js 22 con la 1.ª gen. y de Node.js 24 con la 2.ª gen.
- Administrar funciones (configurar la versión de Node.js), preguntas frecuentes de Cloud Functions:
enginesyruntime, entorno de ejecución de las extensiones - Código de Firebase CLI 15.35.0: comprobación del entorno de ejecución y mensaje de error, fechas de los entornos de ejecución, lectura de
engines, cómo elige Node.js el emulador, comprobaciones del lado del servidor - Notas de la versión de firebase-tools, firebase-functions y firebase-admin 14.0.0, configuración del entorno
- Actualizar de 1.ª gen. a 2.ª gen., comparación de generaciones, activadores de Authentication, preguntas frecuentes sobre las extensiones, referencia de extension.yaml
