Zpět na články

Gutenberg: skvělý koncept, ale vývoj, který bolí

jakub-jetleb-hs
Jakub Jetleb
09.02.2026
fikret-tozak-rfNLa1HL7eY-unsplash

Gutenberg je dnes jasný směr, kterým se WordPress ubírá. Blokový editor je tady už nějakou dobu, ale přiznám se, že dlouho jsem se mu spíš vyhýbal. Ne proto, že by mi nedával smysl — právě naopak. Problém byl vždycky ve vývoji. Až když jsem ho začal používat na reálných projektech, došlo mi, že Gutenberg je vlastně kombinace skvělého konceptu a vývojářské reality, která občas dost bolí.

Tenhle článek není návod ani evangelium. Je to spíš moje cesta k Gutenbergu, včetně všech WTF momentů, kompromisů a důvodů, proč ho dnes používáme — i když ne vždycky s nadšením.

Proč mě Gutenberg vůbec začal zajímat

To, co mě na Gutenbergu zaujalo jako první, nebyl WordPress, ale koncept bloků. Myšlenka, že obsah není jeden dlouhý text nebo směs shortcodů, ale strukturovaná skládanka jednotlivých komponent, mi přišla strašně přirozená.

Bloky v blocích (InnerBlocks) jsou podle mě jeden z nejsilnějších nápadů:

  • dávají obsahům jasnou strukturu
  • jsou pochopitelné i pro netechnické uživatele
  • fungují jako stavebnice, ne jako hack

Z pohledu editorů i klientů to najednou přestane být „redakční systém“ a začíná to být nástroj, se kterým se dá normálně pracovat. V tomhle ohledu má Gutenberg obrovský potenciál a dává smysl i v roce 2026.

První náraz: vývoj bloků a… JavaScript?!

Nadšení ale dost rychle narazilo na realitu vývoje.

Oficiální dokumentace, příklady, návody — všechno v čistém JavaScriptu. Bez typů. Bez kontextu. Bez vysvětlení, proč to funguje. Spousta ukázek ve stylu „takhle to napiš a ono to pojede“.
Stringy všude. Identifikátory bloků jako řetězce. Názvy atributů jako stringy. Selektory jako stringy. Člověk má pocit, že se vrátil o několik let zpátky.
Pro někoho, kdo je zvyklý na TypeScript, React a moderní FE tooling, je tohle dost studená sprcha.

TypeScript vlastně jde. A jde rovnou.

Tady přišel první pozitivní zvrat.

Navzdory tomu, jak dokumentace působí, Gutenberg TypeScript nezakazuje. Naopak — psát bloky v ts a tsx jde v zásadě rovnou. Žádný hack, žádné ohýbání buildu, žádné „unsupported řešení“.

Jakmile jsme začali psát bloky v TypeScriptu, vývoj byl hned příjemnější:

  • lepší práce v IDE
  • větší jistota při refaktoringu
  • čitelnější kód

Jen je trochu škoda, že tohle není víc vidět a komunikováno. Gutenberg proti TypeScriptu nejde — jen ho moc neumí prodat.

Jenže… typování v Gutenbergu je pain

A tady se dostáváme k jádru problému.

TypeScript sice použít jde, ale DX není vždycky takový, jaký by člověk čekal. Typický příklad je useSelect.
Použiješ hook, předáš „něco“ (často magické číslo nebo string), a on ti „něco“ vrátí. V runtime to funguje. V TypeScriptu ale často končíš s:

  • any
  • generickými typy bez reálné hodnoty
  • ručním typováním návratových objektů

Výsledkem je, že TypeScript sice v projektu máš, ale ne vždycky ti skutečně pomáhá. Ne proto, že by TS byl špatně, ale proto, že některá Gutenberg API prostě nejsou navržená s typováním jako prioritou.

String hell & historická zátěž

Hodně těchhle problémů má jedno společné vysvětlení: historii.

Gutenberg je velký, dlouhodobý projekt. Spousta API vznikala v době, kdy TypeScript nebyl standard. Zpětná kompatibilita má obrovskou váhu a čistota API jde často stranou.
Výsledkem je:

  • hodně string-based API
  • implicitní chování
  • minimum typové bezpečnosti

Není to nutně chyba. Je to daň za to, že Gutenberg musí fungovat v obrovském ekosystému a nemůže si dovolit radikální řezy.

Co je na Gutenbergu fakt dobré: UI kit

Aby to nebyl jen rant — Gutenberg má velmi slušný UI kit.

Komponenty pro administraci:

  • jsou konzistentní s WordPress adminem
  • řeší přístupnost
  • šetří spoustu času

Vytváření administrační části bloků je díky tomu překvapivě příjemné. Nemusíš stavět vlastní design systém od nuly a UI drží pohromadě.

Samozřejmě ne všechno tam je a některé komponenty si stejně musíš:

  • obalit
  • rozšířit
  • nebo napsat vlastní

Ale jako základ je to jedna z nejsilnějších částí Gutenbergu.

Jak jsme to nakonec řešili my

Nakonec jsme skončili u pragmatického přístupu.

  • TypeScript používáme všude, kde to dává smysl
  • nad některými Gutenberg API máme vlastní helpery
  • UI komponenty často wrapujeme do vlastních abstrakcí
  • nesnažíme se o 100% typovou čistotu za každou cenu

Smířili jsme se s tím, že Gutenberg nikdy nebude čistý React projekt. A jakmile tohle přijmeš, začne se s ním pracovat o něco líp.

Závěrečná myšlenka

Gutenberg je podle mě skvělý koncept. Blokový přístup k obsahu dává smysl a má budoucnost. Zároveň je ale fér říct, že vývoj vlastních bloků není pro každého.

Bolí. Občas frustruje.
Občas nutí dělat kompromisy.

Ale pokud víš, proč Gutenberg používáš, přijmeš jeho limity a nesnažíš se z něj udělat něco, čím nikdy neměl být, dokáže být velmi silným nástrojem.
A možná přesně tohle je realita dnešního WordPressu.

 

Sdílejte článek na:

Další z kategorie

Mám zájem o...