From b2d5300e2b58e65d84fb523a1e0e8629d73b5692 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Sat, 12 Sep 2026 22:33:18 -0400 Subject: [PATCH] docs(r): polish NEWS.md for 0.1.0 (tidyverse style) --- pkg-r/NEWS.md | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/pkg-r/NEWS.md b/pkg-r/NEWS.md index d2a0f44..9d75dc7 100644 --- a/pkg-r/NEWS.md +++ b/pkg-r/NEWS.md @@ -1,20 +1,32 @@ # shinyreact 0.1.0 -* Initial CRAN release. +* 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. -* Server-side plumbing for the `ui.tsx` pattern: the UI is a React client you - own, and the Shiny server contains only reactive computation. - `reactive_output()` sends JSON to `useShinyOutputValue()` hooks, - `send_message()` reaches `useShinyMessageHandler()`, and `page_react()` / - `page_react_html()` / `page_bare()` / `page_react_dep()` bootstrap the - client. +* 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. -* Automatic renderer-dependency discovery: dependencies of traditional Shiny - outputs hosted inside a React tree are pushed to the client after each - flush, so `ShinyOutput` 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. -* Bookmark restore is delivered 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 hook sends. + 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.