An Inclusive, Unifying API for Progress Updates
Overview
A minimal, unifying API for scripts and packages to report progress updates from anywhere including when using parallel processing. The package is designed such that the developer can to focus on what progress should be reported on without having to worry about how to present it. The end user has full control of how, where, and when to render these progress updates, e.g. in the terminal using utils::txtProgressBar(), cli::cli_progress_bar(), in a graphical user interface using utils::winProgressBar(), tcltk::tkProgressBar() or shiny::withProgress(), via the speakers using beepr::beep(), or on a file system via the size of a file. Anyone can add additional, customized, progression handlers. The 'progressr' package uses R's condition framework for signaling progress updated. Because of this, progress can be reported from almost anywhere in R, e.g. from classical for and while loops, from map-reduce API:s like the lapply() family of functions, 'purrr', 'plyr', and 'foreach'. It will also work with parallel processing via the 'future' framework, e.g. 'lapply(...) |> futurize()' and 'purrr::map(...) |> futurize()', which uses future.apply::future_lapply() and furrr::future_map() internally. The package is compatible with Shiny applications.
Significant Changes
digestis no longer a hard dependency. The package now usestools::md5sum(bytes = ...), which is available in R (>= 4.5.0), to generate unique IDs for R objects. For older versions of R, it usestools::md5sum(files = ...)via a temporary file, which does not add much overhead because these internal IDs are not generated frequently. For the time being,digest::digest()is still used for older versions of R, if **digest** is installed.
New Features
- Add
handler_callback()that calls a user-defined hook function on every progression update, e.g. to forward progress to logging, GUIs, or other external systems not natively supported by **progressr**.
Show all changes in 1.1.0Hide the rest of the changes in 1.1.0
handlers()now supports specifying progression handlers as comma-separated strings, e.g.handlers("cli,beepr").handlers()now supports specifying a list mixed with names of progression handlers and explicit handler functions, e.g.handlers(list("cli,debug", handler_beepr())).handlers()now always parses, expands, and incorporates the progression handlers specified by R optionprogressr.handlers. As a side effect, unknown handlers are reported on sooner, ifhandlers()is called.- Add support for environment variable
R_PROGRESSR_HANDLERSto set R optionprogressr.handlerswhen package is loaded.
Documentation
- Clarify that progress updates relayed via the file system can be delayed, or only arrive all at once. This can happen on system when standard output redirected to file is buffered.
Bug Fixes
- Package failed to load on R (< 4.0.0). This was due to a regression introduced in **progressr** 0.16.0 (2025-09-10).
- When using
handlers(global = TRUE), interrupted (e.g. Ctrl-C) progress could produce a noisy warning on spurious "received a progression 'update' request ..." That is now muffled.
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK13 OK2026-06-09
- ERROR12 OK, 1 ERROR2026-06-08
- OK14 OK2026-03-10
Documentation
- Help pages
- 35 (8 internal)includes a package overview page
- Examples that run
- 83%24 run in a plain check (8 of them under a condition) · 5 never run
- Exported functions with examples
- 87%
- Documented parameters
- 79%
- Return-value docs
- 94%
- Help pages citing references
- 0%
Also includes 1 demo script (run with demo())
- progressr: An Introduction
- progressr: Appendix
- progressr: Customize How Progress is Reported
- progressr: Debug
- progressr: Map-Reduce Calls, e.g. lapply() and map()
- progressr: Parallel and Distributed Processing
- progressr: Render 'knitr' Documents
- progressr: Replace 'cli' Progress Bars with 'progressr'
Downloads
Repository
- PRs merged (all time)
- 86%
- Median days to close, 50 most recently updated closed issues
- 32
- Median days to close, 50 most recently updated closed PRs
- 1
Stars over time
Forks over time
Issues over time
PRs over time
Commits over time
10 development-tooling and community-health practices detected across 7 families in the upstream repository
Checks run against github.com/futureverse/progressr on 2026-10-18.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
Show all practicesHide 3 practices
This repository shows signs of AI coding tools.
- Claude Codefirst seen 2026-09-23Commits: at least 1 crediting it in the message
- Claude Opus 5.51 commit · Sep 2026
Dependencies
Installing progressr adds no packages beyond those that come with R.
Show the 48 most downloaded dependentsHide the 48 most downloaded dependents
and 100 more dependents and 50 packages that suggest it on CRAN ↗
Code & Tests
People & History
Pick two releases to compare their code metrics.
- 1.1.0Latest2026-10-18 · current release · diff ↗ ··
added 1 export
handler_callbacklisted once in CRAN's queue
Seen in one reading of CRAN's incoming queue, at 2026-10-18 16:17 UTC, so it stayed less than the time between readings. - 1.0.0
- RR 4.6.0 released · 2026-04-24
- 0.19.0
- 0.18.02025-11-06 · diff ↗
- 0.17.02025-10-15 · diff ↗
- 0.16.0
- RR 4.5.0 released · 2025-04-11
- 0.15.12024-11-22 · diff ↗
- 0.15.0
- RR 4.4.0 released · 2024-04-24
- 0.14.02023-08-11 · diff ↗
- RR 4.3.0 released · 2023-04-21
- 0.13.0
- 0.12.0
- 0.11.02022-09-02 · diff ↗
Show 12 earlier eventsHide 12 earlier events
Package metadata
- First published
- 2020-01-23
- Total releases
- 20 / 6 yrs
- License
- Apache License (>= 2) · relicensed from GPL (>= 3) in 1.0.0
- Minimum R
- ≥ 3.5.0
- Download size
- 650 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("progressr")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
The repository also keeps a CITATION.cff.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-22, which the citation names so these numbers can be found later. More on citing and the projects behind them.