# react vs vue — codebase comparison

> Canonical page: https://codevetter.com/unpack/compare/react-vs-vue

# react vs vue — codebase comparison

Two different answers to the same question — React keeps a scheduler and fiber tree in-tree; Vue splits reactivity, runtime, and compiler into separate packages.

| | facebook/react | vuejs/core |
|---|---|---|
| Scanned commit | 59aff3e (2026-09-18) | 4ab865a (2026-09-18) |
| Files | 4000 | 696 |
| Primary source root | packages | packages |

## react

This is the facebook/react monorepo at commit 59aff3e — the React runtime (isomorphic `react`, the Fiber reconciler, the Fizz SSR server, the Flight/Server-Components client+server, DevTools, and the Scheduler) plus a largely independent `compiler/` sub-project holding the React Compiler in both TypeScript (`babel-plugin-react-compiler`) and an in-progress Rust port (12 `react_compiler_*` crates behind a napi bridge). It is a library-publishing repo, not an app: nearly every artifact is a Rollup-built npm bundle produced per *release channel* (stable / canary / experimental / www-classic / www-modern / xplat), with behaviour toggled by ~67 `enable*` feature flags that are fork-substituted at build time. What is distinctive is the fork/shim architecture — `ReactFiberConfig`, `ReactFeatureFlags`, `ReactFlightServerConfig` and friends are placeholder modules that *throw* unless Rollup or Jest swaps in a renderer-specific implementation — and a CI matrix that runs the same Jest suite 18 ways × 5 shards to prove every channel behaves.

## vue

This is the vuejs/core monorepo at v3.5.43 — the source of the `vue` npm package and its ten sibling `@vue/*` packages, split cleanly into a compiler half (compiler-core → compiler-dom → compiler-sfc/compiler-ssr) and a runtime half (reactivity → runtime-core → runtime-dom/server-renderer), glued by `@vue/shared`. The distinctive engineering shape is compile-time configurability: every package is built by a single `rollup.config.js` driven by `scripts/build.js` into up to seven output formats, with `__DEV__`/`__BROWSER__`/`__FEATURE_*`/`__COMPAT__` flags statically replaced so that dev warnings, the Options API, Suspense, and the Vue-2 compat layer all tree-shake away. It is written for framework maintainers and ecosystem tool authors rather than app developers: the public API surface is small, but the internal surface (renderer internals object, `createRenderer` for custom platforms, compiler `nodeTransforms`/`directiveTransforms`) is explicitly designed as an extension substrate. Two private packages — `sfc-playground` and `template-explorer` — are live-deployed dev tools that consume the built artifacts of the very repo that builds them.

Full evidence: https://codevetter.com/unpack/react · https://codevetter.com/unpack/vue

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
