@tanger Thank you so much for your feedback. Can I please ask what type of server-side cache you’re running? I have been trying to figure out why transients do not expire for some users for several months now.
All I know up to know is that when backed by the MySQL WordPress options table, the transients always expire correctly. But with some more advanced caching solutions there can be cases where the WordPress transients API does not behave as expected.
As a sidenote, it is also possible to clear transients using WP-Optimize, but clearing the transients manually is not a complete solution. This is why I want to find the root cause of this issue.