React 19.3 vyšel 9. září 2026. Většina článků o vydání vypadá jako seznam funkcí; já je čtu jako seznam kódu, který lze odstranit. Oproti Reactu 18, na němž stále běží řada produkčních aplikací, se řada 19 týká méně nové syntaxe a více opuštění obezliček, které si každý tým napsal sám: stavových automatů formulářů, wrapperů kolem forwardRef, memo všude a kontrol typeof window.
React 19.0 položil základy. Actions a useActionState nahradily ručně skládanou trojici isPending / error / data u každého formuláře. useOptimistic změnil optimistické UI na hook místo reduceru. use() čte během renderování promise nebo context, a to i podmíněně. ref se změnil na běžnou prop, takže forwardRef patří minulosti; <Context> může fungovat jako vlastní provider; <title> a <meta> se z libovolné komponenty přesouvají do head. Změna ale měla svou cenu: string refs, legacy context, ReactDOM.render a propTypes u funkčních komponent zmizely. Aplikace React 18 se starými závislostmi proto potřebuje skutečnou migraci, ne jen zvýšení čísla verze.
React 19.2 a React Compiler 1.0 změnily pocit z práce. <Activity mode="hidden"> ponechá panel nebo další stránku připojenou i s jejím stavem, zatímco pozastaví její efekty — dříve jsme to napodobovali pomocí display: none a doufali. useEffectEvent ukončuje spor s pravidlem exhaustive-deps: efekt reaguje na roomId, callback jen čte nejnovější téma. Částečný prerendering (prerender a pak resume) umožní poslat statickou kostru z CDN, zatímco dynamická část přichází streamem. Compiler navíc učinil většinu ručních volání useMemo, useCallback a React.memo zbytečnými. Ponechávám je, když knihovna potřebuje referenční identitu, ale už je nepřidávám automaticky.
React 19.3 se věnuje přechodům a hranicím DOM. <ViewTransition> je nyní stabilní: obalíte prvek, změnu označíte pomocí startTransition a prohlížeč animuje vstup, odchod i sdílené prvky. addTransitionType umožňuje, aby „next“ a „previous“ při stejné změně stavu klouzaly různými směry. Fragment refs nabízejí focus(), observeUsing() pro IntersectionObserver a měření skupiny sousedních prvků bez dalšího wrapper divu. use(browser()) z react-dom nahrazuje kontrolu typeof window !== "undefined": komponenta se na serveru suspenduje, zobrazí Suspense fallback a po hydrataci se vykreslí na klientu. Server Components mohou přímo vykreslit <Context value> bez provider souboru s „use client“; react-dom také předává objekty Trusted Types bez převodu na řetězce, takže React funguje s přísnou CSP a require-trusted-types-for.
Při přímém srovnání je rozdíl vidět v importechn. V Reactu 18 formulář se stavem čekání, optimistickou aktualizací a animovaným seznamem znamenal tři knihovny a vlastní hook; v 19.3 stačí useActionState, useOptimistic a <ViewTransition> přímo z Reactu. V 18 „vykreslit jen na klientu“ znamenalo příznak mounted a posun layoutu; teď je to jeden řádek a hranice Suspense. Výkon v 18 vyžadoval disciplínu při použití memo; dnes Compiler a React Performance Tracks v Chrome DevTools ukážou, co skutečně zablokovalo snímek.
Na produktu, který pracuje s penězi, bych nepřecházel z 18 na 19.3 jediným pull requestem. Můj záměrně nudný postup: nejdřív 18.3 kvůli upozorněním na zastaralé prvky, potom 19 s oficiálními codemody, pak Compiler na jedné routě za flagem a nakonec nová API jen tam, kde mažou kód. Samotná 19.3 je rozšiřující a oznámení neuvádí žádné nekompatibilní změny; bezpečnostní upozornění pro Server Components z prosince 2025 však připomínají, že patch verze jsou stejně důležité jako hlavní. Pokud vaše aplikace stále běží na 18, pošlete mi package.json a tři nejdůležitější obrazovky. Navrhnu pořadí upgradu a seznam kódu, který lze odstranit.
Dejte příštímu produktu někoho, kdo zůstane.
Chcete začít? Napište mi – mohu začít hned a zůstat. Dlouhodobé retainery, ne dvoutýdenní předání. Proberme váš projekt, požadavky a nejlepší cestu vpřed.