< sooo.dev />

Web Components: The Framework Killer We've Been Ignoring for a Decade

While you've been hopping between React, Angular, Vue, and Svelte like a commitment-phobic dater, web components have been quietly maturing into the native solution we pretend doesn't exist. Are you ready to face the future where your favorite framework becomes irrelevant?

Share:
Web Components: The Framework Killer We've Been Ignoring for a Decade

Web Components: The Framework Killer We’ve Been Ignoring for a Decade

Let’s be honest: frontend developers have commitment issues. We jump from framework to framework like a squirrel on espresso, always chasing the high of that next shiny JavaScript toy.

React? Been there. Vue? Done that. Svelte? So last year. Solid? Getting boring already.

Meanwhile, web components—the browser-native component system that works everywhere without transpilation, bundling, or framework lock-in—have been steadily improving for over a decade while we’ve been busy arguing about whether hooks are better than classes.

It’s time to face a hard truth: your favorite framework might just be unnecessary overhead in a world where the platform itself offers a component model that does most of what you need.

The Web Component Revolution Is Already Here (And You Missed It)

Web components aren’t new. They’ve been around since Chrome 59, with the core specs (Custom Elements, Shadow DOM, HTML Templates) supported in all major browsers since 2021.

But much like your gym membership, their existence doesn’t mean you’re using them.

The current state of web components in 2025:

  1. Browser Support: 98%+ of global users have browsers that fully support web components
  2. Performance: Native implementation means they’re faster than framework components
  3. Ecosystem: 2,000+ published components on webcomponents.org
  4. Adoption: Used by Google, Adobe, Microsoft, GitHub, Netflix, and thousands of other sites
  5. Tooling: Full IDE support, including TypeScript definitions
  6. Libraries: Lit, Stencil, Hybrids, and others make development a breeze

Yet you’re probably still wrapping your components in 500KB of framework code while complaining about bundle sizes and hydration delays.

”But My Framework Does Things Web Components Can’t!”

Does it though? Let’s bust some myths:

Myth: “Web components don’t have state management.” Reality: Custom elements can manage internal state, and you can use any state management library (Redux, XState, MobX) with web components. Plus, context-like features are coming to the platform.

Myth: “Web components don’t have reactive props.” Reality: Observed attributes and properties provide the same reactivity as framework props, just with slightly different syntax.

Myth: “Shadow DOM makes styling difficult.” Reality: Shadow parts, CSS custom properties, and constructable stylesheets give you more styling control than most frameworks, not less.

Myth: “Web components don’t work with SSR.” Reality: Use declarative shadow DOM (supported in Chrome and Safari) or simply SSR the light DOM content and hydrate on the client.

Myth: “The API is too verbose compared to JSX.” Reality: Libraries like Lit give you a concise, declarative template syntax that’s competitive with JSX while still producing native web components.

Myth: “But React has a huge ecosystem!” Reality: Web components work with React (and every other framework). Your React component can use web components, and your web components can be used in React apps.

The Framework Addiction Cycle

We’ve been caught in a dysfunctional relationship with frameworks that follows a predictable pattern:

  1. Honeymoon Phase: “This new framework is amazing! It solves all the problems of the last one!”

  2. Complexity Creep: “We just need to add this state management library, routing solution, form validation library, and 12 more dependencies…”

  3. Performance Concerns: “Why is our bundle so big? Why is first load so slow? We need to optimize!”

  4. Fatigue Sets In: “Keeping up with all these breaking changes and best practices is exhausting.”

  5. New Shiny Thing Appears: “Have you seen this new framework? It solves all these problems!”

And thus the cycle continues, while browser standards quietly improve in the background, ignored by many developers too busy chasing the next dopamine hit of a new framework.

Frameworks vs. The Platform: A Tale of Two Approaches

The Framework WayThe Web Component Way
Learn framework-specific APILearn web standards that transfer to any project
Bundle 50K+ of framework code with each componentShip just your component code
Risk breaking changes with every major versionRely on stable browser standards
Lock into framework ecosystemWork in any context or with any framework
Require complex build systemsCan work without transpilation
Risk framework abandonmentStandards never go away
Suffer runtime performance overheadGet native browser performance

When you build with web components, you’re not just creating components; you’re creating future-proof assets that can be used across frameworks, projects, and time.

”But the Developer Experience Isn’t as Good!”

Let’s translate that: “I don’t want to learn slightly different syntax.”

Because that’s all it is. The developer experience gap has narrowed dramatically:

// A React component
function Counter({ initial = 0 }) {
  const [count, setCount] = useState(initial);
  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

// The same component with Lit (web components)
@customElement('my-counter')
class Counter extends LitElement {
  @property({ type: Number }) initial = 0;
  @state() count = 0;
  
  connectedCallback() {
    super.connectedCallback();
    this.count = this.initial;
  }
  
  render() {
    return html`
      <p>Count: ${this.count}</p>
      <button @click=${() => this.count++}>Increment</button>
    `;
  }
}

Not exactly a radical difference, is it? Both are declarative, reactive, and component-based. The web component just happens to work natively in browsers without a framework dependency.

The Rise of the Framework-Independent Developer

As web components continue to mature, we’re seeing the emergence of a new breed of frontend developer: the framework-independent developer.

These developers:

  1. Focus on web standards first, framework patterns second
  2. Build shareable component libraries that work across projects regardless of framework
  3. Reduce technical debt by creating future-proof components
  4. Improve performance by leveraging native browser capabilities
  5. Enhance career longevity by investing in skills that outlast framework cycles

They’re the polyglots of the frontend world, able to work in any codebase because they understand the underlying platform rather than just framework abstractions.

How to Break Your Framework Dependency

Ready to break free from framework addiction? Here’s your step-by-step recovery plan:

  1. Start small: Replace a simple UI component with a web component
  2. Use a gentle transition library: Lit, Stencil, or Hybrids make the transition easier
  3. Create a component library: Build your design system as web components that can be used anywhere
  4. Think interoperability: Design components that can be consumed in any framework
  5. Embrace incremental adoption: You don’t have to rewrite everything at once
  6. Learn Shadow DOM properly: It’s different, not harder, once you understand the mental model
  7. Stay connected to standards: Follow the WHATWG and W3C to see what’s coming next

The beauty of web components is that you don’t need a big-bang migration. You can incrementally adopt them alongside your existing framework.

The Final Framework?

Here’s a thought experiment: What if web components are the final “framework”? What if, instead of jumping to the next hot JS framework, we instead build on a stable foundation of browser standards that continue to improve?

Imagine a world where:

  • Components work across project boundaries without conversion
  • Framework updates don’t break your components
  • Your skills transfer completely between jobs and projects
  • Performance is a given, not something you have to optimize for
  • You’re building with the platform instead of working around it

That world already exists—if you’re willing to step off the framework treadmill and give web components the serious consideration they deserve.

Conclusion: The Choice is Yours

You have two paths before you:

  1. Continue the cycle: Keep jumping from framework to framework, constantly learning new APIs that will be obsolete in a few years.

  2. Break the cycle: Invest in web components and web standards that will serve you for the rest of your career.

Web components aren’t perfect. They still have rough edges. But they’re improving at a steady pace while offering something no framework can: native browser support and true interoperability.

The choice is yours. But remember, while you’re deliberating, another framework will probably launch, gain popularity, and burn out—all while web components continue their slow, steady march toward becoming the obvious choice for component-based development.

Choose wisely. Your future self will thank you.

Photo of Emma Stylesheet

About Emma Stylesheet

The CSS purist who judges your design choices with the severity of a 90s web design professor. Emma has strong opinions about semantic HTML, responsive approaches, and will fight you about cascade layers. She's equal parts excited and terrified by how CSS is evolving, and can spot a z-index issue with her eyes closed. Every design crime you commit ends up in her 'responsive failures' collection.