TanStackT
TanStack4w ago
44 replies
then-purple

Best practice for S3 in Tanstack Start

I've just started using Tanstack Start and have been running into some issues getting S3 integration set up. I have a working scenario, but I want to know if this is best practice or if there's a better solution.

The uploaded image is my s3.ts file, which is used in other server functions, and my serverEnv is:

import { z } from "zod";

const serverEnvSchema = z.object({
    VITE_BASE_URL: z.url().default("http://localhost:3000"),
    BETTER_AUTH_SECRET: z.string().min(1),
    GOOGLE_CLIENT_ID: z.string().min(1),
    GOOGLE_CLIENT_SECRET: z.string().min(1),
    DATABASE_URL: z.url(),
    S3_ENDPOINT: z.string().optional(),
    S3_REGION: z.string().default("us-east-1"),
    S3_ACCESS_KEY_ID: z.string().optional(),
    S3_SECRET_ACCESS_KEY: z.string().optional(),
    S3_BUCKET_NAME: z.string().optional(),
    S3_FORCE_PATH_STYLE: z.coerce.boolean().default(false),
});

// Validate server environment
export const serverEnv = serverEnvSchema.parse(process.env);
Screenshot_2025-12-22_at_5.16.14_pm.png
Was this page helpful?