The user-facing parts.
WHAT SURFACES EXIST
A popup, opened from the toolbar An options page A side panel Pages opened in a tab Elements injected into pages Context menu entries
WHAT A POPUP SUITS
Quick actions and status.
WHAT TO KNOW ABOUT IT
It closes when focus moves, losing any state not persisted.
WHAT THAT MEANS
Do not put long tasks in it.
WHAT AN OPTIONS PAGE SUITS
Configuration.
WHAT TO PERSIST
Every setting, in extension storage.
WHAT TO BE CAREFUL WITH WHEN INJECTING INTO PAGES
Styles conflicting with the page Elements obscuring content Breaking the page's own behaviour
WHAT TO DO ABOUT STYLE CONFLICTS
Scope styles tightly, or use an isolated container.
WHAT TO RESPECT
The page's appearance, and the user's attention.
WHAT TO AVOID
Injecting advertising Modifying content in ways the user did not ask for
WHAT TO PROVIDE
A clear way to disable the extension's effect on a page.
WHAT TO TEST
On pages that differ structurally, and on pages that change frequently.