rextendr 0.4

Release
Updates

A new version of rextendr has arrived.

Author

Blake Vernon

Published

August 26, 2025

TL; DR

The extendr team is excited to announce the release of rextendr 0.4, along with two follow-up patch releases, that bring significant improvements to the R package ecosystem for Rust integration. These include:

  • enhanced CRAN compatibility,
  • improved developer experience,
  • WebR support,
  • and streamlined package scaffolding.

A great deal of work also went into re-factoring code to reduce package dependencies and improve the maintainability to ensure the long-term viability of the project.

NoteWhat is rextendr?

For those new to the project, rextendr is an R package similar to usethis and devtools for supporting development of Rust-powered R packages, with the Rust crate extendr handling most of the heavy lifting behind the scenes.

WebR support

A very exciting development in this release is WebR compatibility out of the box. All extendr-powered R packages are now compatible with WebR, meaning your packages can run in the browser without an R installation.

WebR support happens without any additional work on your part. Just update your build files with use_extendr() and permit rextendr to update your Makevars{.win}.in, files in tools/, configure scripts.

TipWebR for existing packages

WebR support requires that lto = true in your release profile. This is handled for new packages, but not existing ones. Be sure to add it to your Cargo.toml.

CRAN compatibility

The standout feature of the current release is found in rextendr’s workhorse function use_extendr(), which now provides CRAN-ready scaffolding out of the box. All you need to do is vendor your Rust dependencies with vendor_pkgs() and you’re ready for CRAN submission.

Positron & VS Code Support

With Positron coming out of beta, we’ve introduced use_positron() and use_vscode() to generate (or update) .vscode/settings.json tailored to Rust development in R packages.

When you run use_extendr(), it now automatically calls use_vscode() when VS Code or Positron is detected as your IDE, making the setup completely seamless.

Enhanced Developer Tools

Release of 0.4.0 and its patches also comes with additional developer tooling:

  • Rust diagnosticsrust_sitrep() provides comprehensive Rust toolchain diagnostics and guides you through fixing any installation issues
  • Dependency managementuse_crate() makes adding Rust dependencies to your Cargo.toml as easy as usethis::use_package()
  • MSRV supportuse_msrv() helps specify the minimum supported Rust version for your package
  • Metadata accessread_cargo_metadata() lets you fetch detailed project information from Cargo
  • Eeasy dependency vendoringvendor_pkgs() vendors and compresses your Rust dependencies for easy CRAN publication and offline installation

A new extendr badge!

The extendr community has grown quite a bit in the last two years, maybe as much as the codebase! First of all, we want to say thank you for being a part of the community!

We wanted to make sure that new developers could boast about their extendr-powered packages—and, if we’re being honest, increase visibility for the project—by adding an extendr badge to their README files, which can now be done with use_extendr_badge(). This results in:

If you’re using extendr in your package, do us a solid and add the badge to your README! 🥺

There’s still more

Check out our recently updated website and documentation! For the full changelog see the NEWS.md.