Client-Side 'React' Interface for 'Shiny'
Overview
Server-side plumbing for the 'ui.tsx' pattern in 'Shiny': the user interface is defined in a client 'React' (https://react.dev/) bundle, and the 'Shiny' server contains only reactive computation. Provides page builders that discover and serve the client bundle, a render function that publishes any JSON-serializable value to the client, and custom messages to 'React' components. Ships no user interface components, so the app author owns the whole front end. The 'React' runtime and the client hooks are bundled, so no JavaScript build step is required to get started.
- Initial CRAN release. shinyreact is the server-side plumbing for the
ui.tsxpattern: 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
ShinyOutputcomponent works with zero configuration. - Bookmark restore values reach the client through the
#shinyreact-configscript tag, and the client asserts the wire-protocol major version at boot. page_react()serveswww/ui.js(andwww/ui.css, if present) as the whole page, with no HTML file required.page_react_html()serves a completeindex.htmlthat you own,page_bare()builds a page with no Bootstrap, andpage_react_dep()wraps an app's own bundle as anhtmlDependency()versioned by its mtime.
Show all changes in 0.1.0Hide the rest of the changes in 0.1.0
reactive_output()publishes any JSON-serializable value to the client'suseShinyOutputValue()hook, with no UI placeholder.send_message()sends a custom message to the client'suseShinyMessageHandler()hook, namespaced to the current module.shinyreact.defaultandshinyreact.asisinput handlers give R and Python the same view of the JSON auseShinyInput()hook sends: records stay lists,[]stayslist(), and nested arrays keep their shape.wire_tap()reads the websocket payloads a shinytest2AppDriverrecorded, so tests can assert the exact inputs, outputs, and messages that crossed the wire.
From NEWS.md in the release
Install
Health
- OK13 OKNow
- OK3 OK2026-09-23
Documentation
- Help pages
- 11 (4 internal)includes a package overview page
- Examples that run
- 100%7 run in a plain check (1 of them under a condition)
- Exported functions with examples
- 100%
- Documented parameters
- 100%
- Return-value docs
- 100%
- Help pages citing references
- 0%
Downloads
Repository
- PRs merged (all time)
- 94%
- Median days to close, 50 most recently updated closed issues
- 8
- Median days to close, 50 most recently updated closed PRs
- 0
Stars over time
Issues over time
7 development-tooling and community-health practices detected across 6 families in the upstream repository
Checks run against github.com/posit-dev/shinyreact on 2026-10-11.
GitHub Pages site last deployed 2026-09-23 · The repository has a site deploy workflow
Show all practicesHide 2 practices
This repository shows signs of AI coding tools.
- Cursorfirst seen on or before 2026-03-02Named in .gitignore: .cursorignore
- GitHub Copilotfirst seen 2026-03-02Pull request: opened by its own accountCommits: at least 1 crediting it in the message
- Claude Codefirst seen 2026-03-05Seen in the repository: .claude, .claude/skills, CLAUDE.mdNamed in .gitignore: .claudePull request it wrote: opened by a project memberCommits: at least 33 crediting it in the message
- Claude Opus 4.618 commits · Mar to May 2026
- Claude Sonnet 4.615 commits · Mar 2026
Dependencies
Installing shinyreact adds 31 packages (20 with compiled code, 25 MB of source tarballs). Heaviest: bslib 5.6 MB, promises 3.1 MB, sass 2.9 MB.
Code & Tests
People & History
- 0.1.0Latest2026-09-23 · current release
- RR 4.6.0 released · 2026-04-24
Package metadata
- First published
- 2026-09-23
- Total releases
- 1 / 1 yrs
- License
- MIT + file LICENSE OSI
- Download size
- 150 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("shinyreact")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-18, which the citation names so these numbers can be found later. More on citing and the projects behind them.