# Guideline 2.5.6 - Software Requirements: Non-WebKit Browser Engine Without Entitlement

**Guideline:** 2.5.6 · **Store:** Apple App Store · **Severity:** high · **Fix difficulty:** hard · **Typical turnaround:** 1-3 days

Canonical URL: https://appstorereject.com/rejections/apple/2/guideline-256-software-requirements-non-webkit-browser-engine-without-entitlement

## Description

Apple is rejecting your app because it uses a browser engine other than WebKit for rendering web content, and it does not have the required entitlement. Historically, Apple required all web content rendering on iOS to use WebKit. With iOS 17.4 in the EU (under the Digital Markets Act), Apple introduced a process for alternative browser engines, but it requires a specific entitlement and is limited to EU distribution. Outside the EU, all web browsing and web content display must still use WKWebView or SFSafariViewController, both of which are built on WebKit. This means you cannot ship your own Chromium-based or Gecko-based rendering engine in an App Store app distributed globally. This rejection commonly hits: (1) apps that embed Chromium Embedded Framework (CEF) or similar engines, (2) cross-platform frameworks that accidentally include a non-WebKit renderer, (3) apps attempting to ship an alternative browser globally without the EU-specific entitlement, and (4) apps using deprecated UIWebView (which Apple now rejects separately, but it surfaces as a 2.5.6 concern in some cases).

## Common variations

- App uses non-WebKit browser engine for web content
- App embeds Chromium or alternative rendering engine
- App does not use WebKit framework for web browsing
- Alternative browser engine used without required entitlement
- App must use WKWebView or SFSafariViewController

## Example rejection email

```
Guideline 2.5.6 - Performance - Software Requirements

Your app uses a web browser engine other than WebKit for displaying web content. Specifically, the app embeds a Chromium-based rendering engine for its in-app browser feature.

Apps that browse the web must use the appropriate WebKit framework and WebKit JavaScript. Alternative browser engines are only permitted in the European Union with the required managed entitlement.

Next Steps:
Please revise your app to use WKWebView or SFSafariViewController for all web content display. If you are developing an alternative browser for distribution in the EU, apply for the Web Browser Engine entitlement through the Apple Developer portal.
```

## Resolution steps

## Quick Assessment
- **Risk level:** High
- **Resolution path:** Fix & Resubmit (or apply for EU entitlement if building a browser)
- **Typical turnaround:** 1-3 days

## The Fix

1. **Replace with WKWebView** -- Migrate all web content rendering to WKWebView. This is Apple's modern WebKit-based web view and supports the vast majority of web standards.

2. **Use SFSafariViewController for external links** -- If you're opening external web pages (not your own web app), SFSafariViewController provides the full Safari experience including content blockers and autofill.

3. **Remove embedded engines** -- If your app bundles a Chromium, Gecko, or other non-WebKit engine, remove it from the project. Check Frameworks folder and build phases for non-WebKit rendering libraries.

4. **Check cross-platform frameworks** -- If you're using Electron, .NET MAUI, or similar frameworks, verify the iOS build uses WebKit for rendering. Some frameworks have configuration options for this.

5. **For EU browser developers** -- If you're building a genuine alternative browser for EU distribution, apply for the Web Browser Engine entitlement through developer.apple.com. This requires agreeing to specific terms and is only for apps distributed in the EU.

## Prevention
- Always use WKWebView or SFSafariViewController for web content on iOS
- Audit cross-platform framework configurations to ensure they use WebKit on iOS
- Keep track of Apple's evolving EU browser engine policies

## Appeal guidance

If you are building an alternative browser for EU distribution, explain this and reference the Web Browser Engine entitlement application process. If the non-WebKit engine was included accidentally (e.g., through a cross-platform framework), explain the fix.

## Before / after examples

**Before:** Electron-based app compiled for iOS including the Chromium rendering engine in the app bundle, with a 180MB binary size
**After:** App rebuilt as native iOS app using WKWebView to display the same web-based UI, or rebuilt with Capacitor/Ionic which uses WKWebView on iOS. Binary size reduced to 25MB.
**Why it works:** On iOS, all web rendering must go through WebKit. Cross-platform frameworks that bundle their own engine will be rejected.

## Common questions

**Can you appeal a 2.5.6 rejection?**

If you are building an alternative browser for EU distribution, explain this and reference the Web Browser Engine entitlement application process. If the non-WebKit engine was included accidentally (e.g., through a cross-platform framework), explain the fix.

**How long does this typically take to fix?**

Typical turnaround is 1-3 days (difficulty: hard). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-256-software-requirements-non-webkit-browser-engine-without-entitlement*