Creates an action button or link whose value is initially zero, and increments by one each time it is pressed.

actionButton(inputId, label, icon = NULL, width = NULL, disabled = FALSE, ...)

actionLink(inputId, label, icon = NULL, ...)



The input slot that will be used to access the value.


The contents of the button or link–usually a text label, but you could also use any other HTML, like an image.


An optional icon() to appear on the button.


The width of the input, e.g. '400px', or '100%'; see validateCssUnit().


If TRUE, the button will not be clickable. Use updateActionButton() to dynamically enable/disable the button.


Named attributes to be applied to the button or link.

Server value

An integer of class "shinyActionButtonValue". This class differs from ordinary integers in that a value of 0 is considered "falsy". This implies two things:


## Only run examples in interactive R sessions
if (interactive()) {

ui <- fluidPage(
  sliderInput("obs", "Number of observations", 0, 1000, 500),
  actionButton("goButton", "Go!", class = "btn-success"),

server <- function(input, output) {
  output$distPlot <- renderPlot({
    # Take a dependency on input$goButton. This will run once initially,
    # because the value changes from NULL to 0.

    # Use isolate() to avoid dependency on input$obs
    dist <- isolate(rnorm(input$obs))

shinyApp(ui, server)


## Example of adding extra class values
actionButton("largeButton", "Large Primary Button", class = "btn-primary btn-lg")
#> <button class="btn btn-default action-button btn-primary btn-lg" id="largeButton" type="button">Large Primary Button</button>
actionLink("infoLink", "Information Link", class = "btn-info")
#> <a class="action-button btn-info" href="#" id="infoLink">Information Link</a>