5 Things I Learned Building a Chrome Extension That Watches ChatGPT, Claude & Gemini A developer built a Chrome extension called HTML Deployer that detects HTML code blocks inside ChatGPT, Claude, and Gemini and deploys them to live URLs. Key lessons include using MutationObserver with debouncing for DOM stability, matching structural patterns instead of class names to survive frequent UI updates, scoring candidate code blocks to avoid false positives, explicitly locking down iframe sandbox permissions, and clearly communicating credential handling to build user trust. I spent the last few months building a Chrome extension that detects HTML code blocks inside ChatGPT, Claude, and Gemini and lets you deploy them straight to a live URL. The "deploy" part turned out to be the easy 20%. The hard 80% was reliably watching three completely different, constantly-changing chat UIs without breaking every other week. Here's what actually taught me something. MutationObserver is non-negotiable, but it will still lie to you None of these chat apps render the full response at once — they stream tokens in, which means the DOM you're watching is incomplete almost every time your observer fires. My first version tried to detect a finished