FirexportBlog

Node.js 20 desativado no Cloud Functions for Firebase: passe para o 24 ou o 22

Em 30 de outubro de 2026, o ambiente de execução do Node.js 20 no Cloud Functions foi desativado (decommission). Não é mais possível implantar nem atualizar funções no Node.js 20, então o firebase deploy falha com o erro abaixo. O que precisa mudar é uma linha do functions/package.json. Se você só tem funções de 2ª geração, passe para o Node.js 24; se tem funções de 1ª geração, para o Node.js 22.

Error: Runtime Node.js 20 was decommissioned on 2026-10-30. To deploy you must
first upgrade your runtime version.

Em resumo

  • Não é só a implantação. As funções já implantadas ainda rodam, mas não recebem mais patches de segurança e podem ser desabilitadas sem data definida. Datas e o que significam
  • Mude uma linha e implante de novo. Defina engines.node como "24" ou "22". Se o firebase.json tiver runtime, esse valor tem prioridade. Como fazer
  • 24 para a 2ª geração, 22 para a 1ª geração. O Node.js 22 é o último ambiente de execução das funções de 1ª geração, então elas precisam migrar para a 2ª geração antes do fim do Node.js 22, em 31 de outubro de 2027. Funções de 1ª geração
  • Se for atualizar os SDKs, confira duas coisas. O firebase-functions 7 removeu o functions.config(), e o firebase-admin 14 só funciona no Node.js 22 ou mais recente. Versões dos SDKs

Datas e o que significam

Este é o cronograma de suporte dos ambientes de execução do Google Cloud. Durante a descontinuação (deprecation), ainda é possível implantar; depois da desativação (decommission), não dá mais para criar nem atualizar funções nesse ambiente de execução.

Ambiente de execuçãoFunções que podem usá-loDescontinuaçãoDesativação
Node.js 181ª geração, 2ª geração2025-04-302025-10-30
Node.js 201ª geração, 2ª geração2026-04-302026-10-30
Node.js 221ª geração, 2ª geração2027-04-302027-10-31
Node.js 24Apenas 2ª geração2028-04-302028-10-31

Veja o que muda com a desativação.

Durante a descontinuaçãoDepois da desativação
Implantar ou atualizarSimNão
Funções já implantadasRodamRodam, mas podem ser desabilitadas
Patches de segurança do Node.js e do SOSimNenhum

A política não define uma data para a desabilitação. Mesmo uma função que roda bem hoje não pode ser reimplantada quando você precisar corrigir um bug, e não dá para saber quando ela vai parar. Também não há como contornar: mesmo desligando a verificação de ambiente de execução da CLI, o servidor bloqueia por conta própria (código da CLI).

Passar para o Node.js 24 ou 22

  1. Confira a geração e o ambiente de execução de cada função. Rode firebase functions:list. Na coluna Version, v1 é 1ª geração e v2 é 2ª geração; a coluna Runtime mostra o ambiente de execução atual.
  2. Escolha uma versão. Há um ambiente de execução por base de código (normalmente a pasta functions), não um por função. Se houver ao menos uma função de 1ª geração, escolha 22; se todas forem de 2ª geração, escolha 24. O Node.js 24 pode ser usado até 31 de outubro de 2028, mas não oferece suporte à 1ª geração. A lista de versões da documentação do Firebase ainda não inclui o 24, mas o cronograma do Cloud já o traz para a 2ª geração, e a Firebase CLI oferece suporte a ele desde a versão 14.26.0.
  3. Mude uma linha no package.json. O valor é um único número de versão principal. Com um intervalo como >=22 ou 22.x, a CLI falha com o erro Detected node engine ... which is not a supported version.
    {
      "engines": {
        "node": "24"
      }
    }

    Se o firebase.json tiver runtime, a CLI usa esse valor primeiro. Nesse caso, mude-o lá.

    {
      "functions": {
        "source": "functions",
        "runtime": "nodejs24"
      }
    }
  4. Use a mesma versão do Node.js na máquina local e na CI. O emulador roda as funções no Node.js instalado. Se as versões forem diferentes, ele só mostra o aviso Your requested "node" version "24" doesn't match your global version "20" e as executa no 20 mesmo assim, então seus testes rodam em uma versão diferente da de produção.
  5. Implante. Rode firebase deploy --only functions e confira se a coluna Runtime de firebase functions:list mudou para nodejs24 (ou nodejs22).

Versões dos SDKs

Se for atualizar os SDKs junto com o Node.js, confira o seguinte.

PacoteO que conferir
firebase-tools (CLI)Implanta nodejs22 a partir da 13.11.0 e nodejs24 a partir da 14.26.0.
firebase-functionsAbaixo da 6.2.0, código ESM com await de nível superior quebra no Node.js 22.12 ou mais recente. A 7.0.0 removeu o functions.config(), e chamá-lo gera um erro em tempo de execução.
firebase-adminA 14 só roda no Node.js 22 ou mais recente e precisa ser usada com o firebase-functions 7.3.0 ou mais recente (dependência peer). A 13 roda no Node.js 18 ou mais recente.

Se você ainda usa o functions.config(), mantenha o firebase-functions na 6.x e mude só o Node.js. Implantar com functions.config() também vai falhar depois de março de 2027, então antes disso migre para variáveis de ambiente ou o Secret Manager.

Funções de 1ª geração

O último ambiente de execução que as funções de 1ª geração podem usar é o Node.js 22, que será desativado em 31 de outubro de 2027. Antes disso, elas precisam migrar para a 2ª geração. A Firebase CLI 15.35.0 mostra nos avisos 2028-10-31 como data de desativação do Node.js 22, mas a data que vale é a do cronograma do Google Cloud, 2027-10-31 (código da CLI). Como não é possível trocar uma função diretamente mantendo o mesmo nome, o Firebase recomenda implantar a função de 2ª geração com um nome novo, migrar o tráfego e depois excluir a de 1ª geração (guia de upgrade). Estes são os pontos que podem complicar a migração.

  • Os URLs mudam. Nas funções HTTP, chamáveis e de fila de tarefas, um nome novo é um URL novo. Aponte seus apps e webhooks para o novo URL e depois exclua a função antiga com firebase functions:delete.
  • Os eventos são processados duas vezes. Enquanto as duas funções existirem, gatilhos de eventos como os do Firestore e do Storage executam as duas para o mesmo evento. Faça com que duas execuções deem o mesmo resultado.
  • Algumas coisas não existem. A 2ª geração não tem functions.config() nem gatilhos de eventos do Analytics, e os gatilhos do Authentication para criação e exclusão de usuários (onUserCreated, onUserDeleted) ainda estão em fase de prévia.
  • Os valores padrão são outros. Por padrão, uma instância atende até 80 solicitações ao mesmo tempo, e a conta de serviço padrão passa a ser a conta de serviço padrão do Compute Engine. Se você guarda em variáveis globais valores que mudam a cada solicitação ou concedeu permissões do IAM à conta de serviço padrão do App Engine, precisa corrigir isso.

Extensões

As extensões instaladas também rodam no Cloud Functions, e o ambiente de execução delas é definido pela versão da extensão. O Firebase recomenda atualizar as extensões para a versão mais recente.

firebase ext:update <instance-id>
firebase deploy --only extensions

O serviço Extensões do Firebase será desativado em 31 de março de 2027. As extensões instaladas continuam rodando depois disso, mas os recursos de gerenciamento, como as atualizações, deixam de estar disponíveis. A maioria é feita com funções de 1ª geração, então elas podem parar ou ser desabilitadas quando o ambiente de execução delas for desativado. Se você vai continuar usando o que uma extensão faz, planeje também passar isso para uma função sua.

Fontes

Todos os posts →