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 conversation centers on concrete, recurring Safari bugs that make front-end development painful. A detailed list of high-frequency pitfalls—viewport units, fixed positioning, date parsing, and syntax support—is offered alongside practical workarounds. A separate point flags a specific layout inconsistency where em-based positioning fails in Safari while working correctly in other browsers.
The pitfalls in Safari are endless. Here are a few high-frequency minefields to add: ① 100vh in iOS Safari includes the address bar height; use dvh or a JS fallback. ② position:fixed goes completely off when the keyboard pops up; on iOS, try switching to an absolute+transform approach. ③ Date parsing is format-sensitive; dash-format dates in old Safari directly result in Invalid Date. Use dayjs uniformly, don't write raw code. ④ For new syntax, check its Safari support on caniuse before pushing to production. It's recommended that the team maintains a Safari pitfall checklist in the code review checklist—it saves way more time than firefighting afterwards.
Thanks [heart hands]
I feel this deeply. Safari is called the new-age IE. For positioning properties like left and top, when using em as the unit, Chrome and Firefox display in the correct position, but Safari doesn't.
Yes, this issue is worth discussing.