 [](https://jsr.io/@t3-oss/env-core) [](https://jsr.io/@t3-oss/env-core) [


The Next.js package comes preconfigured for Next.js and also enforces some extra rules by default to make sure you have out-of-the-box compatibility in all different Next.js runtimes.
> For full documentation, see https://env.t3.gg
``bashnpm
npm i @t3-oss/env-nextjs
Usage
> [!NOTE]
>
> You may use any Standard Schema compliant validator of your choice. This example uses Zod
`ts
// src/env.ts
import { createEnv } from "@t3-oss/env-nextjs";
import { z } from "zod";export const env = createEnv({
/*
* Serverside Environment variables, not available on the client.
* Will throw if you access these variables on the client.
*/
server: {
DATABASE_URL: z.url(),
OPEN_AI_API_KEY: z.string().min(1),
},
/*
* Environment variables available on the client (and server).
*
* 💡 You'll get type errors if these are not prefixed with NEXT_PUBLIC_.
*/
client: {
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: z.string().min(1),
},
/*
* Specify what values should be validated by your schemas above.
*
* If you're using Next.js < 13.4.4, you'll need to specify the runtimeEnv manually
* For Next.js >= 13.4.4, you can use the experimental__runtimeEnv option and
* only specify client-side variables.
*/
runtimeEnv: {
DATABASE_URL: process.env.DATABASE_URL,
OPEN_AI_API_KEY: process.env.OPEN_AI_API_KEY,
NEXT_PUBLIC_PUBLISHABLE_KEY: process.env.NEXT_PUBLIC_PUBLISHABLE_KEY,
},
// experimental__runtimeEnv: {
// NEXT_PUBLIC_PUBLISHABLE_KEY: process.env.NEXT_PUBLIC_PUBLISHABLE_KEY,
// }
});
``