{"id":5,"date":"2025-03-09T06:29:20","date_gmt":"2025-03-09T06:29:20","guid":{"rendered":"https:\/\/www.w3.org\/community\/high-perf-baseline\/?p=5"},"modified":"2025-03-09T06:29:20","modified_gmt":"2025-03-09T06:29:20","slug":"a-proposal-for-high-performance-web","status":"publish","type":"post","link":"https:\/\/www.w3.org\/community\/high-perf-baseline\/2025\/03\/09\/a-proposal-for-high-performance-web\/","title":{"rendered":"A Proposal for High-Performance Web"},"content":{"rendered":"\n<p>The Web was born 35 years ago, back when desktop computers were the main way to get online. Today, mobile internet and touchscreens dominate. To keep up with this shift, the Web needs some changes.<\/p>\n\n\n\n<p>Let\u2019s start by comparing the old PC internet to today\u2019s mobile internet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What\u2019s Changed?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. How We Access the Internet<\/h3>\n\n\n\n<p>In the desktop era, browsers were the<em>&nbsp;<\/em>gateway to the internet. People used search engines or navigation sites to find stuff, and websites were linked together by hyperlinks (remember that term?).<\/p>\n\n\n\n<p>Now, in the mobile world, the entry points are app icons on your phone and push notifications. Browsers? Most people don\u2019t bother with them anymore. Typing URLs by hand feels clunky, and who even remembers more than a couple of addresses?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Where Web Traffic Comes From<\/h3>\n\n\n\n<p>User habits have shifted, and so has web traffic. It\u2019s moved from browsers to inside apps\u2014think social media, news feeds, or e-commerce platforms. These apps still use Web tech (like H5 pages), but they\u2019re not open internet sites anymore. They\u2019re custom pages locked inside each app\u2019s ecosystem. This weakens the Web\u2019s interconnectedness.&nbsp;<\/p>\n\n\n\n<p>So, in the mobile era, the internet isn\u2019t really a \u201cweb\u201d anymore\u2014it\u2019s more like a chain of isolated islands. Apps prioritize keeping users inside rather than letting them jump around.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Looking at the Web Through a Mobile Lens<\/h2>\n\n\n\n<p>Despite all these changes, Web standards haven\u2019t evolved much.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. PC-First, Mobile as an Afterthought<\/h3>\n\n\n\n<p>The Web was built for desktops\u2014mice and keyboards ruled the day. Mobile devices, with fingers and touchscreens, work totally differently. Features like long list scrolling, gesture controls, and smooth page transitions? The Web doesn\u2019t have them natively.<\/p>\n\n\n\n<p>The most the Web has done for mobile is make sure desktop pages work on phones. That makes sense\u2014smartphones didn\u2019t take over overnight, and early on, people just wanted to view PC sites on their tiny screens. W3C did a ton of compatibility work for that, like adding zoom effects so small phone screens could handle desktop layouts.<\/p>\n\n\n\n<p>Even the forward\/back buttons from PC browsers got copied over to mobile. But if you look at native apps, none of them use zoomable pages or arrow buttons for navigation. That\u2019s not mobile-friendly. Today, with mobile traffic calling the shots, it\u2019s backward to keep patching the Web to fit phones. Mobile isn\u2019t the guest anymore\u2014it\u2019s the host. Tons of apps exist only on mobile, no desktop version in sight. Compatibility patches feel outdated now.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Performance Problem<\/h3>\n\n\n\n<p>If Web pages performed as well as native apps, we wouldn\u2019t have so many cross-platform frameworks like React Native or Flutter.&nbsp;Their popularity is proof the Web\u2019s performance isn\u2019t cutting it.<\/p>\n\n\n\n<p>Performance gripes are old news, so I\u2019ll keep it short with some numbers:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A default\u00a0<code>&lt;div&gt;<\/code>\u00a0comes with 246 properties and 82 methods.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HTML has 139 tags. Compare that to React Native\u2019s 5 default tags.<\/li>\n<\/ul>\n\n\n\n<p>Analyze tag usage on core pages of major sites. Turns out, they don\u2019t use that many:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Website<\/td><td>Tag Types<\/td><\/tr><tr><td>GitHub<\/td><td>45<\/td><\/tr><tr><td>Facebook<\/td><td>33<\/td><\/tr><tr><td>Google<\/td><td>38<\/td><\/tr><tr><td>YouTube<\/td><td>26<\/td><\/tr><tr><td>X.com<\/td><td>31<\/td><\/tr><tr><td>Amazon<\/td><td>39<\/td><\/tr><tr><td>QQ.com<\/td><td>24<\/td><\/tr><tr><td>VS Code<\/td><td>24<\/td><\/tr><tr><td><strong>Average<\/strong><\/td><td><strong>32<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>(These Include 8 non-UI tags like\u00a0<code>&lt;html&gt;<\/code>,\u00a0<code>&lt;head&gt;<\/code>,\u00a0<code>&lt;style&gt;<\/code>,\u00a0<code>&lt;script&gt;<\/code>. Subtract those, and the average drops to 24.) Most HTML tags barely touched.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CSS has 380 properties. React Native get by with ~100. But even then, they implement way fewer values than raw CSS. Take\u00a0<code>display<\/code>: CSS has 23 options; React Native has 2 (none, flex).\u00a0<\/li>\n<\/ul>\n\n\n\n<p>W3C keeps adding features but rarely cuts anything. New CSS and APIs pile up, making it nearly impossible to build a new browser engine from scratch\u2014it\u2019s too much baggage. Even outdated stuff like\u00a0<code><mark class=\"has-inline-color has-vivid-red-color\">document.write()<\/mark><\/code>\u00a0still has to stick around.<\/p>\n\n\n\n<p>That said, the Web still holds a huge chunk of mobile usage. Its cross-platform nature, flexible UI, and dynamic updates make it a go-to for hybrid app development. A survey of China\u2019s top 1000 apps found 60% of pages were Web or Web-like.<\/p>\n\n\n\n<p>But these mobile Web pages? They\u2019re not full-fledged sites anymore\u2014they\u2019re fragmented pieces.<\/p>\n\n\n\n<p>So, if we had a shot at making the Web truly mobile-friendly, where should we take it?<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A High-Performance Web Built for Mobile<\/h2>\n\n\n\n<p>Different companies have different ideas on how to pull this off. Generally, there are two paths: slim down the existing Web or build a brand-new Web core. Let\u2019s break them down.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Option 1: Slim Down the Web<\/h3>\n\n\n\n<p>This means taking the Web\u2019s full feature set and carving out a leaner subset to boost browser efficiency.<\/p>\n\n\n\n<p>Vendors with legacy projects love this\u2014it keeps old code mostly intact. Developers wouldn\u2019t need to rewrite much to get started. But there are downsides:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Performance Limits<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Slimming down hits a ceiling fast. The Web\u2019s big flaw\u2014logic and rendering threads fighting each other\u2014means long JS tasks drop frames. Without scrapping that outdated design, performance won\u2019t soar.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Experience Gaps<\/strong><\/li>\n<\/ol>\n\n\n\n<p>A trimmed Web still won\u2019t feel mobile-native. You\u2019d need to bolt on stuff like long lists and gestures anyway.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Long-Term Bloat<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Defining the subset is tricky and subjective. Worse, it\u2019ll grow over time as tech evolves, undoing the \u201cslim\u201d part. Google\u2019s AMP tried this route and fizzled out.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Option 2: A New Core<\/h3>\n\n\n\n<p>If we\u2019re branching off the Web anyway, why not go all-in and build a fresh core?<\/p>\n\n\n\n<p>This means creating a new runtime kernel for next-gen Web apps. Future browsers could run dual engines\u2014the old one stays for legacy, while the new one starts clean. Benefits? Ditch the baggage, separate rendering and logic threads, slim down UI components, and bake in mobile-friendly features.<\/p>\n\n\n\n<p>What might this new Web app look like?<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Distributed as Packages<\/strong>\u00a0Mobile internet\u2019s <strong>island-like structure<\/strong> calls for self-contained, low-linkage packages\u2014think mini-apps or cross-platform frameworks.<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Bundle UI, CSS, and JS together.<\/li>\n\n\n\n<li>Use a new\u00a0<code><em>content-type: application\/webapp<\/em><\/code>\u00a0to define it.<\/li>\n\n\n\n<li>Give packages self-managed lifecycles and updates.<\/li>\n\n\n\n<li>Unlike mini-apps, keep packaging flexible\u2014bundle one page or a full app.<\/li>\n<\/ul>\n\n\n\n<p>Why? Packages fit mobile use cases:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Embedded in Apps<\/strong>: Most Web traffic comes from apps. Packages can preload locally for native-like performance.<\/li>\n\n\n\n<li><strong>Real-Time Pages<\/strong>: Like H5 share links or QR code pages\u2014small packages users fetch on the fly, downloading and running simultaneously for speed.<\/li>\n\n\n\n<li><strong>Mini-App Ecosystem<\/strong>: This could standardize mini-apps under W3C. The Mini App Working Group started in 2021 but stalled. A solid Web app model could jumpstart it, making mini-apps a global standard. Any browser or Webview could run them natively.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Extensibility<\/strong>\u00a0Redoing a full browser kernel (GPU, audio, XR, WebTransport, etc.) is insane\u2014too much work. Most apps don\u2019t need it all anyway. A new core should let developers or platforms plug in custom native components, written in high-performance languages. For Webviews, devs could pick only what they need, keeping the core lean.\u00a0Web devs could call native components directly, no matter the language. High performance, Web efficiency\u2014best of both worlds. Plus, native components could grow into a thriving ecosystem.<\/li>\n\n\n\n<li><strong>Mobile-Friendly by Default<\/strong>\u00a0This means friendly for devs\u00a0<em>and<\/em>\u00a0users. (Sometimes dev-friendly design helps users too\u2014like iOS\u2019s built-in fade animations. Set\u00a0<code>animated:YES<\/code>, and it\u2019s smooth. Most iOS apps feel polished by default.)\u00a0H5 pages, though? Flickering, jitters, abrupt shifts\u2014few devs bother with transitions, widening the gap with native. A new core should bake in smooth animations, page switches, long lists, and gestures, cutting dev effort.<\/li>\n<\/ol>\n\n\n\n<p>Bonus: A new core lands easily. As a cross-platform alternative, devs just drop the new Webview into their app\u2014no system or browser updates needed. Full control.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beyond Phones<\/h2>\n\n\n\n<p>It\u2019s not just phones\u2014smartwatches, glasses, car systems, speakers, TVs, and appliances all need UI platforms. Right now, every device and vendor uses different OSes and dev stacks. Building for one means learning its quirks from scratch. Standardized, low-cost software development could even spark innovation in hardware devices.<\/p>\n\n\n\n<p>Imagine a unified, cross-device Web tech that works everywhere. Dev costs drop, and W3C standards could tie it all together. That\u2019s pretty exciting.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Web was born 35 years ago, back when desktop computers were the main way to get online. Today, mobile internet and touchscreens dominate. To keep up with this shift, the Web needs some changes. Let\u2019s start by comparing the &hellip; <a href=\"https:\/\/www.w3.org\/community\/high-perf-baseline\/2025\/03\/09\/a-proposal-for-high-performance-web\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":24205,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"yes","footnotes":""},"categories":[1],"tags":[],"class_list":["post-5","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/posts\/5","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/users\/24205"}],"replies":[{"embeddable":true,"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":1,"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/posts\/5\/revisions"}],"predecessor-version":[{"id":6,"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/posts\/5\/revisions\/6"}],"wp:attachment":[{"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/media?parent=5"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/categories?post=5"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.w3.org\/community\/high-perf-baseline\/wp-json\/wp\/v2\/tags?post=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}