Any render-time error kills the whole UI. No boundary, no fallback, just a blank page and lost unsaved work.
Also local storage encoding is brittle (btoa), non-latin text/emoji in labels can blow autosave.
HTTP layer error handling is also weak: fetch failures bubble weirdly, and some reject paths pass unresolved body promises, so catches don’t get useful messages.
repro:
-
create/edit graph with emoji/non-latin label, trigger autosave
-
drop network, do server push/pull
-
corrupt one saved graph entry in localStorage and reload
expected: app should degrade gracefully: fallback UI, proper error messages, and safe unicode/local storage handling.