Recent from talks
Nothing was collected or created yet.
Browser extension
View on Wikipedia
A browser extension is a software module for customizing a web browser. Browsers typically allow users to install a variety of extensions, including user interface modifications, cookie management, ad blocking, and the custom scripting and styling of web pages.[1]
Browser plug-ins are a different type of module and no longer supported by the major browsers.[2][3] One difference is that extensions are distributed as source code, while plug-ins are executables (i.e. object code).[2] The most popular browser, Google Chrome,[4] has over 100,000 extensions available[5] but stopped supporting plug-ins in 2020.[6]
History
[edit]Internet Explorer was the first major browser to support extensions, with the release of version 4 in 1997.[7] Firefox has supported extensions since its launch in 2004. Opera and Chrome began supporting extensions in 2009,[8] and Safari did so the following year. Microsoft Edge added extension support in 2016.[9]
API conformity
[edit]In 2015, a community group formed under the W3C to create a single standard application programming interface (API) for browser extensions.[10] While this particular work did not reach fruition,[11] every major browser now has the same or very similar API due to the popularity of Google Chrome.[4][12]
Chrome was the first browser with an extension API based solely on HTML, CSS, and JavaScript. Beta testing for this capability began in 2009,[13][14] and the following year Google opened the Chrome Web Store. As of June 2012, there were 750 million total installations of extensions and other content hosted on the store.[15] In the same year, Chrome overtook Internet Explorer as the world's most popular browser,[16] and its usage share reached 60% in 2018.[17]
Because of Chrome's success, Microsoft created a very similar extension API for its Edge browser, with the goal of making it easy for Chrome extension developers to port their work to Edge.[18] But after three years Edge still had a disappointingly small market share, so Microsoft rebuilt it as a Chromium-based browser.[19][20] (Chromium is Google's open-source project that serves as the functional core of Chrome and many other browsers.) Now that Edge has the same API as Chrome, extensions can be installed directly from the Chrome Web Store.[21]
In 2015, Mozilla announced that the long-standing XUL and XPCOM extension capabilities of Firefox would be replaced with a less-permissive API very similar to Chrome's.[22] This change was enacted in 2017.[23][24] Firefox extensions are now largely compatible with their Chrome counterparts.[25]
Apple was the last major exception to this trend, but support for extensions conforming to the Chrome API was added to Safari for macOS in 2020.[26] Extensions were later enabled in the iOS version for the first time.[27]
In 2021, these browser vendors formed a new W3C community group, called WebExtensions, to "specify a model, permissions, and a common core of APIs".[28] However, Google joined this during its overhaul of Chrome's extension API, known as Manifest V3, which greatly reduces the capability of ad blockers and privacy-related extensions.[29][30][31] Thus the WebExtensions group is viewed by some extension developers as nothing more than Google imposing its Manifest V3 design.[32][33][34]
Unwanted behavior
[edit]Browser extensions typically have access to sensitive data, such as browsing history, and they have the ability to alter some browser settings, add user interface items, or replace website content.[35][36] As a result, there have been instances of malware, so users need to be cautious about what extensions they install.[37][38][39][40]
There have also been cases of applications installing browser extensions without the user's knowledge, making it hard for the user to uninstall the unwanted extension.[41]
Some Google Chrome extension developers have sold their extensions to third-parties who then incorporated adware.[42][43] In 2014, Google removed two such extensions from the Chrome Web Store after many users complained about unwanted pop-up ads.[44] The following year, Google acknowledged that about five percent of visits to its own websites had been altered by extensions with adware.[45][46][47]
References
[edit]- ^ "What are extensions?". MDN Web Docs. Retrieved 5 August 2019.
- ^ a b "Plugin". developer.mozilla.org. 9 September 2022. Retrieved 7 December 2022.
- ^ "Why Browser Plug-Ins Are Going Away and What's Replacing Them". howtogeek.com. 8 January 2014. Retrieved 6 June 2023.
- ^ a b "StatCounter Global Stats". StatCounter. Retrieved 11 November 2020.
- ^ Cimpanu, Catalin. "Half of all Google Chrome extensions have fewer than 16 installs". ZDNet. Retrieved 19 February 2021.
- ^ "Google Chrome 88 released: RIP Flash Player". Retrieved 29 January 2021.
- ^ "Browser Extensions". 15 August 2017. Retrieved 29 September 2020.
- ^ Edwards, Lin; Phys.org. "Google Chrome extensions to be officially released". phys.org. Retrieved 27 April 2023.
- ^ Bright, Peter (18 March 2016). "Edge browser now has extensions in the latest Windows 10 preview". Ars Technica. Condé Nast.
- ^ "Browser Extension Community Group Charter — Browser Extension Community Group". browserext.github.io. Retrieved 14 December 2018.
- ^ "Re: One question from Florian Rivoal on 2017-07-29 (public-browserext@w3.org from July 2017)". lists.w3.org. Retrieved 14 December 2018.
- ^ "Build a cross-browser extension - Mozilla | MDN". developer.mozilla.org. 21 November 2024. Retrieved 10 January 2025.
- ^ "Extensions Status: On the Runway, Getting Ready for Take-Off". Chromium Blog. Retrieved 14 December 2018.
- ^ "Extensions beta launched, with over 300 extensions!". Chromium Blog. Retrieved 14 December 2018.
- ^ Vikas SN (29 June 2012). "The Lowdown: Google I/O 2012 Day 2 – 310M Chrome Users, 425M Gmail & More". MediaNama. Retrieved 14 June 2013.
- ^ "Internet Explorer usage to plummet below 50 percent by mid-2012". 3 September 2011. Archived from the original on 20 November 2011. Retrieved 4 September 2011.
- ^ Statcounter. "Browser Market Share Worldwide | StatCounter Global Stats". gs.statcounter.com. Retrieved 20 October 2018.
- ^ "Porting an extension from Chrome to Microsoft Edge". Microsoft. Retrieved 30 December 2018.
- ^ "Microsoft Edge: Making the web better through more open source collaboration". Windows Experience Blog. 6 December 2018. Retrieved 14 December 2018.
- ^ Keizer, Gregg (8 December 2018). "With move to rebuild Edge atop Google's Chromium, Microsoft raises white flag in browser war". Computerworld. Retrieved 14 December 2018.
- ^ "Add or remove extensions in Microsoft Edge". Microsoft. Retrieved 8 June 2020.
- ^ "The Future of Developing Firefox Add-ons". Mozilla Add-ons Blog. 21 August 2015. Retrieved 15 December 2018.
- ^ "Upcoming Changes in Compatibility Features". Mozilla Add-ons Blog. 10 August 2017. Retrieved 15 December 2018.
- ^ "How to enable legacy extensions in Firefox 57 - gHacks Tech News". www.ghacks.net. 12 August 2017. Retrieved 14 December 2018.
- ^ "Porting a Google Chrome extension". Mozilla. Retrieved 30 December 2018.
- ^ "Safari 14 Release Notes". 2020. Archived from the original on 23 March 2022. Retrieved 4 April 2022.
- ^ Ortolani, Parker (21 September 2021). "Here are the best new Safari extensions to download for iOS 15 and iPadOS 15 (Updated)". 9to5Mac. Retrieved 5 April 2022.
- ^ "WebExtensions Community Group". w3.org. 3 April 2023. Retrieved 24 March 2024.
- ^ Barnett, Daly (9 December 2021). "Chrome Users Beware: Manifest V3 is Deceitful and Threatening". Electronic Frontier Foundation. Retrieved 22 November 2023.
- ^ Amadeo, Ron (1 December 2023). "Chrome's next weapon in the War on Ad Blockers: Slower extension updates". Ars Technica. Retrieved 2 December 2023.
- ^ "Inside the 'arms race' between YouTube and ad blockers". Engadget. 1 December 2023. Retrieved 2 December 2023.
- ^ Stuwe, Cuyler (29 December 2021). "Re: Do not outlaw dynamic code". GitHub.
Nobody outside of Google really has any meaningful sway, since Chrome currently owns nearly all of the market share; Google sets the rules, other people nitpick minor details, and everyone pretends that everyone had a meaningful say.
- ^ "Re: Do not outlaw dynamic code". GitHub. 2 January 2022.
Google has shown no interest whatsoever in deviating from their original plans. So, it's quite clear what's happening here. MV3 is a business decision, not an engineering decision.
- ^ "Re: Manifest v3 background scripts should not be killed when there are active listeners". GitHub. 7 January 2024.
- ^ "Protect User Privacy". Google Chrome Docs. 18 March 2018. Retrieved 15 December 2018.
- ^ "Add-on Policies". MDN Web Docs. Retrieved 15 December 2018.
- ^ "Security firm ICEBRG uncovers 4 malicious Chrome extensions - gHacks Tech News". www.ghacks.net. 16 January 2018. Retrieved 15 December 2018.
- ^ "Google's bad track record of malicious Chrome extensions continues - gHacks Tech News". www.ghacks.net. 11 May 2018. Retrieved 15 December 2018.
- ^ "Chrome Extension Devs Use Sneaky Landing Pages after Google Bans Inline Installs". BleepingComputer. Retrieved 15 December 2018.
- ^ "Google Chrome extensions with 500,000 downloads found to be malicious". Ars Technica. 17 January 2018. Retrieved 30 December 2018.
- ^ "PUP Criteria". Malwarebytes. Retrieved 13 February 2015.
- ^ "Adware vendors buy Chrome Extensions to send ad- and malware-filled updates". Ars Technica. 17 January 2014. Retrieved 20 January 2014.
- ^ Bruce Schneier (21 January 2014). "Adware Vendors Buy and Abuse Chrome Extensions".
- ^ Winkler, Rolfe (19 January 2014). "Google Removes Two Chrome Extensions Amid Ad Uproar". blogs.wsj.com. Wall Street Journal. Retrieved 17 March 2014.
- ^ "Ad Injection at Scale: Assessing Deceptive Advertisement Modifications" (PDF). Archived from the original (PDF) on 5 June 2015.
- ^ "Superfish injects ads into 5 percent of all Google page views". PC World. IDG.
- ^ "Superfish injects ads in one in 25 Google page views". CIO. IDG. Archived from the original on 11 December 2019. Retrieved 16 June 2015.
External links
[edit]Browser extension
View on GrokipediaHistory
Early origins and userscripts
The concept of browser extensions originated in grassroots efforts to customize web browsing through userscripts, small JavaScript programs that users could inject to alter webpage behavior, structure, or content on-the-fly without altering the underlying browser code.[12] These scripts addressed limitations in early browsers, such as inflexible interfaces and lack of native personalization options, by enabling modifications like hiding elements, automating interactions, or adding features directly within the Document Object Model (DOM).[13] A pivotal development occurred with the release of Greasemonkey on December 6, 2004, created by Aaron Boodman as a Firefox extension that managed and executed userscripts safely in isolated contexts.[14] Greasemonkey's open-source nature facilitated rapid community contributions, with users sharing scripts via emerging repositories to fix annoyances like intrusive ads or to enhance usability on sites with poor design, thereby validating the demand for programmable browser augmentation.[15] By 2005, thousands of such scripts proliferated, underscoring how user-driven innovation bypassed browser vendors' initial reluctance toward extensibility amid concerns over security and performance.[13] Parallel experiments emerged in other browsers; Opera introduced its widget system with version 9 on June 20, 2006, permitting users to create and run compact, web-integrated applications that extended browsing capabilities beyond tabs, such as desktop notifications or content aggregators.[16] These pre-extension tools, powered by open-source collaboration, empirically demonstrated the causal benefits of modularity—improved user efficiency and adaptation to evolving web needs—paving the way for standardized frameworks while highlighting the tension between customization freedom and vendor control over browser ecosystems.[12]Rise with major browsers
Google introduced an extensions platform for Chrome in December 2009, releasing it in beta alongside a gallery of more than 300 extensions, which enabled developers to enhance browser functionality through JavaScript-based modifications.[17] This development marked a strategic move to differentiate Chrome in a market dominated by Internet Explorer and Firefox, where extensibility had already proven popular among power users. By centralizing extension discovery and installation, Chrome addressed user demands for customization, fostering rapid developer engagement and contributing to the browser's competitive edge. The launch of the Chrome Web Store in December 2010 further institutionalized extensions by providing a unified marketplace for extensions, themes, and apps, integrated seamlessly with Google's authentication and distribution infrastructure.[18] This ecosystem lock-in accelerated adoption, as extensions became a key selling point for Chrome's minimalist design and performance focus. Empirical evidence of growth emerged quickly: by mid-2011, security analyses examined over 1,100 popular Chrome extensions, reflecting a surge from the initial hundreds and underscoring user-driven demand for features like ad blocking and productivity tools that propelled Chrome's market share from under 5% in 2009 to over 20% by late 2011.[19] In response to Chrome's dominance, Mozilla began transitioning Firefox from its proprietary XUL-based add-on system to WebExtensions in August 2015, prioritizing API compatibility with Chrome to ease porting and sustain developer interest amid declining Firefox usage.[20] WebExtensions debuted in Firefox 45 on March 8, 2016, offering cross-browser portability while preserving Firefox's emphasis on privacy and openness.[21] This evolution highlighted intensifying competition, as browsers vied for ecosystem loyalty through extensible architectures, with Chrome's early lead pressuring rivals to standardize for broader compatibility and innovation.Standardization and Manifest versions
Chrome transitioned browser extensions from Manifest Version 1 to Version 2 between 2012 and 2014, mandating the latter for new submissions by mid-2013 while providing backward compatibility for existing V1 extensions via a minimum Chrome version specification in the manifest.[22] Manifest V2 introduced explicit permissions in the manifest.json file, requiring developers to declare specific hosts, APIs, and resources upfront rather than relying on implicit or runtime grants, which improved security by enabling user review and browser auditing of access scopes before installation. It also added persistent background pages, allowing extensions to maintain long-running scripts for tasks like event monitoring and data processing independent of user interactions with tabs. This shift addressed limitations in V1, such as unstructured access models that risked overreach, while preserving developer flexibility for advanced features like network request interception via APIs such as chrome.webRequest, which balanced extensibility against emerging threats from malicious extensions. The changes reduced arbitrary code execution risks by enforcing declarative configurations, though they still permitted broad capabilities that necessitated ongoing mitigations like store vetting. Post-2015, the WebExtensions API emerged as a cross-browser standard, initially developed by Mozilla for Firefox to mirror Chrome's model and facilitate porting without major rewrites. Announced in August 2015 and experimentally available in Firefox Nightly, it gained stable support in Firefox 45 (March 2016) for core APIs and full maturity by Firefox 57 (November 2017), enabling extensions to run across Chrome, Firefox, and later Edge with minimal adjustments via namespace polyfills like browser.* over chrome.*.[23][24] Microsoft's Edge adopted WebExtensions compatibility upon its Chromium engine switch in January 2020, further diminishing vendor-specific silos. Standardization via WebExtensions curtailed fragmentation by converging on a shared API surface, easing developer burdens and user expectations for consistent behavior, yet it inherited V2's trade-offs: potent interception tools enhanced utility for legitimate uses like ad blocking but amplified potential for abuse, prompting iterative security refinements without curtailing core innovation.[12]Technical Architecture
Core components
Browser extensions employ a modular architecture that separates concerns for web page interaction, persistent background processing, and user interface elements, enabling efficient handling of browser events and user-initiated actions without disrupting the core browsing experience. This design facilitates causal chains where specific components trigger responses to defined events, such as page loads or user clicks, while maintaining isolation from the host browser's primary processes.[25] At the core is the manifest.json file, a required JSON configuration that declares the extension's metadata, including its name, version number, and entry points such as popup interfaces or options pages. This file registers key components like content scripts and background workers, ensuring the browser loads them appropriately upon extension activation. For instance, the "action" or "browser_action" key defines toolbar icons and associated HTML popup files for quick user access; in Manifest V3, extensions can implement custom context menu items for the toolbar (action) icon using the chrome.contextMenus API with the "action" context type, which triggers on right-click and replaces the Manifest V2 "browser_action" context, while left-clicks use "default_popup" in the manifest's "action" key to open a popup or trigger chrome.action.onClicked if omitted.[26] For example, in the service worker:chrome.contextMenus.create({
id: "myItem",
title: "Example Item",
contexts: ["action"]
});
chrome.contextMenus.create({
id: "myItem",
title: "Example Item",
contexts: ["action"]
});
APIs and permissions model
Browser extensions rely on standardized JavaScript APIs, primarily the WebExtensions API, to interact with browser features such as tab management, data storage, and network traffic observation. These APIs, implemented across major browsers including Chrome and Firefox, enable extensions to extend core functionality without direct access to the browser's underlying code. For instance, thechrome.tabs API provides methods to query open tabs, create new ones, update their properties, or capture their content, allowing extensions to automate workflows like tab organization or synchronization. Similarly, the chrome.storage API offers persistent and session-based storage options for extension-specific data, supporting key-value pairs with synchronization across devices via cloud services when permitted.[31] The chrome.webRequest API facilitates monitoring and modification of network requests, including event listeners for request lifecycle stages, though its blocking capabilities have been restricted in newer manifest versions to enhance performance and security.[32]
The permissions model enforces a granular, user-consent-based approach to API access, requiring extensions to declare capabilities in the manifest.json file's permissions array, such as "tabs", "storage", or "webRequest". Upon installation, browsers display these requests to users, who must explicitly approve them, embodying a least-privilege principle that limits potential overreach compared to unrestricted native applications. Host permissions, like "<all_urls>" or specific origin patterns (e.g., "[https](/page/HTTPS)://example.com/*"), further scope access to web content, enabling features such as script injection or request interception while prompting warnings for broad grants.[33] This contrasts sharply with web applications, which remain confined to sandboxed origins without privileges for browser-wide operations or cross-origin modifications, necessitating extension-specific elevations that undergo store review processes to verify legitimacy.
Optional permissions allow runtime requests post-installation via the permissions API, providing flexibility for dynamic features while maintaining user oversight, as denials revoke associated access immediately.[34] This model prioritizes informed consent over default broad access, reducing unintended data exposure, though it relies on users evaluating permission scopes during prompts— a process informed by browser-provided descriptions and warnings for sensitive APIs like those involving cookies or geolocation.[35] In Manifest V3, adopted widely since 2021, permissions integrate with service workers for background execution, further refining the balance by deprecating persistent scripts in favor of event-driven models that align API calls with explicit needs.
