← Back to all sparks
R

renv

INFRA · APIS
Velocity2.5

Project-local dependency management for R that makes environments reproducible

renv 1.2 made installs parallel, its biggest performance change in years.

rdependency-managementreproducibilityparallel-installlockfiles
Current state
renv provides project-local dependency management for R. The 1.2.0 release rebuilt installation to download and compile concurrently, and the 1.2.x line since has been resolving the correctness problems parallelism exposed — binaries installing ahead of their dependencies, transitive upgrades that were never needed, lockfile paths shifting with the working directory.
Where it's heading
Work is consolidating around two things: making the parallel installer correct under real dependency graphs, and broadening remote support so private and self-hosted sources resolve properly. The most recent release translates self-hosted GitLab remotes into the syntax pkgdepends actually understands.
Prediction
Expect continued fixes to install ordering and remote resolution rather than another performance overhaul, since the parallel path is new enough to keep surfacing ordering bugs.

Recent moves

  1. 9d ago

    renv 1.2.4 fixes self-hosted GitLab remotes under pak

    Self-hosted GitLab instances now work with pak enabled: renv had been handing pak remotes in a form it could not parse, and now translates them into pkgdepends' own syntax. Squarely in the pattern of renv absorbing the impedance mismatch between its remote formats and pak's.

    View source ↗
  2. 2mo ago

    renv 1.2.3 enriches record() with full DESCRIPTION metadata

    renv::record() now produces records with the same DESCRIPTION-derived fields as snapshot() — Depends, Imports, Suggests, LinkingTo, License — fetched from active repositories rather than the local library. It removes a real asymmetry where recorded and snapshotted entries were not interchangeable.

    View source ↗
  3. 3mo ago

    renv 1.2.2 fixes binaries installing before their dependencies

    Two fixes traceable to the parallel installer and lazy resolution: named remotes in DESCRIPTION no longer fail with a closure-not-subsettable error, and binary packages can no longer be installed before their dependencies during restore. The second is exactly the class of ordering bug concurrency introduces.

    View source ↗
  4. 4mo ago

    renv 1.2.1 anchors lockfile paths to the project directory

    RENV_PATHS_LOCKFILE resolves relative to the project rather than the working directory, so the effective lockfile no longer changes as you move around a session. install() also stops upgrading transitive dependencies that already satisfy every requirement — less churn, more reproducibility.

    View source ↗
  5. 4mo ago

    renv 1.2.0 installs packages in parallel

    ⚡ SPARK

    The architectural change the rest of the 1.2 line is still stabilising: installation goes concurrent, with batched parallel downloads and dependency-aware scheduling of compilation. Every ordering fix in 1.2.1 and 1.2.2 traces back to this release.

    View source ↗
  6. 5mo ago

    renv 1.1.6 adds a snapshot.dev setting for dev dependencies

    A new snapshot.dev setting controls whether development dependencies are captured by snapshot() and status(), defaulting to FALSE, and repository overrides accept multiple named repositories. Configuration work that sharpens what a lockfile is supposed to represent.

    View source ↗