← Back to all sparks
R

rsconnect

INFRA · APIS
Velocity0.0

Deploy Shiny apps, R Markdown documents and APIs to hosted services

The deployment client is being rebuilt around credentials it never has to store.

deploymentposit-connectauthenticationsnowflakerenvidentity-federation
Current state
rsconnect is the publishing client for Posit Connect and shinyapps.io, and the last year has changed both ends of it. The HTTP layer moved to httr2 and the Connect API to v1; Posit Cloud publishing was removed outright and Posit Connect Cloud added in its place; and authentication picked up identity federation from Posit Workbench, Snowflake-hosted Connect with browser-based auth, and Snowflake connection names read from connections.toml. The most recent release fixes a regression that broke deployment entirely in air-gapped environments.
Where it's heading
Two threads run through this. The first is credential elimination — every recent auth change replaces a stored secret with a token the runtime can mint, whether that is Workbench identity federation or a Snowflake connection profile. The second is dependency capture getting stricter about what it actually needs: renv profiles outside the project root, pak-installed packages resolved against configured repositories, and Bioconductor contacted only when a Bioconductor package is genuinely present. Both are the problems you hit deploying inside a regulated network.
Prediction
Expect the httr2 escape hatch option to be removed once the migration settles, and expect the mcp content category added in 1.10.1 to grow real configuration rather than staying an inferred default.

Recent moves

  1. 1mo ago

    Air-gapped deploys fixed; MCP servers recognised as content

    Fixes a regression where dependency capture installed BiocManager and contacted bioconductor.org for CRAN-only projects, which broke deployment outright in air-gapped or offline environments. It also quietly starts recognising MCP servers as a content type, defaulting contentCategory to mcp when a _server.yml declares engine: mcptools.

    View source ↗
  2. 4mo ago

    Identity federation removes stored credentials from deployment

    ⚡ SPARK

    Rebuilds the client on httr2 and the Connect v1 API, and adds identity federation so a Workbench user can deploy without storing a long-lived credential. This is the release where the deployment path stops depending on a secret sitting on disk.

    View source ↗
  3. 8mo ago

    Deploy from a pre-written manifest.json

    Adds a manifestPath argument so deployApp() can deploy from a manifest.json produced earlier by writeManifest(), splitting dependency capture from the deployment step. Useful when the two happen on different machines, which is the normal shape of a CI pipeline.

    View source ↗
  4. 8mo ago

    Warn rather than error on missing tomllib

    Downgrades a missing tomllib to a warning when creating a manifest for a Python project with a version requirement in pyproject.toml, plus a CRAN test fix. Error-message polish.

    View source ↗
  5. 9mo ago

    Snowflake SPCS auth now requires a Connect API key

    Makes connectSPCSUser() require an apiKey so Snowflake tokens handle proxied authentication while a Connect API key identifies the user to the server itself. A server-driven requirement change rather than a package decision, and a breaking one for existing callers.

    View source ↗
  6. 9mo ago

    Posit Connect Cloud in, Posit Cloud publishing out

    ⚡ SPARK

    Adds Posit Connect Cloud as a deployment target and removes Posit Cloud publishing in the same release, with instructions for purging the stale account and deployment records. A destination swap, not an addition.

    View source ↗