<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Zod on Pi Stack</title>
    <link>https://www.pistack.xyz/tags/zod/</link>
    <description>Recent content in Zod on Pi Stack</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 12 Aug 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.pistack.xyz/tags/zod/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Zod vs Valibot vs Yup in 2026: Which TypeScript Schema Library Should You Actually Use?</title>
      <link>https://www.pistack.xyz/posts/2026-08-12-zod-vs-valibot-vs-yup-typescript-schema-validation-comparison/</link>
      <pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://www.pistack.xyz/posts/2026-08-12-zod-vs-valibot-vs-yup-typescript-schema-validation-comparison/</guid>
      <description>&lt;p&gt;You ship a new API endpoint, the client sends a request body, and the first thing your code does is pray that &lt;code&gt;email&lt;/code&gt; is actually an email. Every TypeScript project eventually hits the same wall: TypeScript types vanish at runtime, so the data arriving at your server, your form, or your database adapter is untrusted until proven otherwise. Runtime schema validation is the industry answer, but the three dominant libraries — &lt;strong&gt;Zod (43,450 stars), Yup (23,673 stars), and Valibot (8,926 stars)&lt;/strong&gt; — take radically different approaches to the same problem. Pick wrong and you are stuck with a dependency that bloats your bundle, slows your type checking, or fights your framework&amp;rsquo;s conventions for years.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
