Six Engineers Maintain Two Rendering Engines as One Company Owns the DOM

Jul 14, 2026 By Lucas Mendes

Every time a developer writes a div inside a React component or a Vue template, two separate rendering engines reconcile that element against the browser's real DOM. One is maintained by a team of roughly six to ten engineers at Meta. The other is shepherded by Evan You and a small paid core, with significant community contributions. These two engines do the same job—diffing virtual trees against the live document—but they are funded, governed, and evolved by entirely different economic models. The duplication inflates maintenance budgets across the industry, and nobody seems willing to talk about it.

Two Engines, One Browser: The Unseen Cost of Dual Rendering

React's virtual DOM, introduced in 2013, was a breakthrough. Instead of touching the real DOM directly, React keeps a lightweight JavaScript object representing the UI. When state changes, it computes a diff and applies minimal updates. Vue followed a similar path in 2014, but with a reactive system that tracks dependencies at the data level. Both approaches work. Both require dedicated teams to maintain, patch, and evolve the core diffing logic. According to public job postings and conference talks, Meta employs roughly 12 people on the React core team, a subset of whom focus on the reconciler. Vue's core team is smaller—around 6 paid engineers, including Evan You, funded through Patreon, corporate sponsorships, and grants from foundations like Open Collective.

The duplication is not just about headcount. Every new browser API, every edge case in event handling, every performance regression must be diagnosed and fixed in both engines. When React 18 shipped concurrent features, the reconciler's architecture changed fundamentally. Vue 3's composition API required a complete rewrite of the reactivity system. These are not one-time costs. They are recurring investments that the industry pays for, either through corporate taxes (Meta's stock pays for React) or through donations and the unpaid overtime of open-source contributors.

A rough estimate based on public salary data from Levels.fyi and conference talks suggests the total engineering cost of maintaining two major virtual DOM implementations is in the range of $5–10 million per year, counting salaries, infrastructure, and opportunity cost. That figure excludes the hundreds of third-party libraries that wrap each engine—form libraries, state managers, animation frameworks—each of which must be kept in sync. The browser itself, meanwhile, has no native virtual DOM. It simply exposes the DOM API and lets frameworks invent their own abstractions on top.

Who Pays for the DOM? The Economics of Framework Ownership

Meta's investment in React is straightforward: React powers Facebook, Instagram, WhatsApp, and a growing number of internal tools. A faster, more reliable React means a faster, more reliable Meta. The company can justify a dozen engineers because the framework directly supports its core products. But React is also used by millions of developers who do not work for Meta. Those developers benefit from Meta's investment without contributing directly. This is not charity—it is strategic infrastructure spending. React keeps the web ecosystem aligned with Meta's interests, particularly around performance patterns that benefit large-scale social applications.

Vue's economics are more fragile. Evan You started the project as a personal experiment. As adoption grew, he raised money through Patreon and later through a small company called Vue Technology, which was acquired by NetEase in 2016. Today, Vue's core team is supported by a mix of corporate sponsors—including companies like Nvidia, Indeed, and Retool—and individual donations. The Vue.js organization on Open Collective reports roughly $200,000 per year in revenue, which covers a fraction of the team's salaries. Most core contributors work on Vue in their spare time or as part of their job at companies that use Vue heavily.

The difference in funding models creates different incentives. React's roadmap is influenced by Meta's internal needs. Vue's roadmap is shaped by community consensus and the availability of volunteer time. Neither model is inherently better, but both have blind spots. React sometimes ships features that only make sense at Meta's scale—like Server Components, which require a complex orchestration layer. Vue sometimes moves slowly on enterprise features, like TypeScript support, which arrived later than many users wanted.

The Vendor Lock-In That Nobody Admits

Vendor lock-in in open-source frameworks is subtle. There are no contracts, no license fees, no annual renewals. But the cost of switching is real. A mid-size team with a production React app faces a rewrite of roughly four to six months to migrate to Vue—or vice versa. That estimate assumes the team already knows both frameworks. If they need to learn the new one, add another two months. Few engineering leaders approve such a project unless the current framework is actively causing harm.

React's license terms have shifted over time. Originally under BSD with a controversial patent clause, React moved to MIT in 2017 after community backlash. But the patent grant is still present in the MIT-licensed version, and it explicitly terminates if a user sues Meta over patents. This asymmetry means that any company that might sue Meta—or that Meta might sue—cannot safely use React. In practice, this clause has rarely been tested, but it creates a legal overhang that enterprise legal teams must evaluate.

Vue's license is pure MIT, with no additional patent clauses. On paper, it is more neutral. But the lack of a single corporate patron means that long-term stability is less assured. If Evan You stopped maintaining Vue tomorrow, the community would likely fork it, but the transition would be chaotic. React, for all its corporate entanglements, has a predictable maintenance stream as long as Meta exists. Engineering leaders must weigh these risks: React's corporate lock-in versus Vue's dependency on a small team's goodwill.

Performance Myths: Where Each Engine Actually Excels

Benchmarking frontend frameworks is notoriously difficult. Real-world applications include network latency, third-party scripts, and complex layout calculations that dwarf the cost of virtual DOM diffing. Still, microbenchmarks reveal meaningful differences. React's fiber architecture, introduced in version 16, breaks rendering into incremental units that can be interrupted and resumed. This makes React better suited for large, complex applications with frequent updates—think social feeds with thousands of components. Vue's reactive system, on the other hand, tracks dependencies at the data level and only re-renders components whose dependencies change. For small to medium DOM trees, Vue typically outperforms React by a small margin, sometimes as much as 10–15% in synthetic tests.

Bundle size is another axis. React with ReactDOM adds roughly 40 KB to a production bundle, before tree-shaking. Vue 3 with its runtime compiler adds about 33 KB. These are not huge numbers, but they compound when you add routing, state management, and UI libraries. A typical React app with React Router, Redux, and Material-UI can exceed 200 KB. A comparable Vue app with Vue Router, Pinia, and Vuetify might be 180 KB. The difference is rarely decisive, but for mobile users on slow connections, every kilobyte matters.

Real-world load time differences between the frameworks are often less than 10%, according to the HTTP Archive's 2023 Web Almanac chapter on JavaScript. The bigger performance wins come from using the framework correctly: avoiding unnecessary re-renders, lazy-loading routes, and optimizing images. Both React and Vue provide tools for these tasks, but neither has a decisive advantage. The choice of framework is unlikely to be the bottleneck for most applications.

The Hidden Tax: Dependency Hell and Upgrade Cycles

Framework upgrades are rarely painless. React 18 introduced concurrent features and automatic batching, which broke some existing patterns around state updates and lifecycle methods. Teams that relied on componentWillMount or componentWillUpdate had to migrate to the new lifecycle APIs. The upgrade took most enterprise teams three to six months, based on anecdotal reports from the React community on GitHub and Twitter. Vue 3's composition API was an even bigger shift. It required rewriting most Vue 2 components that used the Options API, and some third-party libraries never made the jump, leaving users stranded.

The lag between a framework release and ecosystem support is a persistent pain point. When React 18 shipped in March 2022, popular libraries like React Router and Redux did not fully support concurrent features for another six to twelve months. Vue 3's ecosystem took even longer—Vue Router 4 and Pinia were stable by early 2022, but many smaller libraries, like form validators and chart components, still have incomplete Vue 3 support as of late 2024. Teams that upgrade early often find themselves debugging issues that the core team has not yet documented.

Dependency managers like npm and Yarn help, but they cannot solve the fundamental problem: a framework change cascades through every layer of the stack. UI component libraries, testing utilities, build tools, and even IDE plugins must be updated. For large organizations with dozens of applications, coordinating these upgrades is a project management challenge as much as a technical one. Some teams choose to stay on older versions indefinitely, accepting the security and performance risks. Others invest in automated migration tools, which reduce the manual effort but still require testing and validation.

What a Unified Rendering Standard Would Look Like

The idea of a browser-native virtual DOM has been discussed in the WICG (Web Incubator Community Group) since at least 2019. Proposals have included a DOM diffing API that would let frameworks offload reconciliation to the browser, eliminating the need for each framework to maintain its own engine. Such an API could expose hooks for batched updates, priority scheduling, and incremental rendering—all features that React and Vue currently implement in JavaScript. The browser could optimize these operations at the native level, potentially improving performance and reducing memory overhead.

Adoption would require buy-in from Google, Meta, Apple, and Mozilla. Each has different incentives. Google owns Angular and has invested heavily in its own rendering approach. Meta owns React and has little reason to standardize away its competitive advantage. Apple has been slow to adopt new web APIs that do not directly benefit Safari's performance. Mozilla, despite its advocacy for open standards, lacks the engineering resources to push a complex proposal through the standards process. The historical precedent is jQuery: as browsers standardized DOM manipulation APIs like querySelector and classList, jQuery's raison d'être shrank. But jQuery took a decade to fade, and it still has a long tail of usage.

A unified standard would also need to address the philosophical differences between React and Vue. React treats the UI as a function of state, with explicit reconciliation. Vue treats the UI as a reactive graph, with implicit change detection. These are not just implementation details—they shape how developers think about component design. A browser API would have to be generic enough to support both mental models, or the community would have to converge on one. Neither outcome is guaranteed.

Practical Advice for Engineering Leaders Evaluating Both

If you are choosing between React and Vue for a new project, start by auditing your team's existing skill distribution. A team of React veterans will be more productive in React, even if Vue has technical advantages for your use case. The cost of retraining is real, and it often outweighs framework differences. Conversely, if your team is evenly split or has no strong preference, consider the total cost of ownership over three to five years, not just initial developer speed. That includes upgrade effort, library availability, and hiring ease.

Prototype your most critical user flows in both frameworks using a small spike team. Measure bundle size, time-to-interactive, and memory usage on a representative device. Pay attention to how each framework handles your data fetching patterns—React's Suspense and Server Components versus Vue's async components and useFetch from VueUse. These details matter more than generic benchmarks.

Finally, consider the long-term corporate backing for each framework in your vertical. If you are building a large-scale social application, React's alignment with Meta's priorities is an asset. If you are building a data-heavy dashboard for finance or healthcare, Vue's smaller footprint and simpler mental model might be more maintainable. Both choices come with trade-offs: React offers corporate stability but with potential legal entanglement, while Vue provides a cleaner license but relies on a smaller team. The real cost of two rendering engines is not just the engineering hours at Meta and the Vue core team—it is the fragmentation that every team must navigate when they choose one engine over the other. There is no universal right answer, only the right answer for your context.

Recommend Posts
Tech

A Cloud Team Paid Three Different Chip Vendors for the Same SHA-256 Hash

By Sara Park/Jul 14, 2026

A cloud team ran the same SHA-256 hash on Intel, AMD, and AWS Nitro hardware and got three different bills. This is the economics of the hardware-software boundary, where identical computations cost wildly different amounts depending on which chip vendor you choose.
Tech

FPGA Inference Pipeline Paid Per LUT Rewrites a Billion-Token Batch Economy

By Yusuke Tanaka/Jul 14, 2026

How LUT-based FPGA inference cuts per-token cost below GPU for billion-token batches, reshaping LLM deployment economics and API-level design.
Tech

One BGP Session, Three Transit Providers, and a Peering Invoice That Rewrites Latency

By Yusuke Tanaka/Jul 14, 2026

A peering invoice from a single BGP session revealed how transit costs, not fiber distance, dictated latency. A contrarian take on network engineering in 2026.
Tech

Pixel 8a Ships with One DSP Radio Stack as Qualcomm Tunes the Other

By Sara Park/Jul 15, 2026

Google's Pixel 8a ships with one of two DSP radio stacks active while Qualcomm tunes the other post-launch. This dual-stack approach reveals how modem firmware constraints shape Android development.
Tech

Maintaining an Open Source Package for Six Years Taught Me Contract Law

By Yusuke Tanaka/Jul 15, 2026

Six years maintaining an open source package taught a solo developer that license terms are contracts. A practical guide to governance, liability, and legal hygiene for maintainers.
Tech

One Open Source License Rewrote Its Compatibility Clause After Three Corporate Forks

By Yusuke Tanaka/Jul 14, 2026

How three corporate forks of a copyleft license forced its maintainers to rewrite the compatibility clause, closing loopholes and reshaping downstream project choices.
Tech

One SwiftUI App Store Review Bans Five Cross-Platform Libraries Our Team Depended On

By Sara Park/Jul 15, 2026

A single App Store rejection banned five cross-platform libraries our team had relied on for two years, forcing costly rewrites and exposing the fragility of third-party stacks in iOS development.
Tech

Cache Ejections at the European Edge Double a Transit Provider's Per-Region Bill

By Yusuke Tanaka/Jul 14, 2026

European edge nodes eject caches faster due to ISP fragmentation and low TTLs, doubling per-region bills for transit providers. Tuning with Fastly VCL or AWS Origin Shield can cut costs but adds latency or CPU overhead.
Tech

Three Database Engines Claim Linearizable Reads as a Clock Skid Resets One Team's Consensus

By Lucas Mendes/Jul 15, 2026

A fintech incident reveals how clock skew breaks linearizable reads in CockroachDB and YugabyteDB. Analysis of trade-offs, mitigations, and choosing the right engine.
Tech

Ethernet MAC Hardware Offload Exposes a UDP Jitter Bug That Two Kernel Stacks Hide Differently

By Sara Park/Jul 14, 2026

A deep-dive into how Linux and FreeBSD handle UDP jitter differently under hardware MAC offload, revealing a timestamp-ordering bug in Intel XL710 NICs and practical trade-offs for real-time workloads.
Tech

Saga Pattern vs Two-Phase Commit: Two Distributed Transaction Lies That Fail Differently

By Deepa Iyer/Jul 14, 2026

Both Two-Phase Commit and Saga Pattern promise distributed transaction consistency, but each fails in its own way. A pragmatic breakdown of when each works, where they break, and what practitioners actually do in production.
Tech

BGP Hijack Insurance Rewrote One ISP’s Transit Bill in Four Hours

By Sara Park/Jul 15, 2026

How one ISP turned a BGP hijack into a transit insurance payout, rewriting the economics of network reliability and path integrity.
Tech

A Single Signed SBOM Commit Killed a Friday Afternoon’s Production Patch

By Deepa Iyer/Jul 15, 2026

When a signed SBOM commit triggered a production pipeline failure, a team learned the hard way that supply-chain security gating has real operational costs. This is what working with signed attestations looks like in 2026.
Tech

Google Cloud Spanner’s Write Lock Pricing Forces a PostgreSQL Team to Relearn Transaction Visibility

By Deepa Iyer/Jul 14, 2026

A PostgreSQL team migrating to Google Cloud Spanner discovered that per-write-lock pricing can dominate cloud bills. This article compares Spanner, PostgreSQL, and CockroachDB on cost, consistency, and lock behavior.
Tech

Open Source Maintainers Bill the Corporation That Forked Their Stack

By Sara Park/Jul 15, 2026

When corporations fork open source projects and monetize them without contributing back, maintainers are fighting back with new licensing models, foundations, and billing strategies.
Tech

Six Engineers Maintain Two Rendering Engines as One Company Owns the DOM

By Lucas Mendes/Jul 14, 2026

React and Vue both maintain separate virtual DOM implementations, each requiring dedicated teams. This article examines the economic and engineering costs of dual rendering engines, corporate ownership, and what a unified standard might look like.
Tech

Paying a License Fee Every Time an Open Source Maintainer Quits

By Lucas Mendes/Jul 15, 2026

When a critical open-source maintainer quits, downstream users pay a hidden tax. This article explores why licenses stay silent, how corporate users extract value, and what market mechanisms could fix the gap.
Tech

Apple's App Store Commission Rewrites the Cost of a SwiftUI Gesture Handler

By Yusuke Tanaka/Jul 14, 2026

A $0.99 SwiftUI gesture handler reveals how Apple's 30% commission and platform lock-in reshape developer economics compared to Android's more open model.
Tech

Service Mesh Overhead That Bills Per Sidecar Rewrites a Kubernetes Team’s Capacity Budget

By Deepa Iyer/Jul 14, 2026

Per-sidecar billing from service meshes like Istio and Linkerd can inflate Kubernetes costs by 30-40%. This article examines the hidden overhead, real-world case studies, and alternatives like eBPF and ambient mesh.
Tech

One Data Scientist Runs Inference on Three GPU Vendors and Every Bill Differs

By Sara Park/Jul 14, 2026

A data scientist runs identical LLM inference workloads on AWS, GCP, and Azure. The bills differ wildly. Here's why GPU pricing is still a black box in 2026.