Skip to content

Release shinyreact 0.1.0 (npm → PyPI → CRAN) #282

Description

@schloerke

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 chore: release prep for 0.1.0 #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 ✅

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 (chore: release prep for 0.1.0 #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 build(py): PyPI metadata for the first release #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:

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 chore(r): CRAN prep for 0.1.0 #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" (chore(r): reword Title/Description to clear the win-builder spelling NOTE #313)
  • Draft blog post

Submit to CRAN:

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions