Beta You're reading the docs for Kubb v5, which is currently in beta. View the stable v4 docs
Skip to content

← Blog

Published: 2025-09-22

Introducing Kubb v4

Kubb v4 sharpens type safety, schema generation, and query handling. Here is what changed.

Breaking changes

  • Correct use of Infinite Query generics with Tanstack-Query
  • Unwrap in Vue infinite query
  • Different use of z.optional Before:
typescript
z.number().int().optional()

After:

typescript
z.optional(z.number().int())
  • Add Key suffix to types when using asConst Before:
typescript
export const findPetsByStatusQueryParamsStatusEnum = {
  available: 'available',
  pending: 'pending',
  sold: 'sold',
} as const

export type FindPetsByStatusQueryParamsStatusEnum = (typeof findPetsByStatusQueryParamsStatusEnum)[keyof typeof findPetsByStatusQueryParamsStatusEnum]

After:

typescript
export const findPetsByStatusQueryParamsStatusEnum = {
  available: 'available',
  pending: 'pending',
  sold: 'sold',
} as const

export type FindPetsByStatusQueryParamsStatusEnumKey = (typeof findPetsByStatusQueryParamsStatusEnum)[keyof typeof findPetsByStatusQueryParamsStatusEnum]

👋🏽 Stijn Van Hulle