title: Shiny observeEvent shows first event, but not second, third
body: <p><strong>TL;DR:</strong> observeEvent is only working on the first instance, but not subsequent.</p>
  <p><strong>Explanation:</strong>
  In a small shiny app below, I dynamically build a URL based on user input, which points to the corresponding pre-rendered &quot;timer&quot; gif images I have hosted on GH. In this shiny app code below, observeEvent works great to pull the sliderInput value (e.g. 5sec), build a URL, and then clicking 'go' will show the timer using a clever shinyjs package. However, if I do not change the input (still 5sec), clicking go doesn't rebuild the image. If I change the value to a different number (4sec), it will show the correct gif. If I change back to the original number (5sec), no gif. If I go to a new number (3sec), correct gif. If I print the value of input$time or of rv$time in my observeEvent, then each of those values are updating correctly (both print the corresponding value).</p>
  <p><strong>Goal:</strong> to show the gif that corresponds to the input$time upon each update of input$go</p>
  <p><strong>Reprex:</strong></p>
  <pre><code>library(shiny)
  library(tidyverse)
  library(glue)
  library(shinyjs)
  
  # Define UI
  ui &lt;-  navbarPage(title = &quot;Reprex&quot;, 
                    ## RHYME TIME -----
                    tabPanel(&quot;Time&quot;,
                             useShinyjs(),
                             sidebarLayout(
                               sidebarPanel( 
                                 sliderInput(&quot;time&quot;,
                                             &quot;Seconds&quot;,
                                             min = 3,
                                             max = 10,
                                             value = 5
                                 ),
                                 actionButton(inputId = &quot;go&quot;,
                                              label = &quot;Go&quot;), 
                               ),
                               mainPanel(
                                 HTML(&quot;&lt;center&gt;&quot;),
                                 shinyjs::hidden(htmlOutput(&quot;simple_timer&quot;)),
                                 HTML(&quot;&lt;/center&gt;&quot;)
                                 
                               )
                             )
                    )
  )
  
  # Define server logic
  server &lt;- function(input, output, session) {
    #a container to store my time var
    rv &lt;- reactiveValues(
      time = 0
    )
    
    #the event that is triggered by input$go getting clicked
    observeEvent(input$go, {
      rv$time &lt;- input$time #this should update rv$time after go is clicked
      shinyjs::show(&quot;simple_timer&quot;) #this is the clever package with simple show/hide funs
    })
    
    #the reactive text that generates my HTML
    output$simple_timer &lt;- renderText({
      glue::glue('&lt;img src =&quot;https://github.com/matthewhirschey/time_timer/raw/main/data/{rv$time}_sec.gif&quot;, 
              align = &quot;center&quot;, 
              height=&quot;50%&quot;, 
              width=&quot;50%&quot;&gt;')
    })
  }
  
  # Run the application 
  shinyApp(ui = ui, server = server)
  </code></pre>