LinkedIn Uses 2.4GB of RAM and Other Signs the Web is Broken
Modern web apps consume absurd resources for trivial tasks. It's time engineers remembered that efficiency isn't optional.
LinkedIn consumed 2.4GB of RAM across two browser tabs this week.
Not a video editor. Not a 3D modeling suite. A social media site that displays text and images.
The web is broken. And we did this to ourselves.
The Bloat Explosion
Remember when entire operating systems fit on floppy disks? Windows 95 shipped on 13 floppies — roughly 18MB total.
Today's web pages routinely exceed that. A single LinkedIn session eats more memory than 133 copies of Windows 95.
This isn't progress. It's engineering malpractice.
The symptoms are everywhere:
- News sites that take 30 seconds to load three paragraphs
- Chat apps that consume more CPU than video games
- Simple forms that require hundreds of JavaScript dependencies
- Email clients that crash on 4GB machines
- Marketing sites shipping 2MB of unused CSS
Meanwhile, someone built a 2.7KB globe visualization showing real-time data from 300 edge locations. Same browser. Same hardware. 1,000x smaller.
The performance gap isn't technical limitation. It's engineering choice.
How We Got Here
The web development industry made three catastrophic decisions:
We Abandoned Constraints
Faster networks and more powerful devices became excuses for sloppy code. Why optimize when users can just upgrade their hardware?
This thinking created a performance ratchet. Each generation of developers inherited slower baselines and normalized them further.
// 2010: 100KB JavaScript bundle was concerning
// 2015: 500KB became acceptable
// 2020: 2MB bundles ship without second thought
// 2025: "It's only 5MB, users have good internet now"
We Normalized Framework Obesity
React applications routinely ship 200KB+ of JavaScript before displaying "Hello World". Vue, Angular, Svelte — they all enable the same wasteful patterns.
The framework isn't the problem. The ecosystem is:
- Component libraries that import entire icon sets for two icons
- Utility frameworks shipping thousands of unused classes
- Build tools that default to development-friendly, production-hostile configurations
- Package managers that treat dependencies like free resources
# Typical React app dependency graph
$ npm ls | wc -l
2,847 packages
# For a todo list
# With three features
# That could be 200 lines of vanilla JavaScript
We Forgot Software Runs on Real Machines
Every abstraction layer adds overhead. Every dependency pulls in more dependencies. The bundle grows, memory usage explodes, and users pay the price.
Modern web development treats computers like magic boxes with infinite resources. They're not.
The Real Cost
Resource waste isn't just annoying — it's exclusionary.
Your 2.4GB LinkedIn experience assumes:
- High-end laptop or desktop
- Fast internet connection
- Unlimited data plan
- Recent browser version
- Reliable power supply
- Modern operating system
Billions of users don't have those luxuries.
The Global Reality Check
- 4 billion people use phones with 2GB RAM or less
- 3 billion people pay for internet by the megabyte
- 2 billion people rely on intermittent connectivity
- 1 billion people use devices 5+ years old
The developers building these applications live in a different universe. They test on MacBook Pros with 32GB RAM and gigabit internet. The disconnect is complete.
Meanwhile, the fastest-growing internet populations are in regions where efficiency matters most:
India: 700M+ mobile users, avg 3GB RAM
Indonesia: 200M+ users, avg 2GB RAM
Nigeria: 150M+ users, avg 1GB RAM
Brazil: 170M+ users, spotty 4G coverage
Our bloated web applications aren't just slow for these users. They're completely unusable.
Engineering for Constraints
Efficient software isn't accident. It requires intentional design decisions:
Set Hard Limits
Every feature should justify its resource cost. No 200KB libraries for date formatting. No client-side routing for five-page sites.
Performance budgets should be non-negotiable:
- JavaScript bundle: 100KB compressed
- CSS bundle: 20KB compressed
- Memory usage: 50MB peak
- Time to interactive: 3 seconds on 3G
Break the budget? Cut features or find better solutions.
Measure Relentlessly
Bundle analyzers, memory profilers, performance budgets. Make resource usage a first-class metric.
# This should be in every CI pipeline
$ npm run bundle-size-check
Bundle size: 247KB (limit: 100KB) ❌
Memory usage: 180MB (limit: 50MB) ❌
Build failed.
# Deploy blocked until fixed
Track these metrics like you track uptime:
- Real User Monitoring for actual device performance
- Lighthouse CI for regression detection
- Bundle analysis for dependency bloat
- Memory profiling for leak detection
Default to Minimal
Start with plain HTML and CSS. Add JavaScript only when necessary. Each dependency should solve a real problem.
The progressive enhancement approach works:
- Build with HTML/CSS only
- Add minimal JavaScript for interactions
- Enhance with frameworks if complexity justifies cost
Most sites never reach step 3. That's fine.
<!-- This handles 90% of web use cases -->
<!DOCTYPE html>
<html>
<head>
<title>Fast Site</title>
<style>/* 5KB of CSS */</style>
</head>
<body>
<main><!-- Content here --></main>
<script>/* 10KB of JavaScript */</script>
</body>
</html>
<!-- Total: 15KB, renders instantly -->
Question Every Abstraction
That React component library might be convenient. It's also 500KB and includes features you'll never use.
Before adding any dependency, ask:
- What problem does this solve?
- Can I solve it with 20 lines of code instead?
- What's the total cost including transitive dependencies?
- How will this affect users on slow devices?
Most dependencies fail these tests.
The Path Forward
The solution isn't abandoning modern development. It's remembering that efficiency is a feature.
Great engineers optimize not because they have to, but because wasteful software is bad software.
Encouraging Signs
- Svelte and SolidJS challenging React's bundle size
- Web Components enabling framework-free development
- Progressive enhancement making a comeback
- Edge computing pushing constraints back to the forefront
- Core Web Vitals making performance a business metric
The Cultural Shift
The biggest change needed isn't technical. It's cultural.
We need to stop celebrating engineering complexity and start celebrating engineering efficiency.
Stop bragging about how many packages your project uses. Start bragging about how few.
Stop optimizing for developer experience at user expense. Start optimizing for user experience despite developer inconvenience.
Stop assuming users can handle whatever you ship. Start assuming they can't.
Practical Steps
For individuals:
- Audit your applications' resource usage weekly
- Set performance budgets and stick to them
- Choose tools based on output size, not input convenience
- Test on actual user devices, not development machines
For teams:
- Make performance a deployment requirement
- Include resource costs in code review discussions
- Celebrate efficiency improvements like feature releases
- Hire engineers who understand constraints
For companies:
- Include performance metrics in engineering KPIs
- Test products on representative user hardware
- Budget for performance optimization like security patches
- Market efficiency as a competitive advantage
The web doesn't have to be slow. We chose to make it slow.
We can choose differently.
Don't ask "Can users handle our bloated applications?"
Ask "Why are we building bloated applications in the first place?"
The answer might surprise you. And embarrass you.
Good.
Need a system that doesn't fall apart in production?
Let's talk.
Clean architecture. Honest timelines. Software that ships on time and stays running. No fluff.
Get a Free Consultation