I’ve been working on two projects each with Custom Post Types where posts needed to automatically disappear based on the date. One was for events. The other for job listings. The best solution seemed to be a plugin called Post Expirator.
At the time of writing Post Expirator had not been updated for a year, but it worked fine even with Gutenberg enabled. It appeared to be the only plugin where you could decide which Custom Post Type the display the options.
I also tested with a caching plugin (Breeze) and the post disappeared right on cue. A couple of nice features was you could move a post to a new category (or any taxonomy) and receive email notifications.
Other plugin looked at were:
Post Expiration Date: this was recently updated, and simple, but seemed to need added code to work on CPT’s.
Simple Post Expiration: this continues to show a post, but prefixes “Expired” to the post title. At the time of writing it has not been updated in over years.