Edge Developer Platform
  • Pages
    • Product Introduction
    • Quick Start
      • Importing a Git Repository
      • Starting From a Template
      • Direct Upload
    • Framework Guide
      • Frontends
      • Backends
      • Full-stack
        • Next.js
    • Project Guide
      • Project Management
      • edgeone.json
      • Configuring Cache
      • Error Codes
    • Build Guide
    • Deployment Guide
      • Overview
      • Create Deploys
      • Manage Deploys
      • Deploy Button
      • Use Github Actions
      • Using CNB Plugin
      • Using IDE Plug-In
      • Using CodeBuddy IDE
    • Domain Management
      • Overview
      • Custom Domain
      • Configuring an HTTPS Certificate
      • How to Configure a DNS CNAME Record
    • Pages Functions
      • Overview
      • Edge Functions
      • Node Functions
    • Log Analysis
    • KV Storage
    • Edge AI
    • API Token
    • EdgeOne CLI
    • Pages MCP
    • Integration Guide
      • AI
        • Dialogue Large Models Integration
        • Large Models for Images Integration
      • Database
        • Supabase Integration
        • Pages KV Integration
      • Ecommerce
        • Shopify Integration
        • WooCommerce Integration
      • Payment
        • Stripe Integration
        • Integrating Paddle
      • CMS
        • WordPress Integration
        • Contentful Integration
        • Sanity Integration
      • Authentication
        • Supabase Integration
        • Clerk Integration
    • Best Practices
      • Using General Large Model to Quickly Build AI Application
      • Use the Deepseek-R1 model to quickly build a conversational AI site
      • Building an Ecommerce Platform with WordPress + WooCommerce and GatsbyJS
      • Building a SaaS Site Using Supabase and Stripe
      • Building a Company Brand Site Quickly
      • How to Quickly Build a Blog Site
    • Migration Guides
      • Migrating from Vercel to EdgeOne Pages
      • Migrating from Cloudflare Pages to EdgeOne Pages
      • Migrating from Netlify to EdgeOne Pages
    • Troubleshooting
    • FAQs
    • Contact Us
    • Release Notes

Migrating from Netlify to EdgeOne Pages

This guide will help you smoothly migrate your Netlify project to EdgeOne Pages.


Preparations: Search Build Command and Publish Directory

Start by finding your Netlify project's build command and output directory:
1. Log in to the dashboard and find the project to migrate.
2. Enter Site configuration, select the Build and deploy option.
3. In the Build settings section, note the values of Build command and Publish directory.







Example:
npm run build
Publish directory: .next

This information will be used in project configuration.


2.Configuration Migration: Handle Redirects and Headers

If your project used _redirects and _headers files or configured redirects and custom headers in the netlify.toml file, require migration to the edgeone.json file in EdgeOne Pages.

Before migration, we need to understand your existing Netlify configuration and convert it to a format Pages can understand.

The following is a comparison example of both:

Netlify configuration in netlify.toml
[build]
command = "npm run build"
publish = "build"

[[redirects]]
from = "/articles"
to = "/blogs"
status = 301

[[headers]]
source = "/*"

[[headers.headers]]
key = "X-Frame-Options"
value = "DENY"

[[headers.headers]]
key = "Cache-Control"
value = "max-age=7200"

[[headers]]
source = "/assets/*"

[[headers.headers]]
key = "Cache-Control"
value = "max-age=31536000"
In this example, we can see the build command, publish directory, redirect rules and custom headers configuration.

In EdgeOne Pages, we need to create an edgeone.json file to include these configurations:
{
"buildCommand": "npm run build",
"outputDirectory": "build",
"redirects": [
{
"source": "/articles",
"destination": "/blog",
"statusCode": 301
}
],
"headers": [
{
"source": "/*",
"headers": [
{
"key": "X-Frame-Options",
"value": "DENY"
},
{
"key": "Cache-Control",
"value": "max-age=7200"
}
]
},
{
"source": "/assets/*",
"headers": [
{
"key": "Cache-Control",
"value": "max-age=31536000"
}
]
}
]
}
For detailed configuration options, see edgeone.json document.


Function Migration: From Netlify to EdgeOne Pages

The two platforms have differences in syntax and usage. The following compares two functions against Netlify and Pages:

Netlify Serverless Functions example:
export default async (request, context) => {
return new Response("Hello, world!")
}

Pages Node Functions example:
// ./node-functions/hello.js
export default function onRequest(context) {
return new Response("Hello world");
}

Netlify Edge Functions example:
export default (request, context) => new Response("Hello world");

export const config = { path: "/test" };

Pages Edge Functions example:
// ./edge-functions/test.js
export default function onRequest(context) {
return new Response("Hello world");
}

Main difference:
1. Function definition:
1.1 Netlify Serverless Functions export async handler by default; Edge Functions export handler by default (can be async) and require explicitly specifying the route path.
1.2 Pages uses named onRequest functions (or onRequestGet, onRequestPost, etc.).
2. Parameters:
2.1 Netlify functions receive request and context as separate parameters.
2.2 Pages function receives a context object.
3. Response method:
3.1 Both use the Response object to return responses, which is similar.
4. Runtime environment:
4.1 Netlify uses Node.js runtime and Deno runtime.
4.2 Pages use Node.js runtime and Edge runtime.

Migration suggestions:
Change the default exported function to a named onRequest function
// Netlify
export default async (request, context) => {
function body
};

// EdgeOne Pages
export default function onRequest(context) {
// function body
}
Adjust parameter usage
// Netlify
const { geo } = context;

// EdgeOne Pages
const { request } = context;
const geo = request.eo.geo;
Keep the usage of the Response object. This part basically does not need to change.
Check and adjust any Netlify function-specific API usage. Pages Functions may not support specific features. Need to find alternatives. Contact us through the community.
File naming may need adjusting. Netlify uses .js, .ts, or .edge.js suffixes, while Pages currently supports .js, .ts, .cjs, .jsx, .tsx.
Note:
Pages and Functions support Node Functions and Edge Functions, with some differences in features such as the context object. You can select based on your specific needs.
For detailed function usage, see Pages Functions document.


Project Deployment: Create a New Project on EdgeOne Pages

After preparation work is completed, create and deploy the project on Pages.
1. Log in to the Tencent Cloud console and enter Pages service.
2. Click "Create project" and select your GitHub repository.
3. In project settings, fill in the build command and publish directory recorded earlier.
4. Click the "Start Deployment" button, and Pages will auto-build and deploy your project.


5.Domain Configuration: Adding a Custom Domain

Netlify and Pages differ in domain configuration:
1. Add a domain in Pages:
1.1 In the console, add the same custom domain to your project.
2. Update DNS records:
2.1 If you use Netlify DNS, transfer the domain to another DNS provider.
2.2 If using external DNS, update existing records:
2.2.1 Change A records or ALIAS records to CNAME records.
2.2.2 Point CNAME record to the domain provided by Pages.
3. Verify DNS setting:
3.1 Use dig or online DNS query tools to confirm that DNS changes have taken effect.
4. Wait for HTTPS certificate configuration:
4.1 Pages will automatically configure an HTTPS certificate for your domain name.

For the detailed domain addition process, see the domain name management document.

By completing the above steps, you have successfully migrated your Netlify project to EdgeOne Pages. The two platforms have similarities in some aspects, but on a strong infrastructure, we have optimized Pages product features, such as intelligent refresh preheating, to provide an out-of-the-box experience. In addition, Pages has fewer restrictions compared to competitors during the public beta phase, providing more flexibility for developers. In terms of customer support, we provide more timely responses, committed to providing developers with a high-quality product experience.

If you encounter any issues during migration, please refer to the EdgeOne Pages Documentation.