I do not know, but have you tried using a proxy? I use proxy for updating most output in shiny.
ui:
dataTableOutput("avtable", width = "100%")
server:
output$avtable <- renderDataTable({
# do this once only
datatable(...)
})
avtable_proxy <- dataTableProxy("avtable", session = session)
observeEvent(avbv(), {
# this is how an example of how you update it
av <- avbv()
replaceData(avtable_proxy, as.data.frame(av), resetPaging = FALSE)
})