Compatibility means Foil can load and produce a server-verifiable result. It does not mean every browser exposes the same signal surface or behavioral fidelity. Chromium-family browsers currently have the strongest coverage.
Supported versions
| Browser | Minimum Version | Engine |
|---|---|---|
| Chrome | 100+ | Chromium 100 |
| Microsoft Edge | 105+ | Chromium 105 |
| Firefox | 115+ | Gecko (ESR baseline) |
| Desktop Safari | 15.0+ | WebKit |
| Mobile Safari / iPadOS | 15.0+ | WebKit |
| Android OS | 6.0+ | — |
| Chrome on Android | 100+ | Chromium 100 |
| Samsung Internet | 18.0+ | Chromium 105 |
| Brave | 1.37+ | Chromium 100 |
| Legacy browsers (IE, etc.) | — | — |
What Foil requires
In practice, Foil expects a modern browser with:- JavaScript enabled
- WebAssembly support
TextEncoderandTextDecoder- Modern
fetchsupport for API transport - Event APIs used for interaction collection
Rollout guidance
If your traffic mix includes Safari, Firefox, or mobile-heavy traffic:- Start in
reportmode. - Observe result distribution by browser family, using
latest_decision.verdicton list responses ordecision.automation_statuson session-detail responses. - Validate real user flows on your highest-volume browsers and devices.
- Enforce gradually, beginning with the highest-confidence automated sessions and the most abuse-sensitive endpoints.
Embedded browsers and webviews
Foil can run in embedded contexts, but compatibility varies by host app and runtime. If you rely on:- iOS webviews
- Android webviews
- in-app browsers
- Electron or other embedded shells
What’s next
- Browser SDK — loading and initialization
- Testing your integration — simulate bot traffic across browsers
- Going to production — rollout checklist