[{"data":1,"prerenderedAt":368},["ShallowReactive",2],{"page:\u002Fblog\u002Fv4":3},{"id":4,"title":5,"body":6,"description":351,"extension":352,"frontmatter":353,"heading":358,"meta":359,"navigation":360,"order":361,"path":362,"seo":363,"sitemap":364,"source":365,"stem":366,"__hash__":367},"site\u002Fblog\u002Fv4.md","Release of Kubb 4.0",{"type":7,"value":8,"toc":339},"minimark",[9,13,18,28,37,117,128,331],[10,11,12],"p",{},"Kubb v4 sharpens type safety, schema generation, and query handling. Here is what changed.",[14,15,17],"h2",{"id":16},"breaking-changes","Breaking changes",[19,20,21,25],"ul",{},[22,23,24],"li",{},"Correct use of Infinite Query generics with Tanstack-Query",[22,26,27],{},"Unwrap in Vue infinite query",[29,30,32,33],"h3",{"id":31},"different-use-of-zoptional","Different use of ",[34,35,36],"code",{},"z.optional",[38,39,40,85],"code-group",{},[41,42,47],"pre",{"language":43,"filename":44,"code":45,"class":46},"typescript","Before","z.number().int().optional()","highlights",[34,48,50],{"class":49},"language-typescript",[51,52,55,59,63,67,71,73,76,78,80,83],"span",{"class":53,"style":54},"line","display: inline",[51,56,58],{"style":57},"color:#24292e;--hls-dark:#e1e4e8","z",[51,60,62],{"style":61},"color:#d73a49;--hls-dark:#f97583",".",[51,64,66],{"style":65},"color:#6f42c1;--hls-dark:#b392f0","number",[51,68,70],{"style":69},"color:#005cc5;--hls-dark:#79b8ff","()",[51,72,62],{"style":61},[51,74,75],{"style":65},"int",[51,77,70],{"style":69},[51,79,62],{"style":61},[51,81,82],{"style":65},"optional",[51,84,70],{"style":69},[41,86,89],{"language":43,"filename":87,"code":88,"class":46},"After","z.optional(z.number().int())",[34,90,91],{"class":49},[51,92,93,95,97,99,102,104,106,108,110,112,114],{"class":53,"style":54},[51,94,58],{"style":57},[51,96,62],{"style":61},[51,98,82],{"style":65},[51,100,101],{"style":69},"(",[51,103,58],{"style":57},[51,105,62],{"style":61},[51,107,66],{"style":65},[51,109,70],{"style":69},[51,111,62],{"style":61},[51,113,75],{"style":65},[51,115,116],{"style":69},"())",[29,118,120,121,124,125],{"id":119},"add-key-suffix-to-types-when-using-asconst","Add ",[34,122,123],{},"Key"," suffix to types when using ",[34,126,127],{},"asConst",[38,129,130,243],{},[41,131,133],{"language":43,"filename":44,"code":132,"class":46},"export const findPetsByStatusQueryParamsStatusEnum = {\n  available: 'available',\n  pending: 'pending',\n  sold: 'sold',\n} as const\n\nexport type FindPetsByStatusQueryParamsStatusEnum = (typeof findPetsByStatusQueryParamsStatusEnum)[keyof typeof findPetsByStatusQueryParamsStatusEnum]",[34,134,135,152,153,152,171,152,185,152,199,152,210,152,212],{"class":49},[51,136,137,140,143,146,149],{"class":53,"style":54},[51,138,139],{"style":61},"export ",[51,141,142],{"style":61},"const ",[51,144,145],{"style":57},"findPetsByStatusQueryParamsStatusEnum ",[51,147,148],{"style":61},"= ",[51,150,151],{"style":69},"{","\n",[51,154,155,158,161,164,168],{"class":53,"style":54},[51,156,157],{"style":69},"  ",[51,159,160],{"style":69},"available",[51,162,163],{"style":61},": ",[51,165,167],{"style":166},"color:#032f62;--hls-dark:#9ecbff","'available'",[51,169,170],{"style":61},",",[51,172,173,175,178,180,183],{"class":53,"style":54},[51,174,157],{"style":61},[51,176,177],{"style":69},"pending",[51,179,163],{"style":61},[51,181,182],{"style":166},"'pending'",[51,184,170],{"style":61},[51,186,187,189,192,194,197],{"class":53,"style":54},[51,188,157],{"style":61},[51,190,191],{"style":69},"sold",[51,193,163],{"style":61},[51,195,196],{"style":166},"'sold'",[51,198,170],{"style":61},[51,200,201,204,207],{"class":53,"style":54},[51,202,203],{"style":69},"} ",[51,205,206],{"style":61},"as ",[51,208,209],{"style":61},"const",[51,211],{"class":53,"style":54},[51,213,214,216,219,222,224,226,229,232,235,238,240],{"class":53,"style":54},[51,215,139],{"style":61},[51,217,218],{"style":61},"type ",[51,220,221],{"style":65},"FindPetsByStatusQueryParamsStatusEnum ",[51,223,148],{"style":61},[51,225,101],{"style":69},[51,227,228],{"style":61},"typeof ",[51,230,231],{"style":57},"findPetsByStatusQueryParamsStatusEnum",[51,233,234],{"style":69},")[",[51,236,237],{"style":61},"keyof typeof ",[51,239,231],{"style":57},[51,241,242],{"style":69},"]",[41,244,246],{"language":43,"filename":87,"code":245,"class":46},"export const findPetsByStatusQueryParamsStatusEnum = {\n  available: 'available',\n  pending: 'pending',\n  sold: 'sold',\n} as const\n\nexport type FindPetsByStatusQueryParamsStatusEnumKey = (typeof findPetsByStatusQueryParamsStatusEnum)[keyof typeof findPetsByStatusQueryParamsStatusEnum]",[34,247,248,152,260,152,272,152,284,152,296,152,304,152,306],{"class":49},[51,249,250,252,254,256,258],{"class":53,"style":54},[51,251,139],{"style":61},[51,253,142],{"style":61},[51,255,145],{"style":57},[51,257,148],{"style":61},[51,259,151],{"style":69},[51,261,262,264,266,268,270],{"class":53,"style":54},[51,263,157],{"style":69},[51,265,160],{"style":69},[51,267,163],{"style":61},[51,269,167],{"style":166},[51,271,170],{"style":61},[51,273,274,276,278,280,282],{"class":53,"style":54},[51,275,157],{"style":61},[51,277,177],{"style":69},[51,279,163],{"style":61},[51,281,182],{"style":166},[51,283,170],{"style":61},[51,285,286,288,290,292,294],{"class":53,"style":54},[51,287,157],{"style":61},[51,289,191],{"style":69},[51,291,163],{"style":61},[51,293,196],{"style":166},[51,295,170],{"style":61},[51,297,298,300,302],{"class":53,"style":54},[51,299,203],{"style":69},[51,301,206],{"style":61},[51,303,209],{"style":61},[51,305],{"class":53,"style":54},[51,307,308,310,312,315,317,319,321,323,325,327,329],{"class":53,"style":54},[51,309,139],{"style":61},[51,311,218],{"style":61},[51,313,314],{"style":65},"FindPetsByStatusQueryParamsStatusEnumKey ",[51,316,148],{"style":61},[51,318,101],{"style":69},[51,320,228],{"style":61},[51,322,231],{"style":57},[51,324,234],{"style":69},[51,326,237],{"style":61},[51,328,231],{"style":57},[51,330,242],{"style":69},[10,332,333,334],{},"👋🏽 ",[335,336,338],"a",{"href":337},"https:\u002F\u002Ftwitter.com\u002Fstijnvanhulle","Stijn Van Hulle",{"title":340,"searchDepth":341,"depth":341,"links":342},"",5,[343],{"id":16,"depth":344,"text":17,"children":345},2,[346,349],{"id":31,"depth":347,"text":348},3,"Different use of z.optional",{"id":119,"depth":347,"text":350},"Add Key suffix to types when using asConst","Release notes for Kubb 4.0 covering new features, breaking changes and upgrade instructions.","md",{"layout":354,"title":5,"description":351,"outline":355,"image":356,"date":357},"doc","deep","\u002Fblog\u002Fv4\u002Fcover.svg","2025-09-22","Introducing Kubb v4",{"layout":354,"outline":355,"image":356,"date":357},true,null,"\u002Fblog\u002Fv4",{"title":5,"description":351},{"loc":362,"lastmod":357},"platform\u002Fapps\u002Fkubb.dev\u002Fcontent\u002Fblog\u002Fv4.md","blog\u002Fv4","UyIHypwaaaO4x5Ht9AIOGarDoM-b9t_NuHV0AQWAFRE",1792886644649]