Build Chrome extensions with the same developer experience you'd expect from a modern web framework. File-based extension surfaces, automatic Manifest V3 generation, React Fast Refresh, routing, TypeScript, and a one-command setup.
No reviews yetBe the first to leave a review for Extro
Maker
📌
Hey Product Hunt 👋
I'm Sahil, creator of Extro.
I started building Extro after noticing Plasmo had largely stopped being maintained. While tools like WXT and CRXJS exist, I wanted a framework that brought a more familiar web development experience to Chrome extensions.
With Extro, you create folders inside src/app and they become extension surfaces automatically. Popup, options, side panel, background scripts, and content scripts are all discovered from your file structure, and Manifest V3 is generated for you.
It also includes file-based routing, dynamic routes, layouts, React Fast Refresh, TypeScript support, and React-powered content scripts with Shadow DOM support.
Extro is open source, MIT licensed, and built solo. It's currently in a pre-stable stage, and there are still quite a few things on the roadmap before the first stable release, including Firefox support and other improvements based on community feedback.
I'd love to hear what extension developers think, what feels missing, and what would make the framework more useful for real-world projects.
Thanks for checking it out ❤️
Report
Tried the one-command setup and had a working extension running in under a minute, which is wild compared to the usual copy-paste boilerplate. The file-based surfaces approach actually makes the manifest feel like it disappears into the background where it belongs.
Report
Maker
@mehmetvmqg Really appreciate you giving it a try! That was exactly the goal. I wanted the manifest to fade into the background so you can focus on building your extension instead of wiring everything together.
Report
Hot reload across extension contexts would be huge, like updating the service worker and popup without losing state or needing to reopen the chrome://extensions page. Most painful part of extension dev right now.
Report
Maker
@idemyfzj That's the direction I'm headed at! Really appreciate for checking it out ❤️
Report
Manifest V3 setup is usually the worst part and this just handled it. Hot reload actually works on extension pages too which caught me off guard in a good way.
Report
Maker
@sasaralwzc3 Thanks for checking it out! The goal is to let developers spend less time thinking about Manifest V3 and extension wiring, and more time building their extension. Ideally, building a Chrome extension should feel as straightforward as building a Next.js app.
Report
honestly the file-based extension surfaces approach is pretty clever, makes manifest v3 setup feel way less painful than it usually is
Report
Maker
@yaarxnp5 Really appreciate you checking it out! Thanks :)
Tried the one-command setup and had a working extension running in under a minute, which is wild compared to the usual copy-paste boilerplate. The file-based surfaces approach actually makes the manifest feel like it disappears into the background where it belongs.
@mehmetvmqg Really appreciate you giving it a try! That was exactly the goal. I wanted the manifest to fade into the background so you can focus on building your extension instead of wiring everything together.
Hot reload across extension contexts would be huge, like updating the service worker and popup without losing state or needing to reopen the chrome://extensions page. Most painful part of extension dev right now.
@idemyfzj That's the direction I'm headed at! Really appreciate for checking it out ❤️
Manifest V3 setup is usually the worst part and this just handled it. Hot reload actually works on extension pages too which caught me off guard in a good way.
@sasaralwzc3 Thanks for checking it out! The goal is to let developers spend less time thinking about Manifest V3 and extension wiring, and more time building their extension. Ideally, building a Chrome extension should feel as straightforward as building a Next.js app.
honestly the file-based extension surfaces approach is pretty clever, makes manifest v3 setup feel way less painful than it usually is