From 906df8154c5190b745ee74a8f123595a93f9d631 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 24 Jun 2026 23:47:18 -0400 Subject: [PATCH] docs: mark hydration covered + add parity status summary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - hydration -> โœ… (already covered natively: ~30 test/fuzz funcs in internal/runtime hydration_*_test.go) - add a Status section: every applicable test with a GWC analog is ported and passing; remaining non-โœ… are architectural N/As or the one area where GWC's own feature (out-of-order Suspense streaming) is incomplete. Doc-only. No version bump. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/REACT_TEST_PARITY.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/REACT_TEST_PARITY.md b/docs/REACT_TEST_PARITY.md index f1d1b9a2..95034a79 100644 --- a/docs/REACT_TEST_PARITY.md +++ b/docs/REACT_TEST_PARITY.md @@ -11,6 +11,20 @@ applicable surface is the core element/reconciler/hooks/SSR behavior. Legend: โœ… done ยท ๐Ÿ”ถ partial ยท โฌœ todo ยท ๐Ÿšซ N/A (no GWC analog / architectural) +## Status + +Every applicable React test with a GWC analog has been ported (or was already +covered) and passes. The remaining non-โœ… items are: (a) ๐Ÿšซ architectural +non-analogs โ€” cloneElement, the `React.memo` wrapper, `Children.only`, JSX +transform, ES6 classes, concurrent/act/lazy/expiration, SSR primitive children, +and the whole devtools/native/server-dom-webpack family; and (b) the single ๐Ÿ”ถ +where GWC's *own* feature is partial โ€” full Suspense/async-boundary streaming +(the synchronous streaming shell + hooks + context are covered; out-of-order +Suspense streaming is incomplete in GWC itself, so there is nothing stable to +port against yet). The synchronous core (reconciler, hooks, effects, context, +refs, fragments, transitions, state isolation) and the entire SSR surface +(serialization + SSR hooks) are comprehensively covered. + ## How tests are ported GWC's full client runtime is testable natively via the mock DOM adapter (React's @@ -35,7 +49,7 @@ re-renders/effects are observable inline. SSR behavior is tested via | ReactDOMServerIntegrationTextarea/Input/Checkbox | controlled inputs SSR | โœ… | ui/ssr_controlled_inputs_test.go (textarea value->content: found+fixed v3.4.9) | | ReactDOMServerIntegrationSelect | select value -> selected option | โœ… | ui/ssr_select_test.go (found+fixed v3.4.10; match by value/text, optgroup) | | ReactDOMFizzServer* | streaming SSR + hooks/context | ๐Ÿ”ถ | internal/runtime/ssr_stream_hooks_test.go โ€” streaming runs hooks + threads context (v3.5.1); async-boundary/Suspense streaming itself still partial | -| ReactDOMServer*Hydration / SelectiveHydration | hydration | ๐Ÿ”ถ | partial (existing hydration tests) | +| ReactDOMServer*Hydration / SelectiveHydration | hydration | โœ… | already covered natively: ~30 hydration test/fuzz funcs in internal/runtime (hydration_test.go, hydration_helper_gap_test.go, hydration_roundtrip_fuzz_test.go) | ## react (core)