Cara Deploy Next.js 15 ke Cloudflare Workers Pages

8/19/2025 | by Jilly

Mulai geregetan sama “gurita ketergantungan” Vercel di semua project? Kuota Hobby Plan kepentok? Atau sesimpel males mindahin konfigurasi DNS dari Cloudflare ke Vercel? Atau pengen coba sesuatu yang baru?

Semua alasan di atas relate banget buat saya. Setelah baca-baca dokumentasi Cloudflare dan nanya ke beberapa LLM, ini rangkuman langkah yang saya pakai buat deploy Next.js (existing app) ke Cloudflare.

Persiapan

Install Wrangler CLI sebagai devDependency

Wrangler adalah CLI untuk Cloudflare Developer Platform. Dengan ini kamu bisa ngatur Workers langsung dari mesin lokal—tanpa perlu buka dashboard web mereka (yang menurutku UX-nya agak kurang nyaman).

    npm i -D wrangler@latest
Install @opennextjs/cloudflare

OpenNextJS adalah adaptor dari Cloudflare yang bikin aplikasi Next.js-mu bisa jalan mulus di Cloudflare.

    npm i @opennextjs/cloudflare@latest
Tambah file konfigurasi Wrangler wrangler.jsonc

Taruh di root project (sejajar dengan package.json).

{
  "main": ".open-next/worker.js",
  "name": "my-app",
  "compatibility_date": "2025-03-25",
  "compatibility_flags": ["nodejs_compat"],
  "assets": {
    "directory": ".open-next/assets",
    "binding": "ASSETS"
  }
}

Sejak Wrangler v3.91.0, Cloudflare merekomendasikan pakai .jsonc dibanding .toml (source).

Jangan lupa, perbarui compatibility_date ke tanggal hari ini. Dengan set compatibility_date, Cloudflare bisa menentukan kompatibilitas fitur Worker yang pas buat aplikasimu (source).

Tambah file konfigurasi OpenNext open-next.config.ts

Taruh juga di root project (sejajar dengan package.json).

import { defineCloudflareConfig } from "@opennextjs/cloudflare";

export default defineCloudflareConfig();

Konfigurasi ini digunakan buat ngatur caching aplikasi. Butuh setup lebih lanjut? Cek dokumentasinya di sini.

Perbarui package.json

Tambahkan script berikut ke package.json kamu:

{
    ...,
    "scripts": {
        ...,
        "preview": "opennextjs-cloudflare build && opennextjs-cloudflare preview",
        "deploy": "opennextjs-cloudflare build && opennextjs-cloudflare deploy",
        "cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts"
    }
}

Catatan: tambahkan .open-next dan .wrangler ke .gitignore biar folder build & config lokal nggak ikut ke repo.


Preview & Deploy dari Lokal

Develop locally

Sama seperti biasa: jalankan dev server bawaan Next.js,

    npm dev
Preview

Pakai script ini untuk memastikan apakah app web kamu beneran jalan pakai Cloudflare adapter.

    npm run preview
Deploy

Terakhir, tinggal deploy ke Cloudflare.

    npm run deploy