Currently, when sidebar filters are updated, the Usage Metrics Dashboard passes the updated data object to reactable() directly. This causes the table to be rerendered, and any JS elements of the table are reset. In fact, the code currently uses a hack to work around this to preserve the contents of the search field.
The Runtime Version Scanner handles this better: it the table with an empty data frame at first, and then uses updateReactable() to update the data. The one caveat to this is that cells whose HTML is computed in a cell argument to colDef need to be pre-computed, as those arguments are not run during updateReactable() (known issue).