JavaScript and React logos connected by curved arrows forming a loop, representing React's contributions flowing into the JavaScript language

What React Gave Back to JavaScript

A real, traceable connection exists between React’s team and specific, shipped pieces of the JavaScript language, not the vague, ambient sense that React inspired the ecosystem from a distance, but named contributors, GitHub issues, and documented dependencies on proposals that hadn’t shipped yet. The clearest single example: a member of React’s own core team is TC39’s credited champion for Rest and Spread Properties, the {...state, updated: true} syntax that shipped in ES2018 and now sits underneath a huge share of everyday JavaScript, React or not.

Rundown

  • A real ECMAScript feature, Rest and Spread Properties (ES2018), was championed by a member of React’s own core team, confirmed directly on TC39’s own proposal tracking and React’s current team page.
  • React’s own official documentation directly used and depended on the in-progress TC39 class-fields proposal syntax for handling events in class components, confirmed via a real GitHub issue on React’s own docs repository.
  • A currently open GitHub issue on TC39’s AsyncContext proposal explicitly names React’s specific problem in discussing how to narrow the proposal’s scope, a documented connection, though AsyncContext has other framework backers too, not React alone.
  • JSX has never been standardized at the language level, and TC39’s own type-annotations proposal explicitly excludes it from scope. An October 2024 TC39 plenary went further, floating a formal split between core JavaScript and a separate, build-tool-only layer that explicitly groups JSX with type annotations.
  • React’s influence on the language’s current direction isn’t uniform: it has explicitly not aligned with TC39’s Signals proposal, the most consequential reactivity effort in the language’s history, despite Signals having the broadest framework-author backing ever assembled.

React and TC39, at a glance

ConnectionWhenSource
Rest/Spread Properties, championed by a React core team memberShipped 2018TC39 proposal tracking
Class-fields syntax, React’s docs depended on the unshipped proposalPre-2022, before formal shippingreactjs/react.dev GitHub issue
AsyncContext proposal names React’s problem by nameOngoing, issue currently opentc39/proposal-async-context
JSX excluded from language-level standardizationOngoing, likely permanenttc39/proposal-type-annotations
React has not aligned with SignalsOngoing since Signals’ 2024 starttc39/proposal-signals

TC39 credits a named contributor

TC39’s own proposal tracking credits Sebastian Markbåge, a member of React’s core team since before React was open-sourced, as champion for Rest and Spread Properties, the syntax behind {...state, updated: true}, one of the most common patterns in everyday JavaScript regardless of framework, and a feature that solved exactly the immutable-update problem React’s own documentation had been teaching developers to work around by hand for years. He described his own dual role plainly in a 2015 interview: “a member of TC39 where he helps shaping up new standards” the ReactJS community cares about. He remains on React’s team page today, still crediting his work shaping React alongside his language-level contributions.

Beyond Markbåge specifically, React’s own official documentation directly depended on an in-progress TC39 proposal: the class-fields syntax for handling events in class components, onClick = () => {...} as an instance field, was React’s own recommended pattern years before that syntax formally shipped. When the proposal changed shape, React’s docs had to change with it. That’s a tighter coupling than React simply inspiring language designers from a distance, it’s React’s own official teaching material built directly on top of an unshipped piece of the language.

The connection is still active

TC39’s AsyncContext proposal aims to let a value implicitly propagate through async code, a promise continuation, an await, without threading it through every function call by hand. It’s still an active proposal, not yet shipped, but an open issue on the proposal’s own repository discusses narrowing its scope specifically so that, in the author’s own words, “React’s issue could be addressed without introducing additional complexity,” a direct reference to React’s problem in an active TC39 discussion, not something inferred from the outside. React isn’t the only framework asking for this: the proposal’s own FRAMEWORKS.md file collects testimonials from other projects too, including a Nuxt-based CMS describing async context as essential for tracking the logged-in user and request context.

Where React’s influence has limits

Two examples mark the boundary. JSX has never been proposed as core language syntax, a deliberate choice TC39 has made more than once: the type-annotations proposal that shipped native TypeScript support in Node explicitly excludes JSX, calling it “an orthogonal feature” outside its scope, and an October 2024 plenary session went further, floating a formal split between core JavaScript and a separate, tools-only layer that groups JSX with type annotations, pointing toward JSX staying build-tool territory permanently.

The clearer limit sits in the language’s most consequential current effort. TC39’s Signals proposal has the broadest framework-author collaboration in JavaScript’s history behind it, Angular, Vue, Solid, Preact, Svelte, Qwik, Ember, and MobX authors all co-designing a native reactive primitive. React has explicitly not aligned with it, building its own compiler-based auto-memoization instead. The same team whose members have shipped real language features is, on the single most active current language-design question, building in a different direction from most of the rest of the framework world.

Related reading

Everything vanilla JavaScript has gained since React launched covers the fuller ECMAScript timeline these contributions sit inside.

RSS Feed Newsletter
Contact us

Latest Blog Posts