⏱️ Lectura: 10 min
Firefox for iOS can’t block ads the way it does on your computer: on the iPhone, it’s Apple who decides what rules any browser can apply against advertising.
📑 En este artículo
- TL;DR
- What content blockers are and why Firefox depends on them
- Background and history
- Technical details: how a blocking rule works
- How to try it today
- Impact and analysis
- What’s next
- Frequently Asked Questions
- Does Firefox for iOS use the same engine as desktop Firefox?
- Do I need a Firefox-specific extension, or does any Safari blocker work?
- Do content blockers filter ads inside apps like Instagram or a game?
- Can I use uBlock Origin in Firefox for iOS?
- Does anything change under the EU’s DMA regulation?
- How do I know if my content blocker is actually active?
- References
The reason comes down to a single Apple rule: every browser on iOS runs on WebKit, so neither Firefox nor Chrome brings its own request-blocking engine. Instead, they rely on content blockers, extensions Apple designed for Safari that Firefox adopted as soon as it arrived on the App Store.
TL;DR
- Apple requires every browser on iOS to use WebKit (App Store Review Guideline 2.5.6), which rules out webRequest-style extensions.
- Firefox for iOS uses Apple’s Content Blocker API, introduced in iOS 9 (2015), instead of the desktop WebExtensions engine.
- Content blockers are activated from iOS Settings and then selected inside Firefox, not the other way around.
- Known compatible apps: 1Blocker, AdGuard, Wipr, and AdBlock Plus for iOS.
- Blocking rules are declarative: a static JSON with trigger and action, not code that runs on every request.
- Firefox Focus, Mozilla’s sister app, has built-in tracking protection without needing to install a separate extension.
- Since iOS 17.4 (2024), the EU’s Digital Markets Act requires Apple to allow alternative browser engines, though only within the EU.
What content blockers are and why Firefox depends on them
On Windows, macOS, or Linux, Firefox uses its own Gecko engine and an extension system that can read, modify, or cancel every network request in real time. That’s how a blocker like uBlock Origin works on desktop: it intercepts the request before it goes out, checks it against filter lists, and decides whether to let it through.
On iOS that’s impossible. The App Store Review Guidelines require any app that displays web content to use the system’s rendering engine, meaning WebKit, and prohibit third-party browsers from bringing their own engine. Firefox for iOS therefore doesn’t run Gecko: it runs WebKit, the same engine as Safari.
As a result, Firefox also can’t expose the webRequest API that desktop extensions use. Apple filled that gap with content blockers: a special category of system extension that doesn’t run code while you browse, but instead hands over a list of rules in JSON ahead of time. WebKit compiles that list and applies it itself, without the extension ever seeing what pages you visit. It’s a design built for privacy: the blocker never receives your browsing history, it only declares rules and the operating system runs them on its own.
Background and history
Apple introduced content blocking in 2015 alongside iOS 9, initially exclusive to Safari. That same year, the first apps in this category appeared on the App Store, including 1Blocker and Crystal, taking advantage of an API that until then hadn’t existed for third parties.
Firefox arrived on iOS that same November of 2015, already required to build itself on top of WebKit from day one: Mozilla had no alternative, since Apple never allowed Gecko to run on the system. Over time, Mozilla added support so the same content blockers originally designed for Safari could also be activated inside Firefox, something users must enable manually since it doesn’t come turned on by default.
The picture changed partially with the European Union’s Digital Markets Act: since iOS 17.4, released in 2024, Apple allows third-party browsers to use their own rendering engine, but only for users within the EU and under a compliance process that has meant most browsers, Firefox included, still haven’t fully migrated. Outside the European Union, the requirement to use WebKit remains intact.
Technical details: how a blocking rule works
A content blocker isn’t a script that runs on every request, it’s a JSON file with a list of trigger/action objects. The trigger describes what traffic should match (by domain, by resource type, by regular expression in the URL) and the action describes what to do if it matches: block the entire request, hide an element with CSS, or block cookies.
The simplest possible example is a rule that blocks absolutely everything, useful only for testing that the mechanism is active:
[
{
"trigger": { "url-filter": ".*" },
"action": { "type": "block" }
}
]
That block blocks any resource the page loads, so in practice it only serves to verify that a content blocker is running. A real rule is more selective, targets known ad domains, and complements the blocking with hiding leftover elements:
[
{
"trigger": {
"url-filter": "^https?://(www\\.)?googlesyndication\\.com",
"resource-type": ["script", "image"]
},
"action": { "type": "block" }
},
{
"trigger": {
"url-filter": ".*",
"if-domain": ["ejemplo-noticias.com"]
},
"action": {
"type": "css-display-none",
"selector": ".banner-publicidad, .anuncio-lateral"
}
}
]
The first rule blocks scripts and images coming from Google’s ad domain; the second doesn’t block the request but instead hides the banner container with CSS on a specific site, useful when the ad has already loaded but left an empty visual gap.
📌 Note: since the rules are compiled before browsing starts, WebKit applies them without running any additional JavaScript per request. That avoids the cost of having an interpreter running on every page load, but it also means the blocker can’t make dynamic decisions: it can’t query a live remote list or count how many times a rule matched beyond what the app itself shows on its statistics screen.
How to try it today
Activating content blockers in Firefox for iOS doesn’t require installing anything from the command line, it’s an iPhone or iPad app. The steps:
- Install a content blocker app from the App Store: 1Blocker, AdGuard, or Wipr are the most used.
- Open Settings in iOS, not Firefox, and enable the extension inside that app’s section (each blocker app has its own toggle in Settings).
- Open Firefox, go to its Settings menu, and look for the content blocking option to select which of the installed blockers to use.
- Verify by opening a site with a lot of advertising and comparing it against the same site with the blocker turned off; most of these apps also show, on their own screen, a counter of blocked requests that confirms the extension is active.
Content blockers can also be combined: activating more than one at a time is possible on iOS, although some apps warn that overlapping rules can break the design of certain sites if two blockers hide the same container in different ways.
Impact and analysis
The WebKit limitation isn’t exclusive to Firefox: it equally affects Chrome, Edge, or any other third-party browser on iOS, because they all share the same mandatory engine. What changes between apps is the interface for choosing the blocker, not the underlying mechanism.
| Option | When to use it | Advantage | Limitation |
|---|---|---|---|
| Content blocker (1Blocker, AdGuard, Wipr) | Browsing within Safari or Firefox on iOS | Site-specific rules, easy to pause by domain | Doesn’t filter ads inside native apps, only browser traffic |
| DNS profile or local VPN (AdGuard DNS, NextDNS) | Wanting to block ads across every app on the phone | System-wide coverage | Occupies the device’s single active VPN connection and can’t hide CSS elements |
| Firefox Focus | Short, private browsing sessions with nothing to configure | Tracking protection enabled by default, no separate extension to install | Doesn’t handle multiple tabs, meant for one-off use |
The real trade-off is that a content blocker only sees traffic that passes through the browser engine. An ad shown inside a native app, like a social media feed or a game with a built-in ad SDK, never passes through WebKit, so no blocker of this kind can touch it. That’s where DNS-level or VPN blocking comes in, filtering by domain before the connection leaves the device, regardless of which app originated it.
This also explains why uBlock Origin never made it to iOS: its architecture depends on intercepting requests in real time via webRequest, the same API Apple doesn’t expose to third-party extensions. This isn’t a decision made by Mozilla or the uBlock community, it’s a platform restriction that applies equally to any project attempting to port it.
What’s next
The European Digital Markets Act opened the door for a browser like Firefox to someday run its own Gecko engine on iOS within the EU and bring back webRequest-style extensions. That would resolve the limitation described in this article at the root, at least for European users, but it means Mozilla would have to rebuild and maintain an iOS version with a different engine than the one already running in the rest of the world, a considerable engineering effort no major browser has completed so far. Outside the European Union, there’s no regulatory change underway that would modify the requirement to use WebKit.
📖 Summary on Telegram: View summary
Try it yourself: install 1Blocker or AdGuard from the App Store, enable it in iOS Settings and then in Firefox, and open a page with ads to see the difference in under a minute.
Frequently Asked Questions
Does Firefox for iOS use the same engine as desktop Firefox?
No. On desktop it uses Gecko, Mozilla’s own engine. On iOS it’s required to use WebKit under Apple’s rules.
Do I need a Firefox-specific extension, or does any Safari blocker work?
Any content blocker app installed on the system works. It’s activated the same way for Safari and Firefox, each with its own selector.
Do content blockers filter ads inside apps like Instagram or a game?
No. They only affect traffic that passes through the WebKit browser engine, not traffic generated by native apps with their own ad SDK.
Can I use uBlock Origin in Firefox for iOS?
There’s no version of uBlock Origin for iOS because it depends on the webRequest API, which Apple doesn’t expose to third-party extensions on that platform.
Does anything change under the EU’s DMA regulation?
In the European Union, Apple has allowed alternative browser engines since iOS 17.4, but so far no major browser has fully migrated to its own engine in that region.
How do I know if my content blocker is actually active?
Most of these apps show their own counter of blocked requests on their main screen; if that counter goes up as you browse, the extension is working.
References
- Mozilla Support: official guide on blocking ads in Firefox for iOS.
- Apple Developer: App Store Review Guidelines, section on browser engine requirements.
- Wikipedia: history and engine version of Firefox for iOS.
- Wikipedia: Digital Markets Act and its effect on alternative browser engines in the EU.
📱 Enjoying this content? Follow @programacion on Telegram for daily tech content in Spanish: quick summaries, fresh content every day.
Imagen destacada: Foto de Sahej Brar en Unsplash
0 Comments