Skip to main content
A multi-part examination of the ways that browser choice has been undermined on today's mobile OSes.
Apple's iOS browser (Safari) and engine (WebKit) are uniquely under-powered. Consistent delays in the delivery of important features ensure the web can never be a credible alternative to its proprietary tools and App Store. This is a bold assertion, and proving it requires examining the record from multiple directions.
Mobile OSes and their most successful apps have drained browser choice of meaning for more than a decade. The situation today is a complex web of intent-subverting cul de sacs that lead users to confusion and loss of control over data. Web developers, meanwhile, face higher costs and reduced ability to escape walled gardens. It's time for the charade to end.
A deep dive into the arguments offered by Apple and others to defend a lack of browser engine choice on iOS. Instead of raising the security floor, Apple has set a cap whilst breeding a monoculture that ensures all iOS browsers are vulnerable to identical attacks, no matter whose icon is on the home screen.
If you live or do business in the UK or the US, what you do in the next seven days could define the web for decades to come. By filing public comments with UK regulators and US legislators this week_ you can change the course of mobile computing more than at any other time in the past decade. Read on for why this moment matters and how to seize the day.
Apple has demonstrated shameless contempt in ignoring the spirit of pro-competition regulation. The web could serve as a counterbalance to this sort of gameplaying, but only if broad, effective, and widely adopted rules are put in place.
Some folks claim that Apple's mandated inadequacy for browsers and their engines is somehow beneficial to the cause of ensuring a diverse pool of web engines. Nothing could be farther from the truth, but to understand why, we need to understand how browsers are funded. With that understanding, we can see that not only has Apple has starved its own browser team of resources, but has done grevious damage to Mozilla along the way.
Many folks imagine that browsers will adopt a feature because it is a standard. This is exactly backwards. This series explores the ways that all parties can continue to make forward progress in a world without immaculate working group conception of new features.
The web standards process fails us too often. This series explores the forces at work, how we're improving the situation, and how you can shape new features more effectively.
It's attractive to think that design can (or should) happen within a formal Working Group. A well-functioning WG should include both developers and implementers, after all. Those groups often have face-to-face meetings, and the path toward standardisation is shortest in those venues! But it doesn't work; not often enough to be useful, anyway.
As long as we continue to build only for wealthy users, the dream of a web for everyone will continue to recede before our eyes, leaving a once vibrant ecosystem a ghost-town. Creating a better web starts with respecting the limits of the hardware and networks that most of the world's users carry. This is a deep dive into those constraints, their progression, and what they mean for web developers and the tool vendors that support them.
What we're doing now isn't working. Not by a long shot.
Performance budgets are an essential but under-appreciated part of product success and team health. Most partners we work with are not aware of the real-world operating environment and make inappropriate technology choices as a result. We set a time budget of less than 5 seconds first-load Time-to-Interactive and less than two seconds for subsequent loads. We further constrain ourselves to a baseline device and network configuration to measure progress. 2017's global baseline is a ~$200 Android device on a 400Kbps link with a 400ms round-trip-time ('RTT'). This translates to ~130-170KB of critical-path resources, depending on composition; the more JS you include, the smaller the bundle must be.
A lot has changed since 2017 we I last estimated a global baseline for total page resource limits of 120-170KiB. Thanks to progress in networks and browsers (but not devices), the new baseline is much more generous: ~100KiB of HTML/CSS/fonts and ~300-350KiB of JS. But the devil's in the footnotes, and modern web development practices push the median page well above these guidelines.
Is there a generic, unform way to think about web performance? What is web performance? What's it for? A humble attempt to answer those very deep questions. [republished]
Despite advances in browser tooling, automated evaluation, lab tools, guidance, and runtimes, modern teams struggle to deliver even decent performance with today's popular frameworks. This is not a technical problem per se. It's a management issue, and one that teams can conquer with the right frame of mind and support.