Which Browser First Supported Userscripts Natively?
Opera was the first major web browser to offer native support for userscripts, introducing a feature known as User JavaScript in Opera 8 in April 2005. While Firefox popularized userscript customization around the same timeframe through third-party extensions like Greasemonkey, Opera built client-side JavaScript execution capabilities directly into its browser settings without requiring any external plugins or extensions.
The Rise of Opera’s User JavaScript
During the mid-2000s, web browsers relied heavily on add-ons to alter web pages dynamically. Opera Software bypassed the need for add-ons by embedding native script execution into the Presto rendering engine.
By defining a dedicated local folder within the browser settings,
users could drop .js files into a directory, and Opera
would automatically run those scripts on matching websites upon
loading.
Opera Native Scripts vs. Extension-Based Solutions
While Firefox became famous for userscripts, its functionality relied entirely on third-party tools. Comparing the early approaches highlights key differences in early custom browser scripting:
| Feature | Opera (User JavaScript) | Firefox (Greasemonkey) |
|---|---|---|
| Support Type | Native (Built directly into the OS/browser core) | Extension-based (Requires add-on installation) |
| Launch Era | Early 2005 (Opera 8) | Late 2004 / Early 2005 (Extension framework) |
| Script Execution | Local directory scanning | Visual script manager UI |
| Configuration | Native preference menu (opera:config) |
Third-party extension manager |
Later Native Implementations in Other Browsers
Following Opera’s lead, other browser vendors eventually integrated native or near-native capabilities to manage custom JavaScript:
- Google Chrome: Introduced built-in support for
installing
.user.jsfiles as extensions natively starting in Chrome 4 (released in 2010). - Modern Browsers: Modern Chromium and WebKit
browsers have largely shifted away from pure native file-system script
directories, opting instead for standardized extension APIs (like
Manifest V3
userScriptsAPIs) managed through extension frameworks like Tampermonkey or Violentmonkey.