<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>CtroEnv Blog</title>
    <description>Release notes, changelogs, and announcements for CtroEnv.</description>
    <link>https://ctroenv.vercel.app/blog</link>
    <language>en</language>
    <lastBuildDate>Wed, 01 Jul 2026 03:40:57 GMT</lastBuildDate>
    <atom:link href="https://ctroenv.vercel.app/blog/rss.xml" rel="self" type="application/rss+xml"/>
    
    <item>
      <title><![CDATA[Reactive Environment Variables with watchEnv]]></title>
      <description><![CDATA[Long-running processes can now react to environment variable changes at runtime — no restart required.]]></description>
      <link>https://ctroenv.vercel.app/blog/watch-env-reactivity</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/watch-env-reactivity</guid>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>features</category>
      <category>feature</category>
      <category>guide</category>
    </item>
  

    <item>
      <title><![CDATA[Build-Time vs Runtime Validation]]></title>
      <description><![CDATA[When to validate env vars during build, at startup, and in CI.]]></description>
      <link>https://ctroenv.vercel.app/blog/build-vs-runtime-validation</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/build-vs-runtime-validation</guid>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>patterns</category>
    </item>
  

    <item>
      <title><![CDATA[Schema Composition for Library Authors]]></title>
      <description><![CDATA[Publish reusable env schemas from your library so consumers can extend them.]]></description>
      <link>https://ctroenv.vercel.app/blog/schema-composition-for-library-authors</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/schema-composition-for-library-authors</guid>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>deep-dives</category>
      <category>guide</category>
      <category>advanced</category>
    </item>
  

    <item>
      <title><![CDATA[Using CtroEnv in Deno and Bun]]></title>
      <description><![CDATA[CtroEnv detects Deno and Bun environments automatically — no configuration needed.]]></description>
      <link>https://ctroenv.vercel.app/blog/deno-and-bun-support</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/deno-and-bun-support</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>deno</category>
      <category>bun</category>
    </item>
  

    <item>
      <title><![CDATA[Performance and Bundle Size]]></title>
      <description><![CDATA[CtroEnv's zero-dependency core is 6.5 KB gzipped — here's how it stays lean.]]></description>
      <link>https://ctroenv.vercel.app/blog/performance-and-bundle-size</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/performance-and-bundle-size</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>deep-dives</category>
      <category>guide</category>
      <category>performance</category>
    </item>
  

    <item>
      <title><![CDATA[Using CtroEnv on Cloudflare Workers]]></title>
      <description><![CDATA[Validate environment variables in Cloudflare Workers with workersSource.]]></description>
      <link>https://ctroenv.vercel.app/blog/cloudflare-workers</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/cloudflare-workers</guid>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>cloudflare</category>
    </item>
  

    <item>
      <title><![CDATA[Error Handling Patterns with CtroEnv]]></title>
      <description><![CDATA[Graceful degradation, per-environment handling, and custom error reporting.]]></description>
      <link>https://ctroenv.vercel.app/blog/error-handling-patterns</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/error-handling-patterns</guid>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>patterns</category>
    </item>
  

    <item>
      <title><![CDATA[TypeScript Inference Tricks with CtroEnv]]></title>
      <description><![CDATA[How CtroEnv infers exact types from validators without manual type definitions.]]></description>
      <link>https://ctroenv.vercel.app/blog/typescript-inference-tricks</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/typescript-inference-tricks</guid>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>deep-dives</category>
      <category>guide</category>
      <category>typescript</category>
    </item>
  

    <item>
      <title><![CDATA[Environment Variables in Next.js]]></title>
      <description><![CDATA[Server/client split, build-time validation, and secret access with the CtroEnv Next.js adapter.]]></description>
      <link>https://ctroenv.vercel.app/blog/nextjs-adapter-patterns</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/nextjs-adapter-patterns</guid>
      <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>nextjs</category>
    </item>
  

    <item>
      <title><![CDATA[Node.js Adapter Deep Dive]]></title>
      <description><![CDATA[How loadEnv() parses .env files, handles interpolation, and integrates with process.env.]]></description>
      <link>https://ctroenv.vercel.app/blog/node-adapter-deep-dive</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/node-adapter-deep-dive</guid>
      <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>deep-dives</category>
      <category>guide</category>
      <category>node</category>
    </item>
  

    <item>
      <title><![CDATA[Build-Time Env Validation with Vite]]></title>
      <description><![CDATA[Catch misconfigured env vars during the Vite build with ctroenvPlugin.]]></description>
      <link>https://ctroenv.vercel.app/blog/vite-build-time-validation</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/vite-build-time-validation</guid>
      <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>vite</category>
    </item>
  

    <item>
      <title><![CDATA[Chain Order: The #1 Gotcha in CtroEnv]]></title>
      <description><![CDATA[Why string().secret().url() fails at runtime and how to avoid it.]]></description>
      <link>https://ctroenv.vercel.app/blog/chain-order-gotcha</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/chain-order-gotcha</guid>
      <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>tips</category>
      <category>guide</category>
      <category>debugging</category>
    </item>
  

    <item>
      <title><![CDATA[Building Custom Validators]]></title>
      <description><![CDATA[Extend CtroEnv with your own validator factories using createValidator and applyChain.]]></description>
      <link>https://ctroenv.vercel.app/blog/custom-validators</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/custom-validators</guid>
      <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>advanced</category>
    </item>
  

    <item>
      <title><![CDATA[Proxy Traps Deep Dive]]></title>
      <description><![CDATA[How CtroEnv's Proxy protects secret values from accidental exposure.]]></description>
      <link>https://ctroenv.vercel.app/blog/proxy-traps-deep-dive</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/proxy-traps-deep-dive</guid>
      <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>deep-dives</category>
      <category>guide</category>
      <category>security</category>
      <category>advanced</category>
    </item>
  

    <item>
      <title><![CDATA[CI/CD Patterns for Environment Validation]]></title>
      <description><![CDATA[Catch missing env vars before they reach production with ctroenv check and validate.]]></description>
      <link>https://ctroenv.vercel.app/blog/cicd-env-validation</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/cicd-env-validation</guid>
      <pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>ci-cd</category>
    </item>
  

    <item>
      <title><![CDATA[Debugging Environment Variable Errors]]></title>
      <description><![CDATA[Understand every CtroEnv error message and how to fix it.]]></description>
      <link>https://ctroenv.vercel.app/blog/debugging-env-errors</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/debugging-env-errors</guid>
      <pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>debugging</category>
    </item>
  

    <item>
      <title><![CDATA[Migrating from dotenv to CtroEnv]]></title>
      <description><![CDATA[Replace scattered process.env access with a single typed schema.]]></description>
      <link>https://ctroenv.vercel.app/blog/migrating-from-dotenv</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/migrating-from-dotenv</guid>
      <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>migration</category>
    </item>
  

    <item>
      <title><![CDATA[Testing Your Environment Variables with CtroEnv]]></title>
      <description><![CDATA[Use objectSource() to test env validation without touching process.env.]]></description>
      <link>https://ctroenv.vercel.app/blog/testing-env-vars</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/testing-env-vars</guid>
      <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>testing</category>
    </item>
  

    <item>
      <title><![CDATA[Composite Source Detection — Turbopack and Client-Side Compatibility]]></title>
      <description><![CDATA[How detectSource() now prefers import.meta.env for dynamic NEXT_PUBLIC access in Next.js 16 Turbopack client bundles.]]></description>
      <link>https://ctroenv.vercel.app/blog/composite-source-detection</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/composite-source-detection</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>releases</category>
      <category>release</category>
      <category>tech-deep-dive</category>
    </item>
  

    <item>
      <title><![CDATA[Environment Variables in Monorepos]]></title>
      <description><![CDATA[Schema composition for reusable env definitions across monorepo packages with extendSchema.]]></description>
      <link>https://ctroenv.vercel.app/blog/monorepo-env</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/monorepo-env</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>monorepo</category>
    </item>
  

    <item>
      <title><![CDATA[Protecting Secrets at Runtime]]></title>
      <description><![CDATA[Runtime secret masking prevents accidental leaks of JWT secrets, API keys, and database credentials.]]></description>
      <link>https://ctroenv.vercel.app/blog/secret-masking</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/secret-masking</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
      <category>security</category>
    </item>
  

    <item>
      <title><![CDATA[Turbopack Compat, Better Types, and Quality Improvements]]></title>
      <description><![CDATA[Eager validation for Turbopack, const type parameter for pick(), and string | undefined for env.meta.get().]]></description>
      <link>https://ctroenv.vercel.app/blog/turbopack-and-quality</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/turbopack-and-quality</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>releases</category>
      <category>release</category>
      <category>patch</category>
    </item>
  

    <item>
      <title><![CDATA[v1.1.0 — Secret Masking & Schema Composition]]></title>
      <description><![CDATA[Runtime secret masking, schema composition for monorepos, and universal AI agent guide.]]></description>
      <link>https://ctroenv.vercel.app/blog/v1-1-0</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/v1-1-0</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>releases</category>
      <category>release</category>
      <category>minor</category>
    </item>
  

    <item>
      <title><![CDATA[v1.1.1 — Bug Fixes & Quality Improvements]]></title>
      <description><![CDATA[Fixes for env.meta, Next.js server-only key guard, CLI stderr, and boolean validator polish.]]></description>
      <link>https://ctroenv.vercel.app/blog/v1-1-1</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/v1-1-1</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>releases</category>
      <category>release</category>
      <category>patch</category>
    </item>
  

    <item>
      <title><![CDATA[v1.2.0 — JSON Config, Env File Parsing, CLI Improvements]]></title>
      <description><![CDATA[Smarter env file parsing, JSON configuration support, and check --strict for value validation.]]></description>
      <link>https://ctroenv.vercel.app/blog/v1-2-0</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/v1-2-0</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>releases</category>
      <category>release</category>
      <category>minor</category>
    </item>
  

    <item>
      <title><![CDATA[Why CtroEnv?]]></title>
      <description><![CDATA[Bring the same rigor from your type system to the environment variables your app depends on.]]></description>
      <link>https://ctroenv.vercel.app/blog/why-ctroenv</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/why-ctroenv</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>guides</category>
      <category>guide</category>
    </item>
  

    <item>
      <title><![CDATA[v1.0.1 — Polish & Developer Experience]]></title>
      <description><![CDATA[Error message refinement, performance benchmarks, and bundle size optimization.]]></description>
      <link>https://ctroenv.vercel.app/blog/v1-0-1</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/v1-0-1</guid>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>releases</category>
      <category>release</category>
      <category>patch</category>
    </item>
  

    <item>
      <title><![CDATA[v1.0.0 — Type-Safe Environment Variables for TypeScript]]></title>
      <description><![CDATA[Initial release of CtroEnv: define, validate, and infer types for environment variables with zero runtime dependencies.]]></description>
      <link>https://ctroenv.vercel.app/blog/v1-0-0</link>
      <guid isPermaLink="true">https://ctroenv.vercel.app/blog/v1-0-0</guid>
      <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
      <author>Ctrotech</author>
      <category>releases</category>
      <category>release</category>
    </item>
  
  </channel>
</rss>