Userscripts can also run before any content scripts through `@run-at document-start`. With a browser extension, you're giving up portability, security (an extension can wreck a lot more havoc than a site-specific script) and the freedom to publish without being dependant on a "store".