diff --git a/.changeset/healthy-years-refuse.md b/.changeset/healthy-years-refuse.md new file mode 100644 index 0000000000..2f75aa85a9 --- /dev/null +++ b/.changeset/healthy-years-refuse.md @@ -0,0 +1,5 @@ +--- +"create-t3-app": minor +--- + +Updated Zod to v4 diff --git a/cli/package.json b/cli/package.json index cc849a3819..2fab958be5 100644 --- a/cli/package.json +++ b/cli/package.json @@ -66,8 +66,8 @@ "@auth/prisma-adapter": "^1.6.0", "@libsql/client": "^0.14.0", "@planetscale/database": "^1.19.0", - "@prisma/adapter-planetscale": "^6.6.0", - "@prisma/client": "^6.6.0", + "@prisma/adapter-planetscale": "~6.6.0", + "@prisma/client": "~6.6.0", "@t3-oss/env-nextjs": "^0.12.0", "@tailwindcss/postcss": "^4.0.15", "@tanstack/react-query": "^5.69.0", @@ -86,7 +86,7 @@ "postgres": "^3.4.4", "prettier": "^3.5.3", "prettier-plugin-tailwindcss": "^0.6.11", - "prisma": "^6.6.0", + "prisma": "~6.6.0", "react": "^19.0.0", "react-dom": "^19.0.0", "superjson": "^2.2.1", @@ -94,6 +94,6 @@ "tsup": "^6.7.0", "type-fest": "^3.13.1", "typescript": "^5.8.2", - "zod": "^3.24.2" + "zod": "next" } } diff --git a/cli/src/installers/dependencyVersionMap.ts b/cli/src/installers/dependencyVersionMap.ts index a346468c81..bf827844fa 100644 --- a/cli/src/installers/dependencyVersionMap.ts +++ b/cli/src/installers/dependencyVersionMap.ts @@ -9,9 +9,9 @@ export const dependencyVersionMap = { "@auth/drizzle-adapter": "^1.7.2", // Prisma - prisma: "^6.6.0", - "@prisma/client": "^6.6.0", - "@prisma/adapter-planetscale": "^6.6.0", + prisma: "~6.6.0", + "@prisma/client": "~6.6.0", + "@prisma/adapter-planetscale": "~6.6.0", // Drizzle "drizzle-kit": "^0.30.5", diff --git a/cli/template/base/package.json b/cli/template/base/package.json index e6dc26aa5b..e505aea34e 100644 --- a/cli/template/base/package.json +++ b/cli/template/base/package.json @@ -15,7 +15,7 @@ "next": "^15.2.3", "react": "^19.0.0", "react-dom": "^19.0.0", - "zod": "^3.24.2" + "zod": "next" }, "devDependencies": { "@types/node": "^20.14.10", diff --git a/cli/template/extras/src/env/with-auth-db-planetscale.js b/cli/template/extras/src/env/with-auth-db-planetscale.js index 01abd8e6f1..9c3d99dbf1 100644 --- a/cli/template/extras/src/env/with-auth-db-planetscale.js +++ b/cli/template/extras/src/env/with-auth-db-planetscale.js @@ -14,7 +14,6 @@ export const env = createEnv({ AUTH_DISCORD_ID: z.string(), AUTH_DISCORD_SECRET: z.string(), DATABASE_URL: z - .string() .url() .refine( (str) => !str.includes("YOUR_MYSQL_URL_HERE"), diff --git a/cli/template/extras/src/env/with-auth-db.js b/cli/template/extras/src/env/with-auth-db.js index 6b19f72401..364df7a1df 100644 --- a/cli/template/extras/src/env/with-auth-db.js +++ b/cli/template/extras/src/env/with-auth-db.js @@ -13,7 +13,7 @@ export const env = createEnv({ : z.string().optional(), AUTH_DISCORD_ID: z.string(), AUTH_DISCORD_SECRET: z.string(), - DATABASE_URL: z.string().url(), + DATABASE_URL: z.url(), NODE_ENV: z .enum(["development", "test", "production"]) .default("development"), diff --git a/cli/template/extras/src/env/with-db-planetscale.js b/cli/template/extras/src/env/with-db-planetscale.js index f4fdfe8415..d8e8de3e86 100644 --- a/cli/template/extras/src/env/with-db-planetscale.js +++ b/cli/template/extras/src/env/with-db-planetscale.js @@ -8,7 +8,6 @@ export const env = createEnv({ */ server: { DATABASE_URL: z - .string() .url() .refine( (str) => !str.includes("YOUR_MYSQL_URL_HERE"), diff --git a/cli/template/extras/src/env/with-db.js b/cli/template/extras/src/env/with-db.js index 6ca7f3e93a..ca6adb226b 100644 --- a/cli/template/extras/src/env/with-db.js +++ b/cli/template/extras/src/env/with-db.js @@ -7,7 +7,7 @@ export const env = createEnv({ * isn't built with invalid env vars. */ server: { - DATABASE_URL: z.string().url(), + DATABASE_URL: z.url(), NODE_ENV: z .enum(["development", "test", "production"]) .default("development"), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55cb80f08c..35537f738c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -106,14 +106,14 @@ importers: specifier: ^1.19.0 version: 1.19.0 '@prisma/adapter-planetscale': - specifier: ^6.6.0 + specifier: ~6.6.0 version: 6.6.0(@planetscale/database@1.19.0) '@prisma/client': - specifier: ^6.6.0 + specifier: ~6.6.0 version: 6.6.0(prisma@6.6.0(typescript@5.8.2))(typescript@5.8.2) '@t3-oss/env-nextjs': specifier: ^0.12.0 - version: 0.12.0(typescript@5.8.2)(zod@3.24.2) + version: 0.12.0(typescript@5.8.2)(zod@4.0.0-beta.20250411T005215) '@tailwindcss/postcss': specifier: ^4.0.15 version: 4.0.15 @@ -166,7 +166,7 @@ importers: specifier: ^0.6.11 version: 0.6.11(@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.5.3))(prettier-plugin-astro@0.14.1)(prettier@3.5.3) prisma: - specifier: ^6.6.0 + specifier: ~6.6.0 version: 6.6.0(typescript@5.8.2) react: specifier: ^19.0.0 @@ -190,8 +190,8 @@ importers: specifier: ^5.8.2 version: 5.8.2 zod: - specifier: ^3.24.2 - version: 3.24.2 + specifier: next + version: 4.0.0-beta.20250411T005215 www: dependencies: @@ -259,8 +259,8 @@ importers: specifier: ^5.0.0 version: 5.0.0 zod: - specifier: ^3.24.2 - version: 3.24.2 + specifier: next + version: 4.0.0-beta.20250411T005215 devDependencies: '@astrojs/react': specifier: ^4.2.1 @@ -2420,6 +2420,9 @@ packages: '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + '@zod/core@0.3.3': + resolution: {integrity: sha512-zXp0/K9zynk8ZP5hdUN2i0xePJ6uULX5rvBC/54bWNF4FL9YHxTjQg/zPFNj+WE8g0QTKX+fty7n073bgp6wNw==} + abbrev@3.0.0: resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -6658,6 +6661,9 @@ packages: zod@3.24.2: resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + zod@4.0.0-beta.20250411T005215: + resolution: {integrity: sha512-FgvuS7Gb0kzI9Rsd1ihOulGSFT9LVj0JdejbkvjXIski9F/DheDIBV9uZkbAIiS6bOsthAMWHFtSsM1o+hmhig==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -8381,17 +8387,17 @@ snapshots: dependencies: defer-to-connect: 1.1.3 - '@t3-oss/env-core@0.12.0(typescript@5.8.2)(zod@3.24.2)': + '@t3-oss/env-core@0.12.0(typescript@5.8.2)(zod@4.0.0-beta.20250411T005215)': optionalDependencies: typescript: 5.8.2 - zod: 3.24.2 + zod: 4.0.0-beta.20250411T005215 - '@t3-oss/env-nextjs@0.12.0(typescript@5.8.2)(zod@3.24.2)': + '@t3-oss/env-nextjs@0.12.0(typescript@5.8.2)(zod@4.0.0-beta.20250411T005215)': dependencies: - '@t3-oss/env-core': 0.12.0(typescript@5.8.2)(zod@3.24.2) + '@t3-oss/env-core': 0.12.0(typescript@5.8.2)(zod@4.0.0-beta.20250411T005215) optionalDependencies: typescript: 5.8.2 - zod: 3.24.2 + zod: 4.0.0-beta.20250411T005215 '@tailwindcss/node@4.0.15': dependencies: @@ -8841,6 +8847,8 @@ snapshots: '@vscode/l10n@0.0.18': {} + '@zod/core@0.3.3': {} + abbrev@3.0.0: {} acorn-import-attributes@1.9.5(acorn@8.12.1): @@ -13925,4 +13933,8 @@ snapshots: zod@3.24.2: {} + zod@4.0.0-beta.20250411T005215: + dependencies: + '@zod/core': 0.3.3 + zwitch@2.0.4: {} diff --git a/www/package.json b/www/package.json index b7e3b0e23c..2a843da71c 100644 --- a/www/package.json +++ b/www/package.json @@ -36,7 +36,7 @@ "tailwind-scrollbar": "^3.0.0", "treeify": "^1.1.0", "unist-util-visit": "^5.0.0", - "zod": "^3.24.2" + "zod": "next" }, "devDependencies": { "@astrojs/react": "^4.2.1", diff --git a/www/src/pages/ar/usage/env-variables.md b/www/src/pages/ar/usage/env-variables.md index 7235534836..cfbe6320c7 100644 --- a/www/src/pages/ar/usage/env-variables.md +++ b/www/src/pages/ar/usage/env-variables.md @@ -26,7 +26,7 @@ dir: rtl ```ts:env/schema.mjs export const serverSchema = z.object({ - // DATABASE_URL: z.string().url(), + // DATABASE_URL: z.url(), }); export const serverEnv = { diff --git a/www/src/pages/es/usage/env-variables.md b/www/src/pages/es/usage/env-variables.md index ac335af710..d593b51284 100644 --- a/www/src/pages/es/usage/env-variables.md +++ b/www/src/pages/es/usage/env-variables.md @@ -25,7 +25,7 @@ Este es el archivo que realmente modificarás. Contiene dos esquemas, uno para l ```ts:env/schema.mjs export const serverSchema = z.object({ - // DATABASE_URL: z.string().url(), + // DATABASE_URL: z.url(), }); export const clientSchema = z.object({ diff --git a/www/src/pages/no/usage/env-variables.md b/www/src/pages/no/usage/env-variables.md index 8b52c4e13d..29057ff2ed 100644 --- a/www/src/pages/no/usage/env-variables.md +++ b/www/src/pages/no/usage/env-variables.md @@ -25,7 +25,7 @@ Endringene skjer i denne filen. Den inneholder to skjemaer, ett for servermiljø ```ts:env/schema.mjs export const serverSchema = z.object({ - // DATABASE_URL: z.string().url(), + // DATABASE_URL: z.url(), }); export const serverEnv = {