Enables the complete removal of various 'Shiny' components, such as inputs, outputs and modules. It also aids in the removal of observers that have been created in dynamically created modules.
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.