Preparing shiny app for upcoming breaking package version

Hi everyone,
I have an app currently deployed to shinyapps.io that is built with the shinydashboardPlus package. The maintainers of that package have announced that version 2.0.0.9000, which is currently unreleased, will have a large number of breaking changes, some of which will affect functions that are in my code. They acknowledge that most code that uses this package will need to be re-written to cope with these changes.

The app is a project I've been working on for a while, and within the next few months I won't have nearly as much time to devote to it because I'll be moving on to other things. I have no idea when the new version of shinydashboardPlus is going to be released, but since I have lots of time now, I would like to test out those breaking changes in my code now and make sure I can get it to run smoothly with the upcoming package version.

I know that I can install the development version of shinydashboardPlus from Github, but it seems that shinyapps.io doesn't support non-CRAN package versions (e.g. this thread, although I'm a little confused because this doc says that packages downloaded from Github should be supported? What gives?).

So, what is the best way to handle making these changes to my app? Since I don't know when the next shinydashboardPlus version is going to be released to CRAN, I can't plan in advance and know whether I'll be able to update my app as soon as the CRAN version becomes available. I don't want everything to break, and I'd love to do the updates right now, but I also need the app to be deployable in the interim.

Can anyone help me figure out how to navigate this? Thanks in advance for your help, and for your patience if I've fundamentally misunderstood something about how this process works. I'm a relative newcomer to Shiny, and I'm also pretty new to dealing with versions of dependencies, so I just want to do the right thing.

Thank you!

1 Like

I should add that unfortunately, using renv and continuing to base the app on the previous package version is not an option for me, because of the Box-based workflow that my organization uses (explained here, but basically Box does not allow syncing of particular files that are included in package libraries). So I'm looking for a solution to this that doesn't involve renv, even though I'm aware that using renv is probably the "correct" answer.

I don't know how familiar you are with git, it sounds to me like you can make use of different branches. Use the main branch for the version that is on shinyapps and create branch2 that contains a version for the updated shinydashboardplus. Once the updated version is on CRAN, you can merge branch2 to the main branch and push it to shinyapps. So you can already fix the breaking changes now, but also deploy updates to the live version. Is that an idea?

That's a great idea! Thank you. I'm not sure why I hadn't thought of git branches, but I have used them before and will definitely give this a try.