The aim of {shiny.destroy} is to allow inputs and modules created in a shiny application to be removed without keeping any trace of them within the realm of the shiny application.
Install the latest version of {shiny.destroy} on GitHub
require("remotes")
remotes::install_github("ashbaldry/shiny.destroy")
There are two types of objects that {shiny.destroy} handles: inputs and modules.
Use the function removeInput
to remove the desired input. This is a wrapper around shiny::removeUI
, but includes ways to reference the input server-side, and updates any reactives and/or outputs that depend on that input instantly.
Prior to the application loading.
The code for this example is available in the examples directory
To include sub-modules within the destroyable module, the server-side module will need to be passed through makeModuleServerDestroyable
and included as an argument to the parent module to ensure those observers are safely removed.