NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #423 most downloaded on npm
TypeScript-first schema declaration and validation library with static type inference
Last release 21 days ago
13 Sep 2026
Ships unpredictably
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 57 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
1011 releases · first in 2020
One column per quarter.
0f4d403558ae0490c711e4c2bfcf6c200bd14e11 Add Bronze logos
29d2ea2a15f0b1ac4b89138041f786a3dafc490b Add copper
bc0095aab9e7254deb18701adc63de128ca2c742 Test on latest node
110b8211f991b3e060ab2da4fec7b63d600439ad Update README_ZH.md
157b18d742c86d85b26a8421af46ad6d6d6b6ea7 Add 3.23 announcement
103d2436f85872ca0e0e6247652989cc93d46a39 3.23.3
c340558d14f5222a2ca177e0591463c06cc5edc3 Update protocol
This changes the default generics back to any to prevent breakages with common packager like @hookform/resolvers:
This changes the default generics back to any to prevent breakages with common packager like @hookform/resolvers:
- class ZodType<Output = unknown, Def extends ZodTypeDef = ZodTypeDef, Input = unknown> {}
+ class ZodType<Output = any, Def extends ZodTypeDef = ZodTypeDef, Input = any> {}
There are no breaking changes to the public API of Zod. However some changes can impact ecosystem tools that rely on Zod internals.
Zod 3.23 is now available. This is the final 3.x release before Zod 4.0. To try it out:
npm install zod
z.string().date()Zod can now validate ISO 8601 date strings. Thanks @igalklebanov! https://github.com/colinhacks/zod/pull/1766
const schema = z.string().date();
schema.parse("2022-01-01"); // OK
z.string().time()Zod can now validate ISO 8601 time strings. Thanks @igalklebanov! https://github.com/colinhacks/zod/pull/1766
const schema = z.string().time();
schema.parse("12:00:00"); // OK
You can specify sub-second precision using the precision option:
const schema = z.string().time({ precision: 3 });
schema.parse("12:00:00.123"); // OK
schema.parse("12:00:00.123456"); // Error
schema.parse("12:00:00"); // Error
z.string().duration()Zod can now validate ISO 8601 duration strings. Thanks @mastermatt! https://github.com/colinhacks/zod/pull/3265
const schema = z.string().duration();
schema.parse("P3Y6M4DT12H30M5S"); // OK
z.string().datetime()Thanks @bchrobot https://github.com/colinhacks/zod/pull/2522
You can now allow unqualified (timezone-less) datetimes using the local: true flag.
const schema = z.string().datetime({ local: true });
schema.parse("2022-01-01T12:00:00"); // OK
Plus, Zod now validates the day-of-month correctly to ensure no invalid dates (e.g. February 30th) pass validation. Thanks @szamanr! https://github.com/colinhacks/zod/pull/3391
z.string().base64()Zod can now validate base64 strings. Thanks @StefanTerdell! https://github.com/colinhacks/zod/pull/3047
const schema = z.string().base64();
schema.parse("SGVsbG8gV29ybGQ="); // OK
The following can now be used as discriminator keys in z.discriminatedUnion():
ZodOptionalZodNullableZodReadonlyZodBrandedZodCatchconst schema = z.discriminatedUnion("type", [
z.object({ type: z.literal("A").optional(), value: z.number() }),
z.object({ type: z.literal("B").nullable(), value: z.string() }),
z.object({ type: z.literal("C").readonly(), value: z.boolean() }),
z.object({ type: z.literal("D").brand<"D">(), value: z.boolean() }),
z.object({ type: z.literal("E").catch("E"), value: z.unknown() }),
]);
There are no breaking changes to the public API of Zod. However some changes can impact ecosystem tools that rely on Zod internals.
ZodFirstPartySchemaTypesThree new types have been added to the ZodFirstPartySchemaTypes union. This may impact some codegen libraries. https://github.com/colinhacks/zod/pull/3247
+ | ZodPipeline<any, any>
+ | ZodReadonly<any>
+ | ZodSymbol;
.pick() and .omit()This version fixes a bug where unknown keys were accidentally accepted in .pick() and omit(). This has been fixed, which could cause compiler errors in some user code. https://github.com/colinhacks/zod/pull/3255
z.object({
name: z.string()
}).pick({
notAKey: true // no longer allowed
})
ZodFirstPartySchemaTypes by @MatthijsMud in https://github.com/colinhacks/zod/pull/3247input of .required() readonly by @KATT in https://github.com/colinhacks/zod/pull/3301addQuestionMarks, fix #2184 by @colinhacks in https://github.com/colinhacks/zod/pull/3352src for bun test by @rotu in https://github.com/colinhacks/zod/pull/3038zod-dev utility to eco-system section by @schalkventer in https://github.com/colinhacks/zod/pull/3113orval to "X to Zod" ecosystems by @soartec-lab in https://github.com/colinhacks/zod/pull/3397Full Changelog: https://github.com/colinhacks/zod/compare/v3.22.4...v3.23.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →