You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -6,128 +6,151 @@ description: Create an Next.js application and deploy it to Cloudflare Workers w
6
6
---
7
7
8
8
import {
9
-
Badge,
10
9
Description,
11
-
InlineBadge,
10
+
Details,
12
11
Render,
13
12
PackageManagers,
14
-
Stream,
15
-
WranglerConfig,
13
+
Steps,
14
+
WranglerConfig
16
15
} from"~/components";
17
16
18
-
In this guide, you will create a new [Next.js](https://nextjs.org/) application and deploy to Cloudflare Workers (with the new [<InlineBadgepreset="beta" /> Workers Assets](/workers/static-assets/)) using the [`@opennextjs/cloudflare`](https://opennext.js.org/cloudflare) package.
19
-
20
-
:::note
21
-
If your Next.js app currently runs on Vercel, you can easily migrate your Next.js app to Cloudflare by using [Diverce](https://github.com/ygwyg/diverce), which will automatically add OpenNext to your project and create a pull request that makes it deployable to Cloudflare.
22
-
:::
23
-
24
-
## New apps
25
-
26
-
To create a new Next.js app, pre-configured to run on Cloudflare using [`@opennextjs/cloudflare`](https://opennext.js.org/cloudflare), run:
17
+
**Start from CLI** - scaffold a Next.js project on Workers.
27
18
28
19
<PackageManagers
29
20
type="create"
30
21
pkg="cloudflare@latest my-next-app"
31
22
args={"--framework=next --platform=workers"}
32
23
/>
33
24
34
-
<Render
35
-
file="c3-post-run-steps"
36
-
product="workers"
37
-
params={{
38
-
category: "web-framework",
39
-
framework: "Next.js",
40
-
}}
41
-
/>
25
+
:::note
26
+
This is a simple getting started guide. For detailed documentation on how the to use the Cloudflare OpenNext adapter, visit the [OpenNext website](https://opennext.js.org/cloudflare).
[Next.js](https://nextjs.org/) is a [React](https://react.dev/) framework for building full stack applications.
46
32
47
-
Check your version by running `wrangler --version`. To update Wrangler, refer to [Install/Update Wrangler](/workers/wrangler/install-and-update/).
33
+
Next.js supports Server-side and Client-side rendering, as well as Partial Prerendering which lets you combine static and dynamic components in the same route.
48
34
49
-
:::
35
+
You can deploy your Next.js app to Cloudflare Workers using the OpenNext adaptor.
1.**Create a new project with the create-cloudflare CLI (C3).**
58
42
59
-
### 2. Add a Wrangler configuration file
43
+
<PackageManagers
44
+
type="create"
45
+
pkg="cloudflare@latest my-next-app"
46
+
args={"--framework=next --platform=workers"}
47
+
/>
60
48
61
-
Then, add a [Wrangler configuration file](/workers/wrangler/configuration/) to the root directory of your Next.js app:
49
+
<Detailsheader="What's happening behind the scenes?">
50
+
When you run this command, C3 creates a new project directory, initiates [Next.js's official setup tool](https://nextjs.org/docs/app/api-reference/cli/create-next-app), and configures the project for Cloudflare. It then offers the option to instantly deploy your application to Cloudflare.
After creating your project, run the following command in your project directory to start a local development server.
56
+
The command uses the Next.js development server. It offers the best developer experience by quickly reloading your app every time the source code is updated.
72
57
73
-
</WranglerConfig>
58
+
<PackageManagerstype="run"args="dev" />
74
59
75
-
:::note
76
-
As shown above, you must enable the [`nodejs_compat` compatibility flag](/workers/runtime-apis/nodejs/)_and_ set your [compatibility date](/workers/configuration/compatibility-dates/) to `2024-09-23` or later for your Next.js app to work with @opennextjs/cloudflare.
77
-
:::
60
+
3.**Test and preview your site with the Cloudflare adapter.**
78
61
79
-
You configure your Worker and define what resources it can access via [bindings](/workers/runtime-apis/bindings/) in the [Wrangler configuration file](/workers/wrangler/configuration/).
62
+
<PackageManagerstype="run"args="preview" />
80
63
81
-
### 3. Update `package.json`
64
+
<Detailsheader="What's the difference between dev and preview?">
65
+
The command used in the previous step uses the Next.js development server, which runs in Node.js.
66
+
However, your deployed application will run on Cloudflare Workers, which uses the `workerd` runtime. Therefore when running integration tests and previewing your application, you should use the preview command, which is more accurate to production, as it executes your application in the `workerd` runtime using `wrangler dev`.
67
+
</Details>
82
68
83
-
Add the following to the scripts field of your `package.json` file:
-`preview`: Builds your app and serves it locally, allowing you to quickly preview your app running locally in the Workers runtime, via a single command.
92
-
-`deploy`: Builds your app, and then deploys it to Cloudflare
93
-
-`cf-typegen`: Generates a `cloudflare-env.d.ts` file at the root of your project containing the types for the env.
72
+
You can deploy your project to a [`*.workers.dev` subdomain](/workers/configuration/routing/workers-dev/) or a [custom domain](/workers/configuration/routing/custom-domains/) from your local machine or any CI/CD system (including [Workers Builds](/workers/ci-cd/#workers-builds)). Use the following command to build and deploy. If you're using a CI service, be sure to update your "deploy command" accordingly.
94
73
95
-
### 4. Optionally add caching
74
+
<PackageManagerstype="run"args="deploy" />
96
75
97
-
Caching is actively being worked on. It is fully functional for development and we are working on an optimized implementation suitable for production.
76
+
</Steps>
98
77
99
-
For more details check the relevant [official Open Next documentation](https://opennext.js.org/cloudflare/caching).
78
+
## Deploy an existing Next.js project on Workers
100
79
101
-
### 5. Develop locally
80
+
You can convert an existing Next.js application to run on Cloudflare
102
81
103
-
You can continue to run `next dev` when developing locally.
82
+
<Steps>
104
83
105
-
### 6. Preview locally your application and create an OpenNext config file
In step 3, we also added the `npm run preview` script, which allows you to quickly preview your app running locally in the Workers runtime, rather than in Node.js.
108
-
This allows you to test changes in the same runtime that your app runs in, when deployed to Cloudflare:
As shown above, you must enable the [`nodejs_compat` compatibility flag](/workers/runtime-apis/nodejs/)_and_ set your [compatibility date](/workers/configuration/compatibility-dates/) to `2024-09-23` or later for your Next.js app to work with @opennextjs/cloudflare.
104
+
:::
120
105
121
-
```sh
122
-
npm run deploy
123
-
```
106
+
3.**Add a configuration file for OpenNext**
124
107
125
-
Or [connect a GitHub or GitLab repository](/workers/ci-cd/), and Cloudflare will automatically build and deploy each pull request you merge to your production branch.
108
+
In your project root, create an OpenNext configuration file named `open-next.config.ts` with the following content:
`open-next.config.ts` is where you can configure the caching, see the [adapter documentation](https://opennext.js.org/cloudflare/caching) for more information
118
+
:::
119
+
120
+
4.**Update `package.json`**
121
+
122
+
You can add the following scripts to your `package.json`:
-`preview`: Builds your app and serves it locally, allowing you to quickly preview your app running locally in the Workers runtime, via a single command.
132
+
-`deploy`: Builds your app, and then deploys it to Cloudflare
133
+
-`cf-typegen`: Generates a `cloudflare-env.d.ts` file at the root of your project containing the types for the env.
134
+
</Details>
135
+
136
+
5.**Develop locally.**
137
+
138
+
After creating your project, run the following command in your project directory to start a local development server.
139
+
The command uses the Next.js development server. It offers the best developer experience by quickly reloading your app after your source code is updated.
140
+
141
+
<PackageManagerstype="run"args="dev" />
142
+
143
+
6.**Test your site with the Cloudflare adapter.**
144
+
145
+
The command used in the previous step uses the Next.js development server to offer a great developer experience.
146
+
However your application will run on Cloudflare Workers so you want to run your integration tests and verify that your application workers correctly in this environment.
147
+
148
+
<PackageManagerstype="run"args="preview" />
149
+
150
+
7.**Deploy your project.**
128
151
129
-
## Static assets
152
+
You can deploy your project to a [`*.workers.dev` subdomain](/workers/configuration/routing/workers-dev/) or a [custom domain](/workers/configuration/routing/custom-domains/) from your local machine or any CI/CD system (including [Workers Builds](/workers/ci-cd/#workers-builds)). Use the following command to build and deploy. If you're using a CI service, be sure to update your "deploy command" accordingly.
130
153
131
-
You can serve static assets your Next.js application by placing them in the `./public/` directory. This can be useful for resource files such as images, stylesheets, fonts, and manifests.
0 commit comments