Rhino 1.6.0 Update on CRAN: Refined Dependency Handling and Node.js Tool Upgrades

Estimated time:
time
min

Rhino 1.6 has just landed on <a href="https://cran.r-project.org/web/packages/rhino/index.html" target="_blank" rel="noopener">CRAN</a>!

This version comes with enhancements for dependency management and Node.js utilities, as well as upgrades for stability and security.

Here's what you need to know.
<h2>Enhanced Dependency Management</h2>
<a href="https://github.com/Appsilon/rhino/" target="_blank" rel="noopener">Rhino</a> relies on <a href="https://rstudio.github.io/renv/articles/renv.html">{renv}</a> to provide an isolated, reproducible environment for your project. While you can run {renv} functions directly, Rhino also provides utilities which can be used to install, update, or remove a dependency in one step.
<blockquote>Simplify your R workflow, dive into our article, <a href="https://appsilon.com/renv-how-to-manage-dependencies-in-r/" target="_blank" rel="noopener">R renv: How to Manage Dependencies in R Projects Easily</a>.</blockquote>
With Rhino 1.6, the <a href="https://appsilon.github.io/rhino/reference/dependencies.html" target="_blank" rel="noopener">pkg_install()</a> function now supports installation not only from CRAN, but also from local sources, GitHub, and <a href="https://www.bioconductor.org/" target="_blank" rel="noopener noreferrer">Bioconductor</a>! You can use the familiar syntax used by {renv}:
<pre><code class="language-r">
# Install shiny from local source
rhino::pkg_install("~/path/to/shiny")
<br># Install shiny.i18n package from GitHub
rhino::pkg_install("Appsilon/shiny.i18n")
<br># Install Biobase package from Bioconductor
rhino::pkg_install("bioc::Biobase")
</code></pre>
You can also install a specific version of a package:
<pre><code class="language-r">
# Install a specific version of shiny
rhino::pkg_install("shiny@1.6.0")
</code></pre>
<h2>Support for Node.js Alternatives</h2>
Node.js, together with its official package registry, npm, are big names in modern web development. Rhino relies on them to provide you with state-of-the-art tools for working with JavaScript, Sass, and end-to-end tests.

Recently, viable alternative implementations for Node.js and npm have appeared. They boast improved performance and better disk utilization. Rhino 1.6 introduces a new configuration variable which lets you choose your favourite implementation.

For example, if you have <a href="https://bun.sh/" target="_blank" rel="noopener noreferrer">bun</a> installed on your system, you can configure Rhino to use it instead of npm by setting the <code>RHINO_NPM</code> environment variable in your <a href="https://rstats.wtf/r-startup.html#renviron" target="_blank" rel="noopener noreferrer">.Renviron</a> file:
<pre><code class="language-r">
RHINO_NPM=bun
</code></pre>
You are free to choose any npm-compatible implementation and you can provide a custom path to the executable. For example, to use <a href="https://pnpm.io/" target="_blank" rel="noopener noreferrer">pnpm</a> installed in a custom location:
<pre><code class="language-r">
RHINO_NPM=/home/user/bin/pnpm
</code></pre>
<h2>Tooling Upgrades</h2>
With Rhino 1.6, we have upgraded all our Node.js tools to the latest versions for increased stability and security. End users are largely unaffected by these changes, but two upgrades might be relevant to you:
<ol>  <li>The minimum supported Node.js version is now 16. If you have an older version, visit the official <a href="https://nodejs.org/en" target="_blank" rel="noopener noreferrer">Node.js site</a>.</li>  <li>Cypress has been upgraded to version 13. If you have an existing Rhino project, check out our <a href="https://appsilon.github.io/rhino/articles/how-to/migrate-1-6.html" target="_blank" rel="noopener">Rhino 1.6 Migration Guide</a>.</li></ol>
We have also refreshed our GitHub Actions setup. The workflow which automatically builds, lints and tests your project is now cleaner and uses the latest dependencies.
<h2>Using Latest Rhino</h2>
Try out the new features today! You can grab the latest version from CRAN by running:
<pre><code class="language-r">
install.packages("rhino")
</code></pre>
To migrate your existing Rhino project check out our <a href="https://appsilon.github.io/rhino/articles/how-to/migrate-1-6.html" target="_blank" rel="noopener">Rhino 1.6 Migration Guide</a>.
<h2>Rhinoverse Ecosystem</h2>
Rhino can be a solid foundation for your Shiny application, but it doesn’t end there. Rhino is the centrepiece of a larger ecosystem - Rhinoverse, a family of open-source R packages created by Appsilon to address the needs of modern web development.

Make sure to check out the other members of the family on <a href="https://rhinoverse.dev/#rhino" target="_blank" rel="noopener">rhinoverse. dev</a>!
<h3>You May Also Like</h3><ul>  <li><a href="https://appsilon.com/rhino-r-package-tutorial/">Rhino R Package Tutorial: Build Your First Rhino App</a></li>  <li><a href="https://appsilon.com/rhino-r-software-engineering/" target="_blank" rel="noopener">Rhino for Shiny Developers: Top 5 Must-Have Software Engineering Skills</a></li>  <li><a href="https://appsilon.com/redesign-dashboard-with-shiny-and-rhino/" target="_blank" rel="noopener">Redesigning Dashboards with Shiny and Rhino: World Bank’s Carbon Pricing</a></li></ul>

Contact us!
Damian's Avatar
Damian Rodziewicz
Head of Sales
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
rhino
open source