Przejdź do treści
React Flow: jak tworzyć interaktywne schematy i edytory?

React Flow: jak tworzyć interaktywne schematy i edytory?

Opublikowano: 16 października 2026| Zaktualizowano: 16 października 2026

Gdy użytkownik ma zmieniać przebieg procesu, sam diagram przestaje wystarczać. Potrzebny jest edytor, który pozwala przesuwać elementy, tworzyć połączenia i zapisywać wynik zgodnie z regułami firmy. React Flow daje zespołowi React gotową warstwę interakcji, a logikę procesu i danych nadal projektujemy samodzielnie.

Krótka odpowiedź

React Flow to biblioteka React do budowania interaktywnych diagramów i edytorów opartych na węzłach oraz połączeniach. Sprawdza się w konfiguratorach, wizualnych workflow i mapach integracji, gdy użytkownik ma edytować strukturę na płótnie.

Biblioteka obsługuje renderowanie, przesuwanie, zaznaczanie, powiększanie i zdarzenia; reguły biznesowe, autoryzację oraz trwały zapis trzeba zbudować w aplikacji.

Usługi KC Mobile

Potrzebujesz pomocy w tym temacie?

Czytasz poradnik „React Flow: jak tworzyć interaktywne schematy i edytory?”. Napisz, co chcesz zrobić i na jakim etapie jesteś. Ustalimy, czy możemy pomóc i jaki zakres prac będzie potrzebny.

Czym jest React Flow i do jakich interfejsów służy?

React Flow jest biblioteką komponentów React do tworzenia diagramów, w których użytkownik może wchodzić w interakcję z elementami. Projekt rozwija zespół xyflow, a aktualny pakiet instaluje się jako `@xyflow/react`. Komponent `` renderuje węzły i połączenia, obsługuje interakcje oraz może pracować ze stanem kontrolowanym przez aplikację albo z własnym stanem.

Statyczny diagram pokazuje ustaloną strukturę, na przykład schemat obiegu dokumentu na stronie pomocy. Interaktywny edytor dodaje działania: użytkownik przenosi kroki, łączy je, wybiera element i zmienia jego parametry. Te różnice mają znaczenie dla uprawnień, walidacji, zapisu oraz późniejszego wykonania procesu.

Porównanie możliwości statycznych diagramów i edytorów React Flow
PotrzebaStatyczny diagramEdytor w React Flow
Pokazanie przepływuTakTak
Przesuwanie elementów przez użytkownikaNieTak, jeśli włączone
Edycja relacjiNieTak, przez połączenia i obsługę zdarzeń
Reguły biznesoweZwykle poza diagramemAplikacja musi je zdefiniować
Zapis zmianNiepotrzebny lub ręcznyWymaga własnego mechanizmu

Biblioteka pasuje do wizualnego edytora procesów, kreatora automatyzacji, konfiguratora produktu lub mapy przepływu danych. Nie zastępuje silnika workflow: dodanie krawędzi na ekranie samo w sobie nie uruchamia zamówienia ani nie gwarantuje, że proces jest poprawny. Granice odpowiedzialności warto opisać już podczas wyboru architektury, podobnie jak przy integracji systemów i API.

Czytasz poradnik „React Flow: jak tworzyć interaktywne schematy i edytory?”. Napisz, co chcesz zrobić i na jakim etapie jesteś. Ustalimy, czy możemy pomóc i jaki zakres prac będzie potrzebny. Omów temat tego poradnika

Jakie elementy składają się na diagram?

Diagram w React Flow opisuje przede wszystkim węzły i krawędzie, a pozostałe elementy wspierają połączenia oraz nawigację po płótnie. Model danych powinien być czytelny dla aplikacji, ponieważ pozycje i relacje z diagramu mogą wpływać na zachowanie procesu.

Elementy React Flow, ich role i przykłady w procesie zamówienia
ElementRola w bibliotecePrzykład w procesie zamówienia
`nodes`Węzły z unikalnym `id`, pozycją, typem i danymi"Nowe zamówienie", "Sprawdź płatność", "Wyślij do magazynu"
`edges`Relacje między węzłami; zawierają m.in. identyfikatory źródła i celuPołączenie od sprawdzenia płatności do wysyłki
`handles`Punkty wejścia i wyjścia węzła, używane do tworzenia relacjiWejście "zamówienie", wyjście "opłacone"
`viewport`Pozycja i poziom powiększenia widoku diagramuPowrót użytkownika do miejsca, w którym zakończył edycję
`Controls`Gotowe przyciski powiększania, pomniejszania, dopasowania widoku i blokady interakcjiPrzywrócenie całego procesu w kadrze

Obiekt węzła może przechowywać typ oraz dane domenowe, ale nie należy traktować pola `data` jako zamiennika całego modelu zamówienia. Węzeł może zawierać identyfikator kroku, konfigurację i informację o stanie prezentacji. Dane finansowe czy dane osobowe powinny podlegać własnym zasadom dostępu i przechowywania.

`Handle` wskazuje, gdzie użytkownik może rozpocząć lub zakończyć połączenie. Jego `type` to `source` albo `target`, a `id` pozwala odróżnić kilka punktów na tym samym węźle. `isValidConnection` przyjmuje połączenie i zwraca `true` lub `false`; dokumentacja zaleca umieszczenie logiki walidacji na głównym komponencie, jeśli to możliwe, zamiast powtarzać ją dla każdego uchwytu.

Jak uruchomić pierwszy projekt z React Flow?

Minimalny prototyp powinien sprawdzić cały cykl interakcji: renderowanie węzłów, przesunięcie ich i dodanie relacji. Zacznij od projektu React, zainstaluj pakiet i zaimportuj wymagane style.

1. W istniejącym projekcie uruchom `npm install @xyflow/react`.
2. W komponencie zaimportuj `ReactFlow`, `useState`, `useCallback`, `addEdge`, `applyNodeChanges` i `applyEdgeChanges` z `@xyflow/react`.
3. Przygotuj dwa obiekty węzłów z różnymi identyfikatorami i pozycjami oraz pustą lub wstępnie utworzoną tablicę krawędzi.
4. Podłącz `onNodesChange` i `onEdgesChange`, aby aktualizować stan po przesuwaniu i zmianach diagramu. W `onConnect` użyj `addEdge`, aby dodać relację z połączenia utworzonego przez użytkownika.
5. Nadaj kontenerowi diagramu określoną wysokość i zaimportuj `@xyflow/react/dist/style.css`.

Przykładowy szkielet stanu może wyglądać tak: `const [nodes, setNodes] = useState(initialNodes);` oraz `const [edges, setEdges] = useState([]);`. W kontrolowanym diagramie aplikacja odpowiada za przekazanie aktualnych tablic i obsługę zmian. Gdy style się nie ładują lub canvas ma zerową wysokość, najpierw sprawdź kolejność importu CSS i wysokość rodzica komponentu.

Dokumentacja Quick Start zwraca uwagę, że w projektach z Tailwind CSS 4 główny arkusz React Flow należy importować po `tailwindcss` w pliku globalnym, takim jak `global.css` lub `index.css`. To zapobiega nadpisywaniu stylów w nieoczekiwanej kolejności. Do szybkiego sprawdzenia pomysłu można też użyć oficjalnego szablonu Vite React Flow.

Prototyp nie jest jeszcze gotowym edytorem produkcyjnym. Przed rozbudową ustal, czy aplikacja będzie właścicielem stanu, jak zapisze wersję procesu i kto może zmieniać opublikowany diagram. Przy wyborze technologii projektu porównaj też wymagania React Flow z innymi decyzjami frontendowymi, np. wyborem między Bootstrapem i Tailwind CSS.

Schemat przedstawia podstawową kolejność uruchomienia projektu React Flow, od instalacji biblioteki po przygotowanie widocznego diagramu.

Jak zaprojektować własne węzły i połączenia?

Własny typ węzła ma sens, gdy element procesu ma inne dane lub zachowanie niż standardowy prostokąt. W React Flow deklarujesz komponenty w `nodeTypes`, a węzeł otrzymuje między innymi `data` oraz właściwości potrzebne do prezentacji i interakcji. Wewnątrz komponentu umieszczasz `Handle` dla wejść i wyjść.

Przykład: węzeł "Sprawdzenie płatności" może mieć jedno wejście dla zamówienia oraz dwa wyjścia: "opłacone" i "odrzucone". Aplikacja rozpoznaje typy uchwytów i sprawdza przy połączeniu, czy dany krok może przekazać taki rodzaj wyniku do kolejnego kroku. Walidacja nie powinna opierać się wyłącznie na kolorze ani tekście widocznym w węźle.

Użyj standardowego węzła, gdy wystarczy tytuł, podstawowe punkty wejścia i wyjścia oraz domyślna prezentacja. Komponent niestandardowy jest uzasadniony, kiedy krok wymaga własnego formularza, stanu błędu, różnych portów lub zwięzłego podglądu konfiguracji. Każdy dodatkowy typ zwiększa koszt utrzymania: trzeba przetestować jego wygląd, zmianę danych, połączenia i zachowanie po odtworzeniu diagramu.

`isValidConnection` powinno weryfikować reguły, które można ocenić na podstawie diagramu, np. zakaz łączenia węzła z samym sobą albo zgodność typów portów. Reguły zależne od aktualnego stanu zamówienia, dostępności magazynu czy uprawnień użytkownika wymagają sprawdzenia również po stronie serwera. Walidacja w przeglądarce poprawia informację zwrotną, lecz nie jest zabezpieczeniem API.

Jak zapisywać i odtwarzać schemat?

React Flow udostępnia `toObject` w instancji, aby pobrać obiekt diagramu, a oficjalny przykład Save and Restore pokazuje też zapis lokalnego stanu `nodes` i `edges`. Trwałość, dostęp do danych oraz obsługę błędów projektuje aplikacja. Przed zapisem należy sprawdzić schemat, a przy odczycie potraktować dane z bazy jak wejście wymagające walidacji.

Sposoby przechowywania diagramu, ich zastosowania i główne ryzyka
SposóbCo przechowujeKiedy pasujeGłówne ryzyko
Lokalny stan ReactAktualny diagram w pamięci widokuEdycja bez trwałego zapisuZmiany znikają po odświeżeniu lub zamknięciu widoku
JSON w przeglądarce lub plikuSerializowany diagram, np. eksport ręcznyPrototyp, import/eksport lub praca offlineBrak automatycznej synchronizacji i kontroli dostępu
API i baza danychDiagram przypisany do użytkownika, firmy lub wersji procesuWspółdzielona aplikacja biznesowaTrzeba wdrożyć autoryzację, walidację, migracje i obsługę konfliktów

Trwały format warto opisać jako własny kontrakt, np. `{ schemaVersion, nodes, edges, viewport }`. Węzły i relacje powinny mieć stabilne identyfikatory, a `schemaVersion` pozwala rozpoznać strukturę, którą trzeba zmigrować. Nie zapisuj do bazy pól wyliczanych lub wewnętrznych bez sprawdzenia, czy rzeczywiście są częścią kontraktu aplikacji.

Przed zapisem zweryfikuj wymagane pola, dozwolone typy węzłów, niepowtarzalność identyfikatorów, istnienie końców każdej krawędzi oraz limit rozmiaru payloadu. Przy odczycie nieznana wersja może zakończyć się komunikatem "Nie można otworzyć diagramu w tej wersji" i propozycją migracji lub kontaktu z administratorem. Błędy API, takie jak brak uprawnień lub konflikt wersji, powinny zachować lokalny stan edycji i jasno informować o kolejnym kroku.

Wersjonowanie procesu i wersjonowanie JSON rozwiązują różne problemy. Pierwsze odpowiada na pytanie, którą zatwierdzoną definicję procesu realizuje firma; drugie pozwala aplikacji odczytać format danych po zmianie kodu. Zmiana modelu powinna mieć migrację, test odczytu starszej próbki i strategię wycofania, zanim trafi do użytkowników.

Lista kontrolna porządkuje walidację diagramu przed zapisem i po odczycie, pomagając wykryć błędne dane i niezgodność wersji.

Jak dopasować edytor do procesu biznesowego?

Model procesu powinien wynikać z decyzji operacyjnych, a nie z układu elementów na płótnie. Dla zamówienia można odwzorować przyjęcie, kontrolę płatności, kompletację, wysyłkę i obsługę wyjątku jako osobne kroki, a krawędziom przypisać warunki przejścia.

Elementy procesu, zakres edycji użytkownika i dane tylko do odczytu
Element procesuCo użytkownik może zmienićCo zwykle powinno być tylko do odczytu
Krok do wykonaniaNazwę roboczą, opis, wybór z zatwierdzonego kataloguIdentyfikator systemowy, historię wykonań
Warunek przejściaWartość warunku w dozwolonym formularzuWynik walidacji i zapis audytowy
Integracja z systememWskazane przez administratora połączenieSekrety, tokeny i dane uwierzytelniające
Status diagramuOpis roboczy, kolejność w szkicuStatus publikacji i wersja aktualnie wykonywana

W praktyce dobrze działa rozdzielenie trybu edycji od trybu podglądu. Osoba układająca proces może dodawać dozwolone kroki, natomiast operator wykonujący zamówienie widzi aktualny przepływ i status bez możliwości przypadkowego przesunięcia węzłów. To rozdzielenie ogranicza ryzyko zmiany aktywnego procesu podczas pracy operacyjnej.

Perspektywa KC Mobile: podczas projektowania edytora najpierw ustalamy, które decyzje użytkownik ma podejmować na płótnie, a które powinny wynikać z konfiguracji systemowej. Jeśli oba zakresy mieszają się w jednym widoku, zespół musi później dopisywać wyjątki do uprawnień, formularzy i zapisu. Warto więc przetestować na prototypie typowy przebieg oraz przypadek błędny, zanim diagram stanie się częścią codziennej pracy.

Jak zadbać o wydajność i dostępność?

Wydajność zależy nie tylko od liczby węzłów, lecz także od tego, jak często aplikacja przelicza i renderuje ich zawartość. Dokumentacja zaleca ograniczanie zbędnych renderów, stabilne referencje dla funkcji i danych przekazywanych do React Flow oraz ostrożne używanie `onlyRenderVisibleElements`, które może pomóc przy dużych diagramach, ale samo dodaje narzut.

Przed wdrożeniem zdefiniuj scenariusze testowe: przesunięcie węzła z rozbudowanym formularzem, zaznaczanie grupy, zoomowanie, wczytanie największego przewidywanego diagramu i zapis po serii zmian. Obserwuj opóźnienie reakcji, błędy konsoli i zużycie pamięci na docelowych urządzeniach. Dla długiego przepływu rozważ filtrowanie, grupowanie lub widoki etapów, zamiast zmuszać użytkownika do ciągłego powiększania całego płótna.

React Flow ma ustawienia focusowania węzłów i krawędzi oraz konfigurowalne etykiety ARIA przez `ariaLabelConfig`. Nie zwalnia to z testów czytnikiem ekranu i klawiaturą. Zapewnij widoczny fokus, opisowe nazwy kroków, kontrast stanu błędu niezależny od samego koloru oraz alternatywę dla przeciągania, na przykład wybór kroku i polecenie dodania połączenia.

Sprawdź, czy użytkownik może powiększyć widok, przesunąć płótno, wybrać element i uruchomić jego edycję bez myszy. Przetestuj też powiększenie przeglądarki i wąski viewport. Jeżeli interfejs ma być częścią strony firmowej lub panelu CMS, uwzględnij jego rolę w całym produkcie, a nie tylko w samym diagramie; pomocny punkt wyjścia stanowi porównanie systemów CMS.

Kiedy React Flow nie jest dobrym wyborem?

React Flow sprawdza się wtedy, gdy użytkownik potrzebuje edytować relacje na dwuwymiarowym płótnie. Przy prostym, niezmiennym schemacie pełny edytor może zwiększyć zakres kodu, testów i dostępności bez poprawy zadania użytkownika. Wybór zależy od tego, czy diagram ma być tylko reprezentacją, czy narzędziem do konfigurowania działania firmy.

Typy interfejsów diagramów, interakcje, nakład implementacji i utrzymanie
Typ interfejsuPoziom interakcjiNakład implementacjiKoszt utrzymania
Prosty diagram informacyjnyOdczyt i ewentualne powiększanieNiski przy gotowej grafice lub renderowaniuNiski, jeśli struktura się nie zmienia
Edytor procesówWęzły, relacje, formularze i walidacjaŚredni lub wysoki zależnie od reguł i rólRosnący wraz z typami kroków i wersjami
Mapa danychOdczyt wielu relacji i nawigacjaŚredni; zależy od źródeł i skali danychWymaga kontroli jakości i aktualności danych
Workflow automatyzacjiEdycja, publikacja, wykonanie i obsługa błędówWysoki, bo diagram łączy się z logiką wykonawcząWymaga monitoringu i zgodności wersji

Jeśli użytkownik ma wyłącznie zrozumieć kolejność kroków, wystarczy lista, tabela lub statyczny diagram. Jeśli musi konfigurować połączenia, a zespół potrzebuje komponentów React do swobodnej prezentacji, React Flow daje mocną bazę interfejsu. Sam nie dostarczy jednak kolejki zadań, orkiestracji, kontroli uprawnień ani rejestrowania wykonania.

Wdrożenie edytora warto powierzyć zespołowi, który połączy frontend z modelem domenowym, API i obsługą wersji. Tworzenie aplikacji w React może objąć projekt interfejsu, warstwę logiki oraz integrację z systemami używanymi przez firmę. W przypadku rozbudowanego procesu zakres prac należy ustalić wokół realnych ról i reguł, a nie samego wyglądu diagramu.

Więcej poradników w tym temacie

Wspomniane narzędzia

ReactReact Flow@xyflow/reactViteTailwind CSS 4React DevTools

Najczęściej zadawane pytania

React Flow co to jest i do czego służy?
React Flow to biblioteka React do tworzenia interaktywnych diagramów z węzłami i połączeniami. Wykorzystuje się ją m.in. w edytorach procesów, konfiguratorach i wizualnych mapach integracji. Biblioteka obsługuje interfejs diagramu, ale logikę biznesową i trwały zapis buduje aplikacja.
Czy React Flow jest darmowy?
Pakiet React Flow jest dostępny jako biblioteka open source. Projekt xyflow oferuje także osobne produkty i usługi, dlatego przy ocenie konkretnej funkcji komercyjnej sprawdź aktualne informacje na stronie producenta. Własny koszt projektu zależy przede wszystkim od logiki, integracji i utrzymania edytora.
Jak zapisać diagram React Flow do bazy danych?
Pobierz stan węzłów i krawędzi, np. z lokalnego stanu aplikacji lub przez `toObject`, a następnie wyślij go do własnego API. Przed zapisem sprawdź strukturę, identyfikatory, dozwolone typy i wersję schematu. API powinno kontrolować uprawnienia i obsługiwać błędy oraz konflikty wersji.
Czy w React Flow można tworzyć własne typy węzłów?
Tak. Zdefiniuj komponent w React i przekaż go w mapie `nodeTypes`, a w jego wnętrzu umieść elementy oraz uchwyty `Handle`. Własny typ warto dodać wtedy, gdy krok procesu ma odrębne dane lub zachowanie, nie tylko inny kolor.
Czym różnią się nodes i edges w React Flow?
`nodes` to elementy diagramu z identyfikatorem, pozycją, typem i danymi. `edges` opisują połączenia między identyfikatorami węzłów, opcjonalnie także konkretne uchwyty wejścia i wyjścia. W procesie zamówienia węzłem jest kontrola płatności, a krawędzią przejście do kompletacji.
#React Flow#React#xyflow#edytor procesów#diagramy interaktywne#nodes i edges#workflow#frontend
Zdjęcie autora: Krzysztof Czapnik
O autorze

Krzysztof Czapnik

Founder & Technical Lead, KC Mobile

Projektuję i rozwijam strony WordPress, sklepy WooCommerce oraz aplikacje internetowe. Łączę projektowanie z programowaniem, integracjami i technicznym SEO. Projekty KC Mobile prowadzę osobiście.

Potrzebujesz pomocy z tym tematem? Napisz - odpowiem osobiście w 24h.

Potrzebujesz pomocy w tym temacie?

Czytasz poradnik „React Flow: jak tworzyć interaktywne schematy i edytory?”. Napisz, co chcesz zrobić i na jakim etapie jesteś. Ustalimy, czy możemy pomóc i jaki zakres prac będzie potrzebny.