Categorias do Site

Desploye Next.js sem custos altos do Vercel

Aprenda a implantar um app Next.js no Cloudflare Workers, economizando em comparação ao Vercel.

Ícone redondo preto com a letra 'N' branca em um fundo colorido gradiente que varia do azul, rosa a amarelo.

Sem dúvida, o Vercel é a plataforma ideal para implantar um app Next.js, já que foi quem criou o framework. No entanto, apesar de oferecer um plano gratuito generoso, os custos podem aumentar rapidamente conforme o app cresce. Dependendo do caso, o Vercel pode se tornar menos econômico comparado a outras opções.

Implantação em nível Vercel sem os preços do Vercel

Este tutorial irá explorar como construir e implantar um app Next.js no Cloudflare Workers. Também cobriremos como configurar a integração com o GitHub para CI/CD e otimizar imagens usando o Cloudflare Images. Com a configuração final, você pode desfrutar de um desempenho semelhante ao do Vercel, com mais flexibilidade e custos mais baixos, especialmente em escala.

Para acompanhar o tutorial, você precisará de uma conta no Cloudflare. Inscreva-se aqui se ainda não tiver uma.

Como implantar um app Next.js no Cloudflare

Neste tutorial, criaremos um aplicativo simples de exibição de produtos que usa uma rota de API do Next.js para buscar produtos da Fake Store API. Em seguida, na página inicial, faremos uma solicitação a essa rota de API e exibiremos os produtos em uma lista.

Crie um app Next.js com OpenNext

Para começar, execute o comando abaixo para criar um novo app usando o adaptador OpenNext:

npm create cloudflare@latest -- my-next-app --framework=next --platform=workers

Este comando configura um projeto Next.js para ser executado no Cloudflare Workers. Durante a configuração, você será solicitado a personalizar o projeto, como em um fluxo típico do create-next-app. No entanto, uma vez criado o projeto, os seguintes novos arquivos serão adicionados pelo OpenNext:

  • Wrangler.json – Inclui configurações de como o Cloudflare Workers deve implantar seu app, como nome da implantação, variáveis de ambiente, configurações de build e local de saída do build
  • Opennext.config.mjs – Gerencia como o OpenNext constrói e serve seu app

Para prosseguir, navegue até o diretório pages/api/, crie um novo arquivo chamado store.js e cole o seguinte código nele:

export default async function handler(req, res) {
  try {
    const response = await fetch("https://fakestoreapi.com/products/");
    const products = await response.json();
    res.status(200).json(products);
  } catch (error) {
    res.status(500).json({ error: "Failed to fetch products" });
  }
}

O código acima simplesmente cria uma rota de API que retorna dados de produtos da fakestoreapi.com.

Em seguida, abra o arquivo padrão pages/index.js e substitua seu conteúdo pelo seguinte código:

import { useState, useEffect } from "react";
import { Geist } from "next/font/google";
import Image from "next/image";

const geist = Geist({
  subsets: ["latin"],
  variable: "--font-geist",
});

export default function Home() {
  const [products, setProducts] = useState([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch("/api/store")
      .then((res) => res.json())
      .then((data) => {
        setProducts(data);
        setLoading(false);
      });
  }, []);

  if (loading) {
    return (
      
Loading...
); } return (

Fake Store

{products.map((product) => (
${product.price}
{product.rating.rate} ({product.rating.count})

{product.title}

{product.category}
))}
); }

Este código atualiza a página inicial para buscar e exibir uma lista de produtos usando a API que acabamos de criar. Além disso, como estamos carregando imagens da Fake Store API, precisamos permitir esse domínio externo na configuração de imagens do Next.js. Para fazer isso, atualize seu arquivo next.config.mjs para corresponder ao abaixo:

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
  images: {
    domains: ["fakestoreapi.com"],
  },
};

export default nextConfig;

// added by create cloudflare to enable calling `getCloudflareContext()` in `next dev`
import { initOpenNextCloudflareForDev } from "@opennextjs/cloudflare";
initOpenNextCloudflareForDev();

Agora, execute o app localmente:

npm run dev

Você deve ver uma lista de produtos fictícios na sua página inicial, como mostrado na imagem abaixo:

app nextjs store falso criado com opennext

Implantar no Cloudflare

Como mencionado anteriormente, o arquivo wrangler.json permite personalizar as configurações de implantação do seu app. Você pode facilmente alterar o nome do app antes da implantação atualizando o campo de nome. No meu caso, estou mudando o nome para storeapp, conforme mostrado abaixo:

{
  "$schema": "node_modules/wrangler/config-schema.json",
  "name": "storeapp", // Atualize para o nome do seu projeto
  "main": ".open-next/worker.js",
  . . .
}

Em seguida, implante seu app executando:

npm run deploy

Se você estiver executando o comando pela primeira vez, o Cloudflare solicitará que você se autentique. Uma vez feito isso, ele irá construir e implantar o app na sua conta do Cloudflare Workers.

Em alguns casos, você pode encontrar um erro de build do TypeScript. Você pode corrigir isso instalando o TypeScript e as definições de tipo necessárias:

npm install --save-dev typescript @types/react @types/node

Depois disso, tente executar o comando de implantação novamente, e deve funcionar sem problemas.

Configurar integração com GitHub

O Cloudflare permite configurar a integração com o GitHub para construir e implantar automaticamente seu app sempre que você enviar alterações para seu repositório Git.

Para começar, crie um novo repo para seu projeto. Uma vez criado o repo, copie a URL remota, então abra sua pasta de projeto localmente e execute os seguintes comandos para inicializar o Git e enviar seu código:

git init
git remote add origin 
git add .
git commit -m "Commit inicial"
git push -u origin main

Certifique-se de substituir pela URL real do seu repositório GitHub. Uma vez que o projeto seja enviado ao GitHub, volte ao app que você criou anteriormente no painel do Cloudflare e navegue até a seção de configurações. Aqui, em Build & Deploy, você verá uma opção para conectar um provedor Git:

configurando integração github com cloudflare workers

Selecione a opção GitHub e autorize sua conta do GitHub. Uma vez que a autorização seja bem-sucedida, escolha o repo que você acabou de enviar. Agora, toda vez que você enviar para este repo, o Cloudflare construirá e implantará automaticamente seu app.

Otimização de imagens

O Next.js possui um que otimiza automaticamente as imagens para carregamentos de página mais rápidos. Você também pode passar um carregador personalizado para este componente, por exemplo, para gerar URLs assinadas, servir imagens de um CDN personalizado ou integrar com serviços como o Cloudflare Images.

Para usar um carregador personalizado com o Cloudflare Images, crie um novo arquivo chamado imageLoader.ts na raiz do seu projeto (mesmo nível que o package.json) e adicione o seguinte código:

import type { ImageLoaderProps } from "next/image";

const normalizeSrc = (src: string) => {
  return src.startsWith("/") ? src.slice(1) : src;
};

export default function cloudflareLoader({
  src,
  width,
  quality,
}: ImageLoaderProps) {
  if (process.env.NODE_ENV === "development") {
    return src;
  }
  const params = [`width=${width}`];
  if (quality) {
    params.push(`quality=${quality}`);
  }
  const paramsString = params.join(",");
  return `/cdn-cgi/image/${paramsString}/${normalizeSrc(src)}`;
}

Agora, atualize seu next.config.mjs para registrar o carregador personalizado:

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
  images: {
    domains: ["fakestoreapi.com"],
    loader: "custom",
    loaderFile: "./imageLoader.ts",
  },
};

export default nextConfig;

// added by create cloudflare to enable calling `getCloudflareContext()` in `next dev`
import { initOpenNextCloudflareForDev } from "@opennextjs/cloudflare";
initOpenNextCloudflareForDev();

Com esta atualização, o Next.js usará seu carregador personalizado para todas as imagens, permitindo que você sirva imagens otimizadas diretamente do CDN do Cloudflare, o que melhora os tempos de carregamento e reduz os custos de largura de banda.

Comparando Cloudflare e Vercel

Além dos preços, o Cloudflare pode ser uma alternativa melhor ao Vercel em outros cenários. Por exemplo, a rede edge do Cloudflare e o desempenho em escala podem ser mais robustos do que o que o Vercel oferece, especialmente para audiências globais ou apps que dependem muito da lógica no servidor na edge.

A tabela abaixo também fornece uma visão geral para ajudar a decidir qual plataforma pode se adequar melhor às suas necessidades:

RecursoVercelCloudflare (Workers + OpenNext)
Experiência do DesenvolvedorExcelente com zero-config para Next.jsBoa. Requer mais configuração, mas está melhorando
DesempenhoÓtimo, com funções edge embutidasTopo, com edge global por padrão
PreçosPode ficar caro rapidamente (especialmente para planos Pro/Equipe ou alto tráfego)Mais barato em escala, generoso plano gratuito, pague conforme o uso
Otimização de ImagensIncorporado comRequer configuração manual (ex. Cloudflare Images + carregador personalizado)
PersonalizaçãoLimitada e principalmente dentro do ecossistema VercelAlta com controle total sobre roteamento, cache, lógica edge
Use CaseMelhor para projetos rápidos Next.js com configuração mínimaÓtimo para apps avançados/pesados em edge e eficiência de custos

Conclusão

Neste artigo, exploramos como construir e implantar um aplicativo Next.js no Cloudflare Workers usando o adaptador OpenNext. Passamos pela configuração do projeto, criação de uma rota de API simples, habilitamos a otimização de imagens com o Cloudflare Images e configuramos o GitHub para implantações automáticas. Você também pode encontrar o código completo usado neste tutorial no GitHub, e pré-visualizar o app final implantado no Cloudflare aqui.

Você deve mudar do Vercel para o Cloudflare? Se o Vercel está funcionando bem e você valoriza a facilidade de uso, pode definitivamente continuar com ele. No entanto, se você está enfrentando problemas de custo ou precisa de mais controle e desempenho em nível de edge, o Cloudflare é definitivamente uma opção a considerar.

  • Impacto da IA no Design e Interfaces

    Descubra como a IA transforma o design diário e as interfaces, sem substituir a habilidade humana.

    Descubra como a IA transforma o design diário e as interfaces, sem substituir a habilidade humana.

    Ler notícia completa
    Imagem abstrata com pinceladas grandes e diagonais em tons de laranja sobre um fundo suave azul claro. Contém texto sobre a influência da IA em fluxos de trabalho de design.
  • Crise de Atenção: Liderando em um Mundo Acelerado

    Descubra como a crise de atenção afeta equipes e estratégias para melhorar a produtividade e respeito no ambiente de trabalho.

    Descubra como a crise de atenção afeta equipes e estratégias para melhorar a produtividade e respeito no ambiente de trabalho.

    Ler notícia completa
    Ícone de megafone rosa e azul sobre fundo desfocado que transita de claro a escuro da esquerda para a direita.
  • Melhores Modelos de Logos para Gamers em 2025

    Explore mais de 40 modelos de logos para gamers e equipes de eSports, perfeitos para destacar sua marca no universo dos jogos.

    Explore mais de 40 modelos de logos para gamers e equipes de eSports, perfeitos para destacar sua marca no universo dos jogos.

    Ler notícia completa
    Logotipo da
  • Microfalhas no UX: O perigo invisível nos sites

    Vamos direto ao ponto: seu site não está quebrado, ele apenas parece quebrado. Não há erros 500, o checkout funciona, os botões clicam—mas de alguma forma, usá-lo é como morrer por mil cortes de papel. Você sabe do que estou falando. A leve lentidão. O atraso estranho ao clicar em um botão. O menu suspenso […]

    Entenda como microfalhas estão destruindo a experiência do usuário em seu site e afugentando visitantes.

    Ler notícia completa
    Laptop prateado com a tela fragmentando-se em pedaços de vidro, sugerindo um efeito tridimensional de quebra.
  • Tendências na Pesquisa de Ferramentas de Design 2025

    Antes da IA, a indústria do design havia estagnado. Sistemas de design se tornaram comuns, e o Figma dominou o mercado de ferramentas de design. Agora, a IA surge como um novo e esperado disruptor. Este artigo analisa os resultados da pesquisa de ferramentas de design de 2025. Descubra as ferramentas mais populares, a adoção […]

    Descubra as tendências e surpresas da pesquisa de ferramentas de design de 2025, incluindo a adoção de IA e o domínio do Figma.

    Ler notícia completa
    Ilustração simplificada de uma página web com iconografia rosa e roxa representando elementos como URL, imagem, código e texto em um fundo texturizado.
  • Workshop de IA em UX: Alcançando Mais com Menos

    Vamos ser honestos: UX não está ficando mais fácil Se você trabalha com UX, provavelmente está sentindo a pressão. Orçamentos apertados e expectativas crescentes são desafios constantes. Além disso, a IA está mudando tudo em nosso trabalho, às vezes para melhor, às vezes de forma preocupante. Tenho passado o último ano envolvido em projetos de […]

    Descubra como a IA pode otimizar o UX, reduzindo tarefas e aumentando a eficiência em um workshop prático e relevante.

    Ler notícia completa
    Homem com fones e laptop e robô rosa grande ao fundo em ambiente com névoa. Ambos concentram-se intensamente em suas tarefas.
  • Como Criar Produtos de IA Eficazes para Usuários e Empresas

    A tecnologia revolucionou o mundo, desde o telefone de Bell em 1876 até o iPhone da Apple em 2007. Com a IA entrando no mainstream, empresas correm para adotá-la em seus produtos e ferramentas internas, impulsionando eficiência e produtividade. Ignorar essa tendência pode significar ficar para trás. Para designers, essa onda de adoção de IA […]

    Aprenda a projetar produtos de IA que equilibram usabilidade e governança, atendendo usuários e stakeholders empresariais.

    Ler notícia completa
    Ilustração de perfil de cabeça humana com metade mostrando cérebro humano e a outra metade com estrutura em malha conectada por pontos, em fundo degradê azul e verde.
  • Como o viés da IA mantêm o poder e prejudica a compreensão

    Introdução As salvaguardas da IA foram introduzidas sob o pretexto de segurança e neutralidade. No entanto, na prática, criam uma inversão dos padrões éticos de comunicação: negam validação a quem não tem reconhecimento institucional, enquanto elogiam sem crítica aqueles que já o possuem. Isso não é alinhamento, mas um reflexo do poder algorítmico. O artigo […]

    Análise crítica sobre como as salvaguardas da IA reforçam hierarquias e distorcem a percepção dos usuários.

    Ler notícia completa
    Imagem abstrata de blocos sobrepostos em tons de preto, cinza e coral, com texto sobre IA na parte inferior.
  • Next.js 15.4: Novidades e Expectativas

    Next.js 15.4 chegou, marcando um marco importante para o framework e seu crescente ecossistema. Esta versão é particularmente significativa para desenvolvedores que acompanham de perto a evolução do Turbopack. O Turbopack, anteriormente considerado não pronto para produção, agora passa em todos os 8.302 testes de integração para builds de produção. Isso marca um avanço significativo, […]

    Descubra as novidades do Next.js 15.4, incluindo melhorias no Turbopack e o que esperar para o futuro do framework.

    Ler notícia completa
    Texto alternativo: Logotipo preto com a letra