<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>PolicyStack — Blog</title>
  <link>https://policystack.dev</link>
  <description>Privacy policies and headless cookie consent from one TypeScript config. V1 documentation for developers and coding agents.</description>
  <atom:link href="https://policystack.dev/blog/rss.xml" rel="self" type="application/rss+xml" />
  <item>
    <title>Ship a cookie banner and privacy policy in your Wasp app</title>
    <link>https://policystack.dev/blog/wasp-cookie-banner</link>
    <guid isPermaLink="true">https://policystack.dev/blog/wasp-cookie-banner</guid>
    <description>Wasp gives you auth, a database, and deployment out of one config file — but the privacy story is still yours to ship. Wire PolicyStack into the root component and get a consent banner, a privacy policy, and a cookie policy from one TypeScript config.</description>
    <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title>OpenPolicy and OpenCookies are now PolicyStack 1.0</title>
    <link>https://policystack.dev/blog/policystack-v1</link>
    <guid isPermaLink="true">https://policystack.dev/blog/policystack-v1</guid>
    <description>Two projects became one. `@openpolicy/*` and `@opencookies/*` are now `@policystack/*` — one install, one typed config, one provider. 1.0 freezes the public surface: the Document AST, the validator, the jurisdiction table, and the slot contract are stable, and semver finally means something.</description>
    <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title>PolicyStack speaks French, German, Dutch, and Spanish</title>
    <link>https://policystack.dev/blog/policystack-i18n</link>
    <guid isPermaLink="true">https://policystack.dev/blog/policystack-i18n</guid>
    <description>PolicyStack lifts privacy and cookie policies out of English-only. One config, five locales, no string-key lookup — TypeScript is the lookup, and tsc fails the build if a translation is missing a key.</description>
    <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title>Ship a Remix 3 app with consent before your first user</title>
    <link>https://policystack.dev/blog/remix-day-one</link>
    <guid isPermaLink="true">https://policystack.dev/blog/remix-day-one</guid>
    <description>Remix 3 is in beta and most consent tooling was built for the React era. PolicyStack is headless primitives, so it works with Remix&#39;s server-first, non-React runtime out of the box. One TypeScript config drives the cookie banner, the privacy policy, and the cookie policy.</description>
    <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title>Ship a cookie banner in your Astro site without a framework</title>
    <link>https://policystack.dev/blog/astro-cookie-banner</link>
    <guid isPermaLink="true">https://policystack.dev/blog/astro-cookie-banner</guid>
    <description>Astro renders the markup at build time; ~40 lines of vanilla JavaScript wire it to PolicyStack Consent&#39;s headless state machine. No React, no hydration island, no third-party iframe — just progressive enhancement and a banner that&#39;s part of your design system.</description>
    <pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title>Ship a native privacy policy in your Expo app</title>
    <link>https://policystack.dev/blog/expo-privacy-policy</link>
    <guid isPermaLink="true">https://policystack.dev/blog/expo-privacy-policy</guid>
    <description>Define your policy in TypeScript, render it with React Native primitives — no WebView, no markdown parser at runtime — and let Claude keep the third parties list honest as you add SDKs.</description>
    <pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title>Ship a cookie banner with your TanStack app</title>
    <link>https://policystack.dev/blog/tanstack-cookie-banner</link>
    <guid isPermaLink="true">https://policystack.dev/blog/tanstack-cookie-banner</guid>
    <description>Wire a sub-4kb headless consent state machine into your app and render the banner in your own components — with an optional Vite plugin that fails the build on any cookie that isn&#39;t gated.</description>
    <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title>Ship a privacy policy with your TanStack app</title>
    <link>https://policystack.dev/blog/tanstack-privacy-policy</link>
    <guid isPermaLink="true">https://policystack.dev/blog/tanstack-privacy-policy</guid>
    <description>Define your policy in TypeScript, let the Vite plugin compile it at build time, and render it on a route alongside the rest of your app.</description>
    <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
  </item>
</channel>
</rss>
