Initial CRAN release. shinyreact is the server-side plumbing for
the ui.tsx pattern: the UI is a React client you own, and
the Shiny server contains only reactive computation. It ships no UI
components.
Dependencies of traditional Shiny outputs hosted inside a React
tree are discovered automatically and pushed to the client after each
flush, so the ShinyOutput component works with zero
configuration.
Bookmark restore values reach the client through the
#shinyreact-config script tag, and the client asserts the
wire-protocol major version at boot.
page_react() serves www/ui.js (and
www/ui.css, if present) as the whole page, with no HTML
file required. page_react_html() serves a complete
index.html that you own, page_bare() builds a
page with no Bootstrap, and page_react_dep() wraps an app’s
own bundle as an htmlDependency() versioned by its
mtime.
reactive_output() publishes any JSON-serializable
value to the client’s useShinyOutputValue() hook, with no
UI placeholder.
send_message() sends a custom message to the
client’s useShinyMessageHandler() hook, namespaced to the
current module.
shinyreact.default and shinyreact.asis
input handlers give R and Python the same view of the JSON a
useShinyInput() hook sends: records stay lists,
[] stays list(), and nested arrays keep their
shape.
wire_tap() reads the websocket payloads a shinytest2
AppDriver recorded, so tests can assert the exact inputs,
outputs, and messages that crossed the wire.