Connect a Remix application to Neon
Set up a Neon project in seconds and connect from a Remix application
Remix is an open-source full stack JavaScript framework that lets you focus on building out the user interface using familiar web standards. This guide explains how to connect Remix with Neon using a secure server-side request.
To create a Neon project and access it from a Remix application:
- Create a Neon project
- Create a Remix project and add dependencies
- Configure a Postgres client
- Run the app
Create a Neon project
If you do not have one already, create a Neon project. Save your connection details including your password. They are required when defining connection settings.
- Navigate to the Projects page in the Neon Console.
- Click New Project.
- Specify your project settings and click Create Project.
Create a Remix project and add dependencies
-
Create a Remix project if you do not have one. For instructions, see Quick Start, in the Remix documentation.
-
Add project dependencies using one of the following commands:
Store your Neon credentials
Add a .env
file to your project directory and add your Neon connection string to it. You can find the connection string for your database in the Connection Details widget on the Neon Dashboard. For more information, see Connect from any application.
DATABASE_URL="postgresql://<user>:<password>@<endpoint_hostname>.neon.tech:<port>/<dbname>?sslmode=require"
Configure the Postgres client
There are two parts to connecting a Remix application to Neon. The first is db.server
. Remix will ensure any code added to this file won't be included in the client bundle. The second is the route where the connection to the database will be used.
db.server
Create a db.server.ts
file at the root of your /app
directory and add the following code snippet to connect to your Neon database:
import { neon } from '@neondatabase/serverless';
const sql = neon(process.env.DATABASE_URL);
export { sql };
route
Create a new route in your app/routes
directory and import the db.server
file.
import { sql } from '~/db.server';
import { json } from '@remix-run/node';
import { useLoaderData } from '@remix-run/react';
export const loader = async () => {
const response = await sql`SELECT version()`;
return response[0].version;
};
export default function Page() {
const data = useLoaderData();
return <>{data}</>;
}
Run the app
When you run npm run dev
you can expect to see the following on localhost:3000:
PostgreSQL 16.0 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
Source code
You can find the source code for the application described in this guide on GitHub.
Need help?
Join our Discord Server to ask questions or see what others are doing with Neon. Users on paid plans can open a support ticket from the console. For more detail, see Getting Support.