Save edited and reactive Shiny table in R

I'm currently building a Shiny dashboard in R and I'm currently building a mechanism that would allow some user to comment some datatable inside it, and I got this mechanism done and sorted (as you can see on the code below). My problem is when I add the comments and refresh the page, the comments go away (as they should). Is there any way to save the datatable and keep the changes saved for any user to see, even after I refresh the dashboard page?

Thanks if you read this far :)

Please find a reproducible example below:

library(shiny)
library(DT)

dt <- data.table(
  ID = c('Order 1','Order 2', 'Order 3', 'Order 4'),
  Name = c('John','Peter','Anna','Richard')
)

ui <- fluidPage(
  
  fluidRow(
    
    column(2, pickerInput(inputId = 'selectID',
                          label = 'Select order ID to comment on:',
                          choices = c('Order 1','Order 2', 'Order 3', 'Order 4'),
                          selected='',
                          multiple=FALSE)),
    
    column(2, textInput(inputId = 'comment', 
                        label ='Please add comment in the text box:', 
                        value = "", width = NULL,
                        placeholder = NULL))
    ,
    
    column(1, actionButton(inputId = "button", 
                           label = "Add Comment",
                           size = "extra-small",
                           style = "margin-top:25px"
    )
    )
  ),
  
  fluidRow(
    column(12,
           dataTableOutput('data')
               )
    )
  )
  
server <- function(input, output, session){
  
 dt_comments <- reactiveVal({
    data.table(
      ID = character(0), 
      Comment = character(0),
      stringsAsFactors = FALSE
    )
  })
  
  dt_current <- reactive({

    dt <- dt
    
    ## merge with current comments
    if(nrow(dt_comments()) > 0)
      dt <- merge(dt, dt_comments(), by = "ID", all.x = TRUE)
    
    return(dt)
    
  })
  
  observeEvent(input$button, {
    
    req(input$selectID)
    
    ## update df_comments by adding comments
    dt_comments_new <- rbind(dt_comments(), 
                             data.table(ID = input$selectID, Comment = input$comment)
    )
    
    ## if duplicated id's keep only most recent rows 
    dt_comments_new <- dt_comments_new[!duplicated(dt_comments_new$ID, fromLast = TRUE), , drop = FALSE]
    
    dt_comments(dt_comments_new)
    
  })
  
  output$data <- DT::renderDataTable({
    
    req(dt_current())
    
    dt2 <- dt_current()
    
    ## show comments if non-empty
    showComments <- is.null(dt2$Comment) || !all(is.na(dt2$Comment))
    
    DT::datatable(dt2,
                  editable = TRUE,
                  options = list(
                    columnDefs = list(
                      list(targets = ncol(dt2), visible = showComments)
                    )
                  )
    )
    
  })
  
  
} 
  
shinyApp(ui = ui, server = server)
How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum