This broke in Makie v0.18, but @sdanisch showed me a better solution:
screen = GLMakie.Screen()
selection = Observable(...) # this triggers and controls figure (re)construction
on(selection) do selected
# filter data etc...
figure = build_figure(data; selection)
display(screen, figure)
end
notify(selection)
wait(screen)