Learn R Programming

renv

Overview

The renv package[^1] helps you create reproducible environments for your R projects. Use renv to make your R projects more isolated, portable and reproducible.

  • Isolated: Installing a new or updated package for one project won’t break your other projects, and vice versa. That’s because renv gives each project its own private library.
  • Portable: Easily transport your projects from one computer to another, even across different platforms. renv makes it easy to install the packages your project depends on.
  • Reproducible: renv records the exact package versions you depend on, and ensures those exact versions are the ones that get installed wherever you go.

Installation

Install the latest version of renv from CRAN with:

install.packages("renv")

Alternatively, install the development version from r-universe with:

install.packages("renv", repos = "https://rstudio.r-universe.dev")

Workflow

Use renv::init() to initialize renv in a new or existing project. This will set up a project library, containing all the packages you’re currently using. The packages (and all the metadata needed to reinstall them) are recorded into a lockfile, renv.lock, and a .Rprofile ensures that the library is used every time you open that project.

As you continue to work on your project, you will install and upgrade packages, either using install.packages() and update.packages() or renv::install() and renv::update(). After you’ve confirmed your code works as expected, use renv::snapshot() to record the packages and their sources in the lockfile.

Later, if you need to share your code with someone else or run your code on new machine, your collaborator (or you) can call renv::restore() to reinstall the specific package versions recorded in the lockfile.

Learning more

If this is your first time using renv, we strongly recommend starting with the Introduction to renv vignette: this will help you understand the most important verbs and nouns of renv.

If you have a question about renv, please first check the FAQ to see whether your question has already been addressed. If it hasn’t, please feel free to ask on the Posit Forum.

If you believe you’ve found a bug in renv, please file a bug (and, if possible, a reproducible example) at https://github.com/rstudio/renv/issues.

[^1]: Pronounced “R” “env”

Copy Link

Version

Install

install.packages('renv')

Monthly Downloads

204,796

Version

1.1.6

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Kevin Ushey

Last Published

January 16th, 2026

Functions in renv (1.1.6)

refresh

Refresh the local cache of available packages
isolate

Isolate a project
remove

Remove packages
remote

Resolve a Remote
renv-package

Project-local Environments for R
record

Update package records in a lockfile
rehash

Re-hash packages in the renv cache
renv_lockfile_from_manifest

Generate renv.lock from an RStudio Connect manifest.json
update

Update packages
upgrade

Upgrade renv
run

Run a script
paths

Path for storing global state
snapshot

Record current state of the project library in the lockfile
retrieve

Retrieve packages
modify

Modify a Lockfile
settings

Project settings
sysreqs

R System Requirements
lockfiles

Lockfiles
repair

Repair a project
restore

Restore project library from a lockfile
migrate

Migrate a project from packrat to renv
status

Report inconsistencies between lockfile, library, and dependencies
load

Load a project
use_python

Use python
purge

Purge packages from the cache
project

Retrieve the active project
vendor

Vendor renv in an R package
scaffold

Generate project infrastructure
sandbox

The default library sandbox
vulns

Request Vulnerability Information for a Package
checkout

Checkout a repository
autoload

Auto-load the active project
dependencies

Find R package dependencies in a project
config

User-level settings
embed

Capture and re-use dependencies within a .R, .Rmd or .qmd
consent

Consent to usage of renv
clean

Clean a project
activate

Activate or deactivate a project
equip

Install required system libraries
diagnostics

Print a diagnostics report
lockfile-api

Programmatically Create and Modify a Lockfile
init

Use renv in a project
imbue

Imbue an renv Installation
history

View and revert to a historical lockfile
graph

Generate a Package Dependency Graph
hydrate

Copy packages from user libraries to a project library
lockfile_validate

Validate an renv lockfile against a schema
install

Install packages
rebuild

Rebuild the packages in your project library