Skip to content

courieR

0.3.1Package record

Migrate Installed R Packages Between R Versions

0packages depend
1.9Kdownloads / year
66.4%test coverage
13/13flavors OK

Overview

About

Detects all R installations on the current machine and migrates installed R packages between them. Provides find_routes() to discover R versions, manifest() to scan package libraries in a child R process, inventory() to compare two libraries, and ship() to install packages into a target R version using 'pak'. Includes a Shiny dashboard (open_hub()) for interactive source-to-target migration.

Changes in 0.3.1

Bug fixes

  • Fixed a second cause of shipped packages never showing up as installed, on the *copy* path (offline/preserve modes and online mode's local/private packages). A manifest's libpath is the library directory shared by every package, but .copy_plan() passed it through as if it were the per-package source, so each "copy" recursively cloned the entire source library into target/<pkg>/ — leaving no valid package where R looks and reporting a silent success. The package name is now joined onto the library path, which also restores the cross-major compiled-package warning (its libs/ check was always false before). Covered by a .copy_plan + copy_packages regression test and an opt-in browser end-to-end test (COURIER_E2E=true).
  • R installation detection no longer drops installs intermittently on slow machines. find_routes() probed each candidate with a hard 3 s timeout and silently discarded any that exceeded it, so a cold R start (antivirus, OneDrive-synced installs) made versions flicker in and out between runs. The default probe timeout is now 30 s, configurable via options(courier.probe_timeout = ), and a probe that does time out is reported with a warning instead of vanishing; the rig list timeout was also raised from 5 s to 15 s.
Show all changes in 0.3.1Hide the rest of the changes in 0.3.1
  • Fixed shipped packages never showing up as installed: find_target_lib() and the pak install subprocess inherited the parent R session's R_LIBS_USER, so ship() installed into the *parent's* library while Compare scanned the real target. All subprocesses that launch another R now share one environment-stripping helper (child_r_env()), and the install destination is guaranteed to be a library that manifest() scans.
  • Library scans that time out are no longer cached as "empty library" for the rest of the session; timeouts are reported loudly in the log and the scan timeout was raised from 30 s to 5 min for slow machines.
  • The "both installations share one library" warning no longer fires vacuously when both scans returned no packages.

Routing

  • Online mode now means online: every package resolvable from CRAN / Bioconductor / GitHub is reinstalled via pak (binaries preferred). Only local/private packages with no online source are copied from the source library. (Previously pure-R CRAN packages were file-copied even in online mode, which is much slower than pak on synced/network libraries.)

Performance

  • One manifest scan per library per session, shared across all tabs: a ship right after Compare reuses the Compare scans and spawns no scan subprocesses; the post-ship refresh rescans only the shipped-into library.

Dashboard UX

  • **Bulk Dispatch** now shows a live hero panel during shipping (matching Custom Dispatch): packages delivered so far, the current package being installed, elapsed time, and the estimated total. The detailed log in the R console is also mirrored in the dashboard log pane.
  • Both **Bulk Dispatch** and **Custom Dispatch** tables now default to showing only packages missing from the target after Compare, instead of all diff statuses. The filter chip bar lets you toggle other statuses.
  • **Custom Dispatch** filter chips are now colour-coded — orange for source-side differences (newer in source, not in target), teal for target-side differences — matching Bulk Dispatch.
  • **Custom Dispatch** comparison table gains a **Repo** column showing where the package comes from (CRAN, Bioconductor, GitHub, etc.). Packages with an unknown source are shown in red in both tables.
  • report_issue() — new exported function. Call it from the console after any error to open a pre-filled GitHub issue form in your browser with your R version, platform, courieR version, and the error message already populated. The dashboard's error modal gains a **Send Report** button that does the same in one click.
  • Custom Dispatch shows a live green hero panel while shipping: packages delivered so far, the package currently being copied/installed, elapsed time, and the estimated total.
  • Time estimates (plan summary, ship confirmation, preview invoice) now come from per-machine calibrated rates persisted across sessions — every completed ship updates them — instead of fixed constants that were off by 100x on synced/network drives.
  • Custom Dispatch source/target header now shows the R version, install location, and library path of both installations (was the bare executable path).
  • After a Custom Dispatch shipment the comparison tables refresh automatically and the depot log says so; the refresh is logged when it completes.
  • library(courieR) startup message now includes a link to the user guide vignette (vignette("get-started", package = "courieR")).

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 1.5 min · r-oldrel-macos-x86_64
Status changes
  • OK13 OK2026-08-05
  • NOTE12 OK, 1 NOTE2026-08-01
  • OK5 OK2026-05-31
Advisories

none known

Documentation

In release 0.3.1
READMEYes · 663 wordsVignettesYes · 2 · dynamicNEWSYes · 100% structured · mentions 0.3.1Citation fileNoWebsiteYes · pkgdown
Help pages
21 (3 internal)includes a package overview page
Examples that run
50%9 run in a plain check (3 of them under a condition) · 8 only when donttest examples are enabled (R CMD check --as-cran) · 1 never run
Exported functions with examples
100%
Documented parameters
99%
Return-value docs
100%
Help pages citing references
0%

Downloads

1.9K
CRAN downloads in the past year
Rank #10,541 · ~5/day · ~155/mo
Daily download trend is not available in this view yet.
31730 days
98890 days
1.9K1 year
Compare downloads with other packages →
Also on32 r2u11 autocran

Repository

1Stars
0Forks
0Open issues
0Open PRs
0Releases
104Commits
4Commit identities
claude-codepackage-managementrr-packageai-implemented
104 commits · Last activity 2026-10-06 · 0% stars, 30d
Responsiveness
How these are sampled
PRs merged (all time)
100%
Median days to close, 50 most recently updated closed issues
not measured
Median days to close, 50 most recently updated closed PRs
0

Stars over time

2026-06-04 · 12026-07-07 · 1
PracticesBeta

6 development-tooling and community-health practices detected across 3 families in the upstream repository

Checks run against github.com/lennon-li/courier on 2026-10-21.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel

Docs source (3)
pkgdown

GitHub Pages site last deployed 2026-06-14 · The repository has a site deploy workflow

pkgdown site last built 2026-10-06

CRAN release process (1)
cran-comments.md
How this is detected·Detection ruleset v4 (2026-10-20)
AI coding toolsBeta

This repository shows signs of AI coding tools.

  • Claude Codefirst seen 2026-05-05
    Seen in the repository: .claude
    Named in .Rbuildignore: .claude
    Pull request it wrote: opened by a project member
    Commits: at least 50 crediting it in the message
Models named in its commits
  • Claude Sonnet 4.634 commits · May to Jun 2026
  • Claude Opus 4.813 commits · Jun 2026
  • Claude Fable 52 commits · Jun 2026
  • Claude Sonnet 51 commit · Jul 2026
Counts are commits, not lines of code. Commits by a tool's accounts count once across all of its accounts. Commits crediting it are the largest count among its credit lines, a minimum.How this is detected·Detection ruleset v4 (updated 2026-09-27)

Dependencies

Declared dependencies
22 external dependencies (excludes base and recommended)

Installing courieR adds 49 packages (26 with compiled code, 42 MB of source tarballs). Heaviest: data.table 5.7 MB, bslib 5.6 MB, pak 3.8 MB.

Depends (0)
none
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect

Nothing depends on this yet.

People & History

People (5)
Author, Maintainer since 0.2.0 (2026)
Contributor · added in 0.3.1
AI co-author (Anthropic)
Contributor · added in 0.3.1
AI co-author (Anthropic)
Contributor · added in 0.3.1
AI co-author (Anthropic)
Contributor · added in 0.3.1
AI co-author (OpenAI)
Releases (3)

Pick two releases to compare their code metrics.

  • 0.3.1Latest
    record
    2026-06-14 · current release · diff ↗ ·
    added 3 exports
    hub, migrate, report_issue
  • 0.2.2
    record
    2026-06-04 · diff ↗
  • 0.2.0
    record
    2026-05-30
  • R
    R 4.6.0 released · 2026-04-24

Package metadata

First published
2026-05-30
Total releases
3 / 1 yrs
License
MIT + file LICENSE OSI
Download size
3.0 MB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("courieR")
Li, L., Claude Fable, Claude Opus, Claude Sonnet, & OpenAI Codex. (2026). courieR: Migrate Installed R Packages Between R Versions (Version 0.3.1) [Computer software]. https://doi.org/10.32614/CRAN.package.courieR

This package has no citation file, so citation() returns this entry built from DESCRIPTION.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for courieR version 0.3.1 [Data set]. HJJB, LLC. Data release v2026-10-24. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-24, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy