The server (shinyreact for R/Python) renders its protocol version into the
page via the #shinyreact-config JSON script tag; the client asserts the
major versions match at boot. The protocol covers every shape that crosses
the client/server boundary; protocol/surface.json enumerates them and a test
in each language enforces it. Only changes an existing peer would
misinterpret bump this version — additive shapes do not (see
protocol/README.md) — so client and server package releases do not need to
be in lockstep. Decided in decisions/2026-08-17-js-distribution.md.
The wire-protocol version this client speaks.
The server (shinyreact for R/Python) renders its protocol version into the page via the
#shinyreact-configJSON script tag; the client asserts the major versions match at boot. The protocol covers every shape that crosses the client/server boundary; protocol/surface.json enumerates them and a test in each language enforces it. Only changes an existing peer would misinterpret bump this version — additive shapes do not (see protocol/README.md) — so client and server package releases do not need to be in lockstep. Decided in decisions/2026-08-17-js-distribution.md.