Skip to content

shinyreact 0.1.0

CRAN release: 2026-09-23

  • 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.