Skip to content

Restore a project's dependencies from a lockfile, as previously generated by snapshot(). renv::restore() compares packages recorded in the lockfile to the packages installed in the project library. Where there are differences it resolves them by installing the lockfile-recorded package into the project library. If clean = TRUE, restore() will additionally delete any packages in the project library that don't appear in the lockfile.


  project = NULL,
  library = NULL,
  lockfile = NULL,
  packages = NULL,
  exclude = NULL,
  rebuild = FALSE,
  repos = NULL,
  clean = FALSE,
  prompt = interactive()



The project directory. If NULL, then the active project will be used. If no project is currently active, then the current working directory is used instead.


Unused arguments, reserved for future expansion. If any arguments are matched to ..., renv will signal an error.


The library paths to be used during restore. See Library for details.


Path to a lockfile. When NULL (the default), the renv.lock located in the root of the current project will be used.


A subset of packages recorded in the lockfile to restore. When NULL (the default), all packages available in the lockfile will be restored. Any required recursive dependencies of the requested packages will be restored as well.


A subset of packages to be excluded during restore. This can be useful for when you'd like to restore all but a subset of packages from a lockfile. Note that if you attempt to exclude a package which is required as the recursive dependency of another package, your request will be ignored.


Force packages to be rebuilt, thereby bypassing any installed versions of the package available in the cache? This can either be a boolean (indicating that all installed packages should be rebuilt), or a vector of package names indicating which packages should be rebuilt.


The repositories to use when restoring packages installed from CRAN or a CRAN-like repository. By default, the repositories recorded in the lockfile will be, ensuring that (e.g.) CRAN packages are re-installed from the same CRAN mirror.

Use repos = getOptions(repos) to override with the repositories set in the current session, or see the repos.override option in config for an alternate way override.


Boolean; remove packages not recorded in the lockfile from the target library? Use clean = TRUE if you'd like the library state to exactly reflect the lockfile contents after restore().


Boolean; prompt the user before taking any action? For backwards compatibility, confirm is accepted as an alias for prompt.


A named list of package records which were installed by renv.

See also

Other reproducibility: lockfiles, snapshot()


if (FALSE) {

# disable automatic snapshots
auto.snapshot <- getOption("")
options( = FALSE)

# initialize a new project (with an empty R library)
renv::init(bare = TRUE)

# install digest 0.6.19

# save library state to lockfile

# remove digest from library

# check library status

# restore lockfile, thereby reinstalling digest 0.6.19

# restore automatic snapshots
options( = auto.snapshot)