I've been screen casting Zwift, from my Google Pixel 8 phone, to a Chromecast puck. I'm running Graphene OS 2024110700. I've been using this method for 2-3 months (with prior Graphene releases) successfully with 1-2 screen freezes occurring which may have been a network issue with wifi.
Google Play Services are installed on my phone so this solution may not be desirable for some folks.
Here's the steps I follow:
1) Switch on the chromecast and have it available on the wifi network.
2) Run Google Home app on my phone.
3) Select 'Devices' in Google Home and then long-press on the chromecast puck device. You should see a 'Connecting' message and then options appear for the Chromecast puck. For my puck I see 'Open remote' and 'Cast my screen' as options.
4) Press 'Cast my screen' and you get a message about 'Cast to mirror device'. Click on 'Cast screen' in the bottom right of the message.
5) You'll get another message 'Start recording or casting with Google Play services?' and then a pull-down option for 'A Single app' or 'Entire Screen'. I select 'A single App'.
6) Select the app you want to cast.
7) Your app will appear on your TV connected to your Chromecast puck.
I've been able to reliably screen cast for an hour.
I can stop casting by pulling-down fro the top of my phone's screen and clicking the 'Cast' lozenge. Interestingly clicking the 'Cast' lozenge again gets a message with 'searching for devices' and never finds any.