React Compiler trece pe Rust, iar Next.js 16.3 îl poate folosi deja

Echipa React a rescris React Compiler în Rust, iar rezultatele încep să se vadă în timpii reali de build. Portul în Rust a ajuns în monorepo-ul React la începutul lunii iunie (PR #36173), iar Vercel l-a integrat în Turbopack câteva săptămâni mai târziu. În Next.js 16.3 poți acum opta pentru compilatorul nativ și renunța complet la calea veche Babel.
Recapitulare rapidă pentru cei care nu l-au folosit: React Compiler (numit cândva React Forget) memoizează automat componentele și hook-urile tale, astfel încât nu mai trebuie să scrii manual useMemo și useCallback. Este stabil în Next.js de la versiunea 16.0. Problema era modul în care rula. Ca transformare Babel adăuga overhead de execuție JavaScript la fiecare build, iar pe aplicații mari devenea un bottleneck real, în timp ce pipeline-ul Rust al Turbopack stătea inactiv așteptând.
Ce a devenit mai rapid
Rescrierea în Rust schimbă calculul economic. Echipa React raportează că portul rulează de aproximativ 3 ori mai rapid ca plugin Babel și de până la 10 ori pe logica de transformare izolată. Câștigul cel mai mare vine când compilatorul nu mai este deloc un plugin. Legat direct în Turbopack, Andrew Imm de la Vercel a măsurat o compilare cu peste 40% mai rapidă pe v0, propria lor aplicație Next.js de mari dimensiuni, parțial deoarece calea anterioară prin plugin-ul SWC suferea de un cold start lent al WebAssembly. Cifrele oficiale Next.js indică o compilare a rutelor cu 20 până la 50% mai rapidă pe aplicațiile lor de test.
Un avertisment sincer înainte să te entuziasmezi: este experimental, iar echipa React a etichetat portul însuși drept lucru în progres. Arhitectura a fost ghidată de oameni, dar, după spusele autorului, a fost scrisă în mare parte de AI. Toate fixture-urile de test ale compilatorului trec și rezultatul se potrivește cu versiunea TypeScript pentru 99,9% din codul sursă al Meta. Dar 99,9% nu înseamnă 100%, și există un motiv pentru care este opt-in.
Cum am proceda noi
Când construim aplicații cloud-native pentru clienți enterprise, o schimbare de compilator sau bundler este exact genul de modificare care pare gratuită și care înghite un sprint întreg. Tratează-o ca pe un exercițiu de măsurare, nu de credință.
Activează-l într-un branch, nu în lane-ul principal de build. În Next.js 16.3 flag-urile sunt explicite: setează reactCompiler: true și experimental.turbopackRustReactCompiler: true, și ține minte că afectează doar calea Turbopack, nu --webpack. Apoi benchmarkează propria ta aplicație. Câștigul de 20 până la 50% este cifra Vercel pentru propriile lor aplicații. Câștigul tău depinde de complexitatea componentelor pentru compilator și cât de reci pornesc cache-urile CI.
Partea pe care am urmări-o cel mai atent este paritatea de output. Un compilator care memoizează ușor diferit poate schimba comportamentul de randare în moduri pe care testele unitare le ratează. Din munca noastră cu PHP și Docker am învățat să fixăm versiunile de toolchain în CI și să comparăm output-ul de build între calea veche și cea nouă înainte de livrare. Fă la fel și aici: rulează întreaga suită end-to-end pe calea Rust, compară output-ul de bundle și păstrează calea Babel ca rollback la un singur flag până îți acorzi încredere.
Semnalul mai amplu
Există o tendință de ordinul doi care merită menționată. Aceasta face parte dintr-o mișcare constantă a tooling-ului frontend spre Rust. SWC se construiește acum pe compilatorul oficial Rust, Oxc îl livrează ca crates, iar Rspack 2.1 a adăugat suport nativ. Nu fiecare tentativă a fost curată — maintainer-ul Rolldown și-a retras integrarea Rust React Compiler pentru a o pune în ordine mai întâi — deci tranziția nu este finalizată. Dar direcția este stabilită. Dacă tooling-ul tău de build este o grămadă de loadere Webpack personalizate și require-uri dinamice, acea datorie va deveni tot mai costisitoare de purtat.
Echipele mobile nu ar trebui să ignore asta. În proiectele noastre native și React Native același tipar se menține: compilatorul rulează și acolo, iar timpii de build previzibili contează și mai mult când CI-ul tău jonglează deja cu toolchain-uri native. Și din perspectiva securității, din angajamentele noastre de pentesting lecția este plictisitoare, dar reală. Fiecare dependință nouă de build înseamnă o nouă suprafață de supply-chain. Un compilator experimental, asistat de AI, în pipeline-ul tău merită o revizuire a dependințelor, nu o instalare oarbă.
Un lucru de făcut azi
Chiar dacă nu vei activa niciodată flag-ul Rust: dacă ești pe Next.js și nu folosești deloc React Compiler, aceea este ocazia ratată mai mare. Activează reactCompiler într-un branch, șterge un lot de apeluri manuale useMemo și useCallback și măsoară impactul asupra randării și build-ului. Portul Rust face doar ca acea cale să fie mai ieftină de adoptat mai târziu, odată ce iese din experimental.
Dacă urmărirea timpilor de build sau desfacerea unui morman de configurații bundler personalizate sună familiar, hai să vorbim. Ajutăm echipele web și mobile să livreze mai repede fără să parieze producția pe un flag experimental.