--- title: Connect a Remix application to Neon subtitle: Set up a Neon project in seconds and connect from a Remix application enableTableOfContents: true updatedOn: '2025-10-31T11:07:57.608Z' --- Remix is now React Router v7. The features of the Remix framework have been merged into React Router v7. If you are starting a new project, we recommend using React Router. Follow our [React Router guide](/docs/guides/react-router) to connect to Neon. For more information, see the [Remix announcement](https://remix.run/blog/merging-remix-and-react-router). 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 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](https://console.neon.tech/app/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](https://remix.run/docs/en/main/start/quickstart), in the Remix documentation. 2. Add project dependencies using one of the following commands: ```shell npm install pg ``` ```shell npm install postgres ``` ```shell npm install @neondatabase/serverless ``` ## 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 by clicking the **Connect** button on your **Project Dashboard**. For more information, see [Connect from any application](/docs/connect/connect-from-any-app). ```shell shouldWrap DATABASE_URL="postgresql://:@.neon.tech:/?sslmode=require&channel_binding=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: ```javascript import pg from 'pg'; const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL, ssl: true, }); export { pool }; ``` ```javascript import postgres from 'postgres'; const sql = postgres(process.env.DATABASE_URL, { ssl: 'require' }); export { sql }; ``` ```javascript 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. ```javascript import { pool } from '~/db.server'; import { json } from '@remix-run/node'; import { useLoaderData } from '@remix-run/react'; export const loader = async () => { const client = await pool.connect(); try { const response = await client.query('SELECT version()'); return response.rows[0].version; } finally { client.release(); } }; export default function Page() { const data = useLoaderData(); return <>{data}; } ``` ```javascript 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}; } ``` ```javascript 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](localhost:3000): ```shell shouldWrap 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. Get started with Remix and Neon