Start with the browser job
Define the exact moment the extension improves: blocking a reflex, capturing a note, summarizing a page, tracking attention, filling a form, or helping a user decide.
If the extension is not needed inside the browser context, build a web app instead. Extensions earn their complexity only when they use tab context, side panels, storage, content scripts, or browser actions.
Use Manifest V3 deliberately
Manifest V3 is the baseline for new Chrome extensions. Plan around service workers, limited background persistence, explicit permissions, and clear host access.
Keep permissions narrow. Ask for the least access required, explain why each permission exists, and avoid broad host permissions until the user turns on a feature that needs them.
Pick the right surfaces
Use a popup for quick actions, a side panel for sustained work beside the current tab, an options page for configuration, and content scripts only when the page itself must be inspected or modified.
For product-grade extensions, add onboarding, empty states, export, error handling, and a privacy page before launch.
Design for local-first by default
Use Chrome storage or IndexedDB for personal data when cloud sync is not essential. Local processing reduces privacy risk and makes the value proposition easier to trust.
If AI is involved, be explicit about what leaves the device. Bring-your-own-key flows and local preprocessing can reduce surprise and give advanced users more control.