I recently came to the conclusion that browser infrastructure is one of the most overlooked yet important frontiers in computing.
Most people think of browsers as just one computer application of many. Yet, over the past ten years, applications that once lived on our devices have all moved to the browser:
- Microsoft Word → Google Docs
- Quicken → QuickBooks Online
- Photoshop → Figma
- Outlook → Gmail
- Desktop applications → SaaS platforms
Browsers are now the universal portal to our digital lives—work, entertainment, communication, finance, healthcare, education, and everything in between. Yet, its architecture was not designed for the internet we use today.
Origins of the everything app
In 1989, Tim Berners-Lee created the web at CERN so he could share academic papers with other researchers around the world. The web's make-up still reflects that origin:
- HTML: Created to represent academic papers with headings, paragraphs, and links
- CSS: Designed as style sheets for documents, similar to word processors
- JavaScript: Added retroactively for basic interactivity
- HTTP: Built around document requests and responses
- DOM: A tree structure representing document elements, not application components
When you view modern websites through this lens, you can see the document DNA still present. A web "page" is still fundamentally a document at its core, even when displaying a sophisticated application.
Problems with the everything app
Some of the most annoying parts of the internet stem from its document-centric foundation:
pop-ups
Pop-ups exist because the document model treats every element as part of a document, allowing websites to inject new elements at any time without user consent. There's no infrastructure-level distinction between essential content and interruptive elements.
<!-- This is possible because the DOM allows arbitrary insertion of elements --> <div id="newsletter-popup" class="popup"> <h2>Subscribe to our newsletter!</h2> <button onclick="closePopup()">No thanks</button> </div>In most application architecture, the user controls if and when interface elements appear.
sluggish page loads
The synchronous loading model inherited from document days forces browsers to parse and execute JavaScript before rendering interactive content. Modern frameworks like Next.js and tools like Vite help, but they still operate within the limitations of a document-based web.
export default function App() { const [isLoaded, setIsLoaded] = useState(false); useEffect(() => { // Initialization that blocks interactivity initializeFramework(); loadUserData(); setupEventListeners(); setIsLoaded(true); }, []); return ( <div className="app"> <Header /> <MainContent isLoaded={isLoaded} /> <Footer /> </div> ); }authentication for every. damn. website.
The internet's TCP/IP protocol lacks infrastructure for secure, user-controlled identity sharing. It never even mentioned authentication in its original spec. This means every website has to roll its own authentication scheme and—of course—force users through it.
function checkAuthentication() { const token = localStorage.getItem('authToken'); if (!token || isTokenExpired(token)) { redirectToLoginPage(); } }A true application platform would have provided system-level identities that users could selectively share across trusted contexts.
captchas
Because we never built a security model with the concept of user-authorized controls, browsers force websites to implement crude detection mechanisms like CAPTCHAs. Annoyingly, they're only increasing around the internet despite the well-known fact that AI can solve them.
the internet is full of data silos
The current web is artificially fragmented. Information and functionality are siloed within individual websites, forcing users to adapt to each site's unique interface, authentication system, and workflow.
What if we could compose the unstructured internet?
Consider planning a trip. To do that, you use the internet to:
- Search for flights across multiple airline sites
- Compare hotel options on several booking platforms
- Check weather forecasts on weather services
- Research attractions on review sites
- Manually copy information between these services
- Keep track of everything in a separate document
Each service is an isolated destination. With LLM reasoning capabilities, it's increasingly possible to compose the web, tailored specifically to you:
async function planTrip(destination, dates) { const flights = await browser.extract({ sites: ['united.com', 'delta.com', 'kayak.com'], data: 'flightOptions', filters: { destination, dates } }); const hotels = await browser.extract({ sites: ['hotels.com', 'airbnb.com', 'booking.com'], data: 'accommodations', filters: { location: destination, dates } }); const weather = await browser.extract({ sites: ['weather.gov', 'accuweather.com'], data: 'forecast', filters: { location: destination, dates } }); const attractions = await browser.extract({ sites: ['tripadvisor.com', 'yelp.com'], data: 'topAttractions', filters: { location: destination } }); return agent.compose({ flights, hotels, weather, attractions, template: 'tripPlanner' }); }This could be surfaced in a chat app, a visual interface, or anything else. More than a marginally better user experience, a composable web would fundamentally reshape our relationship with the internet, how we access it, and how we live our lives.
A user-defined internet
Today, websites define our experiences, and we are forced to adapt to them.
Want to view content without advertisements? Sorry!
Need to extract your data? Have fun building a scraper.
This isn't a technology problem; the internet was designed to prioritize website control over user agency. A truly user-centric experience would flip this relationship:
- You define how content is presented to you
- You control how your data moves between services
- You decide which interface elements appear and when
Historically, this wasn't possible to encode—but LLMs' general-purpose reasoning and generative personalization now make it possible. What's changed is that we have new primitives: fast, cloud-hosted browsers, language models that can reason through interfaces, agent frameworks that treat the web as something programmable, not just viewable.
A better internet
The browser has become our primary computing environment as computing has moved to the cloud, but I think we're just getting started. A truly personalized internet feels inevitable (I'm sure I'm not alone in moving my Google searches—and more—to LLMs).
The best case scenario? Digital friction disappears, information flows freely, and human creativity is liberated from mundane, repetitive tasks.
A world wide web that's composable, automatable, and shaped by users rather than websites: that's what the internet should be.
april 16, 2025
← back