Vercel Edge
The Vercel Edge Network network is a popular platform for deploying serverless Edge functions. Alongside the performant runtime environment, your code can be easily deployed and managed through your own Vercel account, providing access to preview builds, environment customization, and more.
Getting Started
Before getting started, you need to install the vercel
CLI globally.
Next, either use the edge
CLI command or setup manually:
Create a new project using the edge
CLI command:
edge new vercel_edge new_project
This command will create a new barebones template in the current directory. Once complete, install the dependencies:
dart pub get
Open the lib/main.dart
file to view the minimal HTTP request fetch handler:
void main() {
VercelEdge(fetch: (request) {
return Response("Hello World!");
});
}
Each incoming request to your edge function will be passed to the fetch
handler, which is expected to return a Response
instance. The fetch
handler provides a Request
instance which contains useful information about the incoming request, such as the method, URL, headers, body and more.
Local development
To run your application locally, use the vercel dev
command from the root of your project:
vercel dev
# or vc dev
If this is your first time running the command, you'll be prompted to login to your Vercel account and choose (or create) a project to link to.
This command will start a development server where you can access your application, by default at http://localhost:3000
. Any changes you make to your Dart code will trigger a hot-reload.
You can change what port the application runs on by providing the --listen 3001
argument to the dev command.
Deployment
To deploy your application to Vercel, first build your application running the following command from the root of your project:
vercel build
Once built, you can deploy using the deploy
command:
vercel deploy --prebuilt
The --prebuilt
flag tells Vercel to skip the build step, as we've already built the application (since Vercel cannot compile Dart on their servers). We'll likely create a GitHub action to handle this process automatically in the future.