Neon is Generally Available! Serverless Postgres with branching to boost your development velocity.Read more
Guides/Frameworks

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:

  1. Create a Neon project
  2. Create a Remix project and add dependencies
  3. Configure a Postgres client
  4. 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.

  1. Navigate to the Projects page in the Neon Console.
  2. Click New Project.
  3. Specify your project settings and click Create Project.

Create a Remix project and add dependencies

  1. Create a Remix project if you do not have one. For instructions, see Quick Start, in the Remix documentation.

  2. Add project dependencies using one of the following commands:

    node-postgres
    postgres.js
    Neon serverless driver
    npm install pg

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=postgres://[user]:[password]@[neon_hostname]/[dbname]

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:

node-postgres
postgres.js
Neon serverless driver
import pg from 'pg';

const pool = new pg.Pool({
  connectionString: process.env.DATABASE_URL,
  ssl: true,
});

export { pool };

route

Create a new route in your app/routes directory and import the db.server file.

node-postgres
postgres.js
Neon serverless driver
import { json } from '@remix-run/node';
import { useLoaderData } from '@remix-run/react';
import { pool } from '~/db.server';

export const loader = async () => {
  const client = await pool.connect();

  try {
    const response = await client.query('SELECT version()');
    console.log(response.rows[0]);
    return json({ data: response.rows[0] });
  } finally {
    client.release();
  }
};

export default function Page() {
  const data = useLoaderData();
}

Run the app

When you run npm run dev you can expect to see one of the following in your terminal output:

# node-postgres & Neon serverless driver 

{
  version: 'PostgreSQL 16.0 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit'
}

# postgres.js

Result(1) [
  {
    version: 'PostgreSQL 16.0 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit'
  }
]

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.

Last updated on

Edit this page
Was this page helpful?