@mrwweb I was having a similar issue with AJAX not working for my custom filter.
I am not sure if the proper way, but it would not fire ‘tribe_events_pre_get_posts’ when checking to see it was not using the admin so I added an ajax check:
if(!is_admin() || (defined( ‘DOING_AJAX’ ) && DOING_AJAX) ){
add_action( ‘tribe_events_pre_get_posts’, ‘vf_filter_events’);
}
This is at least a starting point for me. Did you solve it another way?