React compiler

2026. május 15.

A React compiler egy olyan eszköz, ami a fejlesztők helyett elvégzi a komponensek memoizációját, minden olyan helyzetben, ahol ezt biztonságosan meg tudja tenni, ezáltal javítva az applikáció teljesítményét.

Mire jó?

A React compiler elvégzi azokat az optimalizációkat, amelyeket különben a fejlesztőnek kellene megtenni a useMemo, useCallback és React.memo segítségével. Mindezt build időben, szóval a kód is egyszerűbb marad. Ezáltal időt spórol és segít elkerülni a felsorolt eszközök helytelen alkalmazását. Jelenleg opcionális eszköz, de a jövőben lehetnek olyan React funkciók, amelyek szorosabban építhetnek a compiler működésére.


Az eslint-plugin-react-hooks jelenléte a projektben segít, hogy a linter szóljon, ha olyan kódot írunk, ami megakadályozza az optimális memoizációt. A React Compiler akkor tud hatékonyan működni, ha a komponenseink tiszták (pure), vagyis ugyanabból a bemenetből mindig ugyanazt a kimenetet adják vissza, és renderelés közben nem végeznek mellékhatásokat.


Hogyan adjuk a projekthez?

Elsősorban React 19 használata mellett ajánlott, de megoldható, hogy 18 vagy 17-es React-es projektben is alkalmazzuk. A React dokumentációja érthetően bemutatja, hogy milyen projekttípus esetében, hogyan használható. Egy új Vite (@vitejs/plugin-react 6.0.0-nál magasabb verzióval) + Typescript projekt esetében a következő eszközök installálása javasolt:

npm i -D @rolldown/plugin-babel @babel/core babel-plugin-react-compiler @types/babel__core

A vite.config.ts fájlt a következőkkel kell kiegészítenünk:

...
import react, { reactCompilerPreset } from '@vitejs/plugin-react'
import babel from '@rolldown/plugin-babel'

export default defineConfig({
  plugins: [
    ...,
    react(),
    babel({
      presets: [reactCompilerPreset()],
    }),
    ...
  ],
  ...
})

Mindig érdemes a legfrissebb dokumentációt követni, mert a compiler ökoszisztéma még elég gyorsan változik.


Ellenőrizhetjük, hogy sikerült-e, ha a React Developer Tools-t használva látjuk a kis Memo jelöléseket a komponens fában.

React Developer Tools komponens nézet
React Developer Tools komponens nézet

Mire figyeljünk, amit nem old meg helyettünk?

Előfordulhat, hogy egy projektben érthetetlen lassulásokat tapasztalunk. Ilyen eset lehet, amikor külső könyvtárból kapott objektumot adunk meg függőségnek, feltételezve, hogy elvégezték a memoizációt. Ilyenkor kiderülhet, hogy csak az objektum egyes elemeire igaz ez, nem a teljes objektumra és ha csak a használt elemet adjuk meg függőségként, akkor elkerülhetjük a felesleges újrarendereléseket.
Ahhoz, hogy maximálisan ki tudjuk használni a compiler nyújtotta kényelmet és előnyöket, továbbra is fontos értenünk, hogy milyen tényezők azok, amelyek lassuláshoz vezetnek. Fontos szem előtt tartani, hogy ez az eszköz a renderelést optimalizálja, továbbra is oda kell figyelnünk a megfelelő állapot kezelésre, helyes adatstruktúrákra, számítások optimalizálására.