Safari's WebKit Bugs Are a Business Model, Not a Mistake
A single WebKit bug breaks every browser on every iPhone worldwide because Apple mandates its engine on iOS. Teams shipping web apps to mobile users cannot treat Safari as an edge case; they must budget for engine-specific hacks that no AI code generator will produce correctly.
WebKit's lag on key APIs like Web Push, PWA installation, and WebRTC is not an engineering failure. Apple deliberately keeps Safari just capable enough to browse but never good enough to replace native apps, protecting the App Store's 30% cut. On iOS, every browser—Chrome, Firefox, Edge—is forced to use WebKit underneath, so a single engine bug affects over a billion devices with no escape hatch.
Frontend teams pay the price in concrete, recurring breakage: `100vh` miscalculates viewport height by including the toolbar, the `Date` constructor rejects space-separated timestamps, `overflow: hidden` on body is ignored by the rubber-band scroll effect, and the notch forces exclusive `safe-area-inset` variables. The CSS standard added `dvh`, `svh`, and `lvh` units specifically to patch Safari's viewport behavior.
Nearly 20% of global browser traffic runs on WebKit, and the share is higher among iOS users in China. The EU's Digital Markets Act is pushing Apple to allow third-party engines in Europe, but the restriction remains locked down in mainland China as of 2026.
Safari's bugs are not random quality issues; they form a pattern of strategic neglect concentrated on APIs that narrow the gap between web and native apps.
The forced WebKit monopoly on iOS means Apple's engine decisions are not just a Safari problem—they are a platform-wide constraint that no competing browser can bypass.
The creation of `dvh`, `svh`, and `lvh` in the CSS spec is a rare case where a single vendor's implementation forced the entire standards body to add workaround units.
AI code generators trained on Chrome-dominated datasets will systematically miss Safari-specific breakage, making experienced frontend judgment harder to automate than it appears.
The frustration is visceral: iOS development is a constant source of pain that invites cursing. A separate thread pushes back against the backend stereotype that frontend work is trivial just because the output is visible.
My scalp tingles. Let the backend devs say frontend is easy! Just because you can see the interface, that's what they call easy?
It's not easy.