<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Exo Blog</title><description>Field notes on building browser extensions and browser-native software.</description><link>https://exoframework.com/</link><item><title>Why your MV3 extension keeps dying after 30 seconds</title><link>https://exoframework.com/blog/mv3-service-worker-lifetime/</link><guid isPermaLink="true">https://exoframework.com/blog/mv3-service-worker-lifetime/</guid><description>The Manifest V3 service worker is not a background page — it&apos;s ephemeral by design. Here&apos;s exactly when Chrome kills it, why your timers and state vanish, and the patterns that survive eviction.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>&quot;Extension context invalidated&quot; — what it means and how to fix it</title><link>https://exoframework.com/blog/extension-context-invalidated/</link><guid isPermaLink="true">https://exoframework.com/blog/extension-context-invalidated/</guid><description>This error appears when your extension updates or reloads while a content script is still running on a page. Here&apos;s the exact cause, why it&apos;s so common in development, and the patterns that make content scripts survive it.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate></item><item><title>chrome.storage.local vs sync vs session vs IndexedDB: which to use</title><link>https://exoframework.com/blog/chrome-storage-local-sync-session-indexeddb/</link><guid isPermaLink="true">https://exoframework.com/blog/chrome-storage-local-sync-session-indexeddb/</guid><description>Extensions have four persistence options, each with different quotas, lifetimes, and sync behavior. Here&apos;s a decision guide — what each one is actually for, the quota limits that bite, and when to reach for IndexedDB instead.</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate></item></channel></rss>