onStop {shiny} | R Documentation

## Run code after an application or session ends

### Description

This function registers callback functions that are invoked when the application exits (when `runApp` exits), or after each user session ends (when a client disconnects).

### Usage

    onStop(fun, session = getDefaultReactiveDomain())

### Arguments

`fun` | A function that will be called after the app has finished running.
`session` | A scope for when the callback will run. If `onStop` is called from within the server function, this will default to the current session, and the callback will be invoked when the current session ends. If `onStop` is called outside a server function, then the callback will be invoked with the application exits.

### Value

A function which, if invoked, will cancel the callback.

### See Also

`onSessionEnded()` for the same functionality, but at the session level only.

### Examples

    ## Only run this example in interactive R sessions
    if (interactive()) {
      # Open this application in multiple browsers, then close the browsers.
      shinyApp(
        ui = basicPage("onStop demo"),

        server = function(input, output, session) {
          onStop(function() cat("Session stopped\n"))
        },

        onStart = function() {
          cat("Doing application setup\n")

          onStop(function() {
            cat("Doing application cleanup\n")
          })
        }
      )
    }
    # In the example above, onStop() is called inside of onStart(). This is
    # the pattern that should be used when creating a shinyApp() object from
    # a function, or at the console. If instead you are writing an app.R which
    # will be invoked with runApp(), you can do it that way, or put the onStop()
    # before the shinyApp() call, as shown below.

    ## Not run:
    # ==== app.R ====
    cat("Doing application setup\n")
    onStop(function() {
      cat("Doing application cleanup\n")
    })

    shinyApp(
      ui = basicPage("onStop demo"),

      server = function(input, output, session) {
        onStop(function() cat("Session stopped\n"))
      }
    )
    # ==== end app.R ====

    # Similarly, if you have a global.R, you can call onStop() from there.
    # ==== global.R ====
    cat("Doing application setup\n")
    onStop(function() {
      cat("Doing application cleanup\n")
    })
    # ==== end global.R ====

    ## End(Not run)

[Package shiny version 1.0.5 Index]