From aa9281606590374865f24eafaedb51ff39fe6a3f Mon Sep 17 00:00:00 2001 From: "Usman S." Date: Wed, 22 Oct 2025 15:24:21 +0000 Subject: [PATCH 1/4] docs: fixed example of env variable validation with zod --- .../react/guide/environment-variables.md | 25 +++++++++++-------- .../solid/guide/environment-variables.md | 25 +++++++++++-------- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/docs/start/framework/react/guide/environment-variables.md b/docs/start/framework/react/guide/environment-variables.md index 108ec45f984..a585d94d593 100644 --- a/docs/start/framework/react/guide/environment-variables.md +++ b/docs/start/framework/react/guide/environment-variables.md @@ -278,14 +278,9 @@ Use Zod for runtime validation of environment variables: ```typescript // src/config/env.ts +import { createIsomorphicFn } from "@tanstack/react-start"; import { z } from 'zod' -const envSchema = z.object({ - DATABASE_URL: z.string().url(), - JWT_SECRET: z.string().min(32), - NODE_ENV: z.enum(['development', 'production', 'test']), -}) - const clientEnvSchema = z.object({ VITE_APP_NAME: z.string(), VITE_API_URL: z.string().url(), @@ -293,11 +288,21 @@ const clientEnvSchema = z.object({ VITE_AUTH0_CLIENT_ID: z.string(), }) -// Validate server environment -export const serverEnv = envSchema.parse(process.env) +const serverEnvSchema = z + .object({ + DATABASE_URL: z.string().url(), + JWT_SECRET: z.string().min(32), + NODE_ENV: z.enum(["development", "production", "test"]), + }) + .and(clientEnvSchema); + +const getEnv = createIsomorphicFn() + .server(() => serverEnvSchema.parse(process.env)) + .client(() => clientEnvSchema.parse(import.meta.env)); + +type Env = z.infer; -// Validate client environment -export const clientEnv = clientEnvSchema.parse(import.meta.env) +export const env = getEnv() as Env; ``` ## Security Best Practices diff --git a/docs/start/framework/solid/guide/environment-variables.md b/docs/start/framework/solid/guide/environment-variables.md index 37ef1ed4af2..f1e8cdf4b2f 100644 --- a/docs/start/framework/solid/guide/environment-variables.md +++ b/docs/start/framework/solid/guide/environment-variables.md @@ -278,14 +278,9 @@ Use Zod for runtime validation of environment variables: ```typescript // src/config/env.ts +import { createIsomorphicFn } from "@tanstack/react-start"; import { z } from 'zod' -const envSchema = z.object({ - DATABASE_URL: z.string().url(), - JWT_SECRET: z.string().min(32), - NODE_ENV: z.enum(['development', 'production', 'test']), -}) - const clientEnvSchema = z.object({ VITE_APP_NAME: z.string(), VITE_API_URL: z.string().url(), @@ -293,11 +288,21 @@ const clientEnvSchema = z.object({ VITE_AUTH0_CLIENT_ID: z.string(), }) -// Validate server environment -export const serverEnv = envSchema.parse(process.env) +const serverEnvSchema = z + .object({ + DATABASE_URL: z.string().url(), + JWT_SECRET: z.string().min(32), + NODE_ENV: z.enum(["development", "production", "test"]), + }) + .and(clientEnvSchema); + +const getEnv = createIsomorphicFn() + .server(() => serverEnvSchema.parse(process.env)) + .client(() => clientEnvSchema.parse(import.meta.env)); + +type Env = z.infer; -// Validate client environment -export const clientEnv = clientEnvSchema.parse(import.meta.env) +export const env = getEnv() as Env; ``` ## Security Best Practices From 13ceb182e3812285959dd4b6f260083a7a50c242 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 15:30:37 +0000 Subject: [PATCH 2/4] ci: apply automated fixes --- .../framework/react/guide/environment-variables.md | 12 ++++++------ .../framework/solid/guide/environment-variables.md | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/start/framework/react/guide/environment-variables.md b/docs/start/framework/react/guide/environment-variables.md index a585d94d593..9633813c4cf 100644 --- a/docs/start/framework/react/guide/environment-variables.md +++ b/docs/start/framework/react/guide/environment-variables.md @@ -278,7 +278,7 @@ Use Zod for runtime validation of environment variables: ```typescript // src/config/env.ts -import { createIsomorphicFn } from "@tanstack/react-start"; +import { createIsomorphicFn } from '@tanstack/react-start' import { z } from 'zod' const clientEnvSchema = z.object({ @@ -292,17 +292,17 @@ const serverEnvSchema = z .object({ DATABASE_URL: z.string().url(), JWT_SECRET: z.string().min(32), - NODE_ENV: z.enum(["development", "production", "test"]), + NODE_ENV: z.enum(['development', 'production', 'test']), }) - .and(clientEnvSchema); + .and(clientEnvSchema) const getEnv = createIsomorphicFn() .server(() => serverEnvSchema.parse(process.env)) - .client(() => clientEnvSchema.parse(import.meta.env)); + .client(() => clientEnvSchema.parse(import.meta.env)) -type Env = z.infer; +type Env = z.infer -export const env = getEnv() as Env; +export const env = getEnv() as Env ``` ## Security Best Practices diff --git a/docs/start/framework/solid/guide/environment-variables.md b/docs/start/framework/solid/guide/environment-variables.md index f1e8cdf4b2f..ded26f3e182 100644 --- a/docs/start/framework/solid/guide/environment-variables.md +++ b/docs/start/framework/solid/guide/environment-variables.md @@ -278,7 +278,7 @@ Use Zod for runtime validation of environment variables: ```typescript // src/config/env.ts -import { createIsomorphicFn } from "@tanstack/react-start"; +import { createIsomorphicFn } from '@tanstack/react-start' import { z } from 'zod' const clientEnvSchema = z.object({ @@ -292,17 +292,17 @@ const serverEnvSchema = z .object({ DATABASE_URL: z.string().url(), JWT_SECRET: z.string().min(32), - NODE_ENV: z.enum(["development", "production", "test"]), + NODE_ENV: z.enum(['development', 'production', 'test']), }) - .and(clientEnvSchema); + .and(clientEnvSchema) const getEnv = createIsomorphicFn() .server(() => serverEnvSchema.parse(process.env)) - .client(() => clientEnvSchema.parse(import.meta.env)); + .client(() => clientEnvSchema.parse(import.meta.env)) -type Env = z.infer; +type Env = z.infer -export const env = getEnv() as Env; +export const env = getEnv() as Env ``` ## Security Best Practices From 2142eceafa44d18d5fe59e6667825e743d8bd474 Mon Sep 17 00:00:00 2001 From: "Usman S." Date: Wed, 22 Oct 2025 15:32:23 +0000 Subject: [PATCH 3/4] Directly use `z.url()` instead of `z.string().url()` --- docs/start/framework/react/guide/environment-variables.md | 4 ++-- docs/start/framework/solid/guide/environment-variables.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/start/framework/react/guide/environment-variables.md b/docs/start/framework/react/guide/environment-variables.md index 9633813c4cf..76d91d21423 100644 --- a/docs/start/framework/react/guide/environment-variables.md +++ b/docs/start/framework/react/guide/environment-variables.md @@ -283,14 +283,14 @@ import { z } from 'zod' const clientEnvSchema = z.object({ VITE_APP_NAME: z.string(), - VITE_API_URL: z.string().url(), + VITE_API_URL: z.url(), VITE_AUTH0_DOMAIN: z.string(), VITE_AUTH0_CLIENT_ID: z.string(), }) const serverEnvSchema = z .object({ - DATABASE_URL: z.string().url(), + DATABASE_URL: z.url(), JWT_SECRET: z.string().min(32), NODE_ENV: z.enum(['development', 'production', 'test']), }) diff --git a/docs/start/framework/solid/guide/environment-variables.md b/docs/start/framework/solid/guide/environment-variables.md index ded26f3e182..bc5392a9eb4 100644 --- a/docs/start/framework/solid/guide/environment-variables.md +++ b/docs/start/framework/solid/guide/environment-variables.md @@ -283,14 +283,14 @@ import { z } from 'zod' const clientEnvSchema = z.object({ VITE_APP_NAME: z.string(), - VITE_API_URL: z.string().url(), + VITE_API_URL: z.url(), VITE_AUTH0_DOMAIN: z.string(), VITE_AUTH0_CLIENT_ID: z.string(), }) const serverEnvSchema = z .object({ - DATABASE_URL: z.string().url(), + DATABASE_URL: z.url(), JWT_SECRET: z.string().min(32), NODE_ENV: z.enum(['development', 'production', 'test']), }) From de0aabe63dba9f60af0f71d44955842cc7d49b38 Mon Sep 17 00:00:00 2001 From: "Usman S." Date: Wed, 22 Oct 2025 15:37:13 +0000 Subject: [PATCH 4/4] docs: fix wrong package name in import in solid docs --- docs/start/framework/solid/guide/environment-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/start/framework/solid/guide/environment-variables.md b/docs/start/framework/solid/guide/environment-variables.md index bc5392a9eb4..f63c7e72649 100644 --- a/docs/start/framework/solid/guide/environment-variables.md +++ b/docs/start/framework/solid/guide/environment-variables.md @@ -278,7 +278,7 @@ Use Zod for runtime validation of environment variables: ```typescript // src/config/env.ts -import { createIsomorphicFn } from '@tanstack/react-start' +import { createIsomorphicFn } from '@tanstack/solid-start' import { z } from 'zod' const clientEnvSchema = z.object({