posit-dev / posit-dev/shinyreact

Release shinyreact 0.1.0 (npm → PyPI → CRAN)

Open
#282 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
14
Forks
3
Avg merge
9h 12m
Merged PRs (30d)
74

Description

Release chain for the three packages, from branch schloerke/rc-v0.1.0-release-chain (Conductor renamed it). Process: /release-shinyreact (.claude/skills/release-shinyreact/, #284). Order matters: the Python and R packages vendor the built JS, and examples/09-hmr depends on the published npm client, so npm goes first; CRAN is slowest, so it goes last.

0. Prepare the rc-v0.1.0 branch (all packages)

  • git pull / rebase on main
  • Version bumps: pkg-r/DESCRIPTION0.1.0, pkg-js/package.json0.1.1 (published), pyproject.toml already 0.1.0
  • make update-dist and make update-examples and make update-skills, confirm no drift
  • make js-lint && make js-format-check && cd pkg-js && npx vitest run
  • make py-check and make py-check-tox
  • make r-check
  • make py-test-e2e
  • Confirm protocol/README.md version (1.0) matches config.ts, _protocol.py, protocol.R (parity test)
  • Write release notes: pkg-r/NEWS.md, pkg-py/CHANGELOG.md, pkg-js/CHANGELOG.md (first release: summarize the ui.tsx pattern surface)
  • Merge #309 (schloerke/rc-v0.1.0-release-chainmain) once pr-done is green

1. npm: @posit-dev/shinyreact 0.1.1 — released 2026-09-12 ✅

  • NPM_TOKEN repository secret exists (#218)
  • cd pkg-js && npm run build && npm pack --dry-run and inspect the tarball contents (dist-npm/ only)
  • Tag js/v0.1.1 on the merge commit and push; release-js.yaml publishes with provenance
  • Verify npm view @posit/shinyreact version
  • Examples depend on the published @posit-dev/shinyreact@^0.1.1 (#297 rename, #307 switch)

2. PyPI: shinyreact 0.1.0

  • shiny 1.8.0 (py-shiny#2475) is on PyPI; pyproject.toml requires shiny>=1.8.0, git dep and allow-direct-references dropped (#309)
  • Registered a pending trusted publisher on PyPI: repo posit-dev/shinyreact, workflow release-py.yaml, environment (Any) (the workflow runs in the GitHub pypi environment)
  • uv build locally and inspect the wheel (www/ and .agents/skills/ included; twine check passes; sdist trimmed to the Python package; readme/license/URLs metadata in #310)
  • py/v0.1.0 tagged at c94ae9b; release-py.yaml run 34730067807 published https://pypi.org/project/shinyreact/0.1.0/ (wheel + sdist, Requires-Dist: shiny>=1.8.0, htmltools>=0.7.0) and created the Python v0.1.0 GitHub release with attestations
  • Verified: clean uv venv + uv pip install shinyreact==0.1.0 resolves shiny 1.8.0; shiny run examples/01-hello/app.py serves shinyreact-0.1.1/shinyreact.js, ui.js, and the #shinyreact-config tag

3. CRAN: shinyreact 0.1.0

First release:

  • pkg-r/NEWS.md (#309), tidyverse-style polish (#314)
  • pkg-r/cran-comments.md (#311); 0 notes after the wording fix in #313
  • README: install.packages("shinyreact") first, GitHub dev install second (#311)
  • Title/Description: 'Shiny' and 'React' single-quoted, react.dev linked (#311)
  • All 7 exports have @return; @examples added to the 6 that lacked them (#311)
  • Authors@R: Posit Software, PBC (cph, fnd) and Meta Platforms, Inc. (cph, bundled React)
  • Bundled JS licensing: only Meta copyright headers in the bundle (React/ReactDOM, MIT); Meta added as cph, noted in cran-comments.md. shiny-react is Posit's own (#311)
  • extrachecks: grep sweep clean (T/F, \dontrun, .GlobalEnv, http://); full pass through posit-dev/skills r-lib/cran-extrachecks checklist in #311 (Title 59 chars + title case, 4-sentence Description with UI expanded, no commented-out example code, no relative README links, LICENSE year 2026, method-references note in cran-comments.md)

Prepare for release:

  • urlchecker::url_check(): all 20 URLs correct
  • devtools::check(remote = TRUE, manual = TRUE): 0 errors, 0 warnings, 1 note (New submission); make r-check Status OK, 325 tests. Local machine has no pdflatex, so the PDF manual was not built — win-devel covers it
  • devtools::check_win_devel() submitted from #311's tree (merged as d2a90f0); result: 1 NOTE (New submission; "possibly misspelled" UI, renderer). Fixed the wording instead: Title is now Client-Side 'React' Interface for 'Shiny', Description says "user interface" / "render function" (#313)
  • Draft blog post

Submit to CRAN:

  • Version is already 0.1.0 (#309); no bump needed
  • Submitted shinyreact 0.1.0 to CRAN from main 8e13be8 (2026-09-13); "Package submission successful"
  • Approve email

Wait for CRAN...

  • Accepted 🎉
  • Finish & publish blog post
  • Add link to blog post in pkgdown news menu
  • usethis::use_github_release()
  • usethis::use_dev_version(push = TRUE)
  • usethis::use_news_md()
  • Share on social media
  • Slack link to blog post, bluesky, and linkedin in #open-source-comms

4. After all three

  • Bump dev versions: pyproject.toml0.1.1.dev0
  • Close #218 and update #268 as applicable

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the unchecked items in this issue and the referenced release workflows, including release-js.yaml and release-py.yaml; the npm and PyPI releases are already complete. Track the remaining CRAN acceptance, blog and pkgdown updates, development-version bumps, and follow-up issue updates. Done means all remaining release-chain and post-release checklist items are completed.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, python, r, typescript
Domain
release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.