Not hypothetical — each of these actually shipped, was caught by testing or by the user, and was fixed. React had none.
vanilla-static
<slot> without Shadow DOM silently discards content. The reference pattern's this.innerHTML = ... re-render wiped out the ★ Save button on every card, every time.
Fix: attachShadow({mode:'open'}) and link the stylesheet inside the shadow root.
vanilla-static — real Firefox
file:// isolates storage per file. Firefox's privacy.file_unique_origin gives every .html file its own origin — a favorite saved on Browse never showed on Planner. Chrome/Edge (and Playwright's own bundled Firefox) don't enforce this, which is exactly why it wasn't caught until the user tested in real Firefox.
Fix: documented — serve over http:// instead of opening the file directly.
vanilla-spa
pushState() throws under file://. A root-absolute path like /browse isn't within the file's own directory, so the browser throws a SecurityError — every nav-link click silently did nothing.
Fix: try/catch around pushState; the view still switches even when the address bar can't update.
vanilla-spa
Absolute stylesheet path 404s under file://. The trail-card's Shadow DOM linked /css/trailhead.css, which resolves to the filesystem root with no server — every card rendered unstyled.
Fix: relative path instead, which resolves correctly under file:// and real http:// serving alike.
vue
<Transition> needs exactly one root element. All three views had multi-root templates (a Vue fragment) — this didn't just skip the fade animation, it silently broke routing entirely; RouterView never swapped content.
Fix: wrap each view's template in a single root <div>.
angular — unresolved
ng test can't see localStorage. Angular 22's new experimental Vitest+jsdom unit-test runner has window.localStorage === undefined inside the TestBed DOM, even with jsdom's URL explicitly configured.
Status: documented as a tooling gap, not an app defect — the real app was fully verified in a real browser; the test wasn't deleted, just updated and left honestly failing on this one point.