curious how you keep the lyric highlight in sync across players given this is browser audio, not a native client. each phone's audio pipeline has different buffering (bluetooth headphones alone can add 100-200ms of latency depending on the device), so if the highlighted line advances off local playback position rather than a shared server clock, two players on the same "beat" can end up seeing different words highlighted, which matters a lot for a game about lyrical timing. also on iOS safari specifically, an audio element started from one gesture and then paused/resumed later (someone switching tabs to grab a drink) can get stuck needing another user tap to resume playback, which for a fast round based party game would just look like the game silently broke for that person mid round.
I'm not the developer but I'd venture that it's a WebRTC "metadata track" over the same MediaStream the audio is going through.
Metadata tracks aren't formally part of the spec but there's ways to either inject it into the video frame data payload or encode them to audio.
There's libraries like LiveKit that abstract this and make meta tracks easy.
I don't think any web browser is able to make use of WebRTC metadata tracks.
the game doesn't play or stream any audio (though i think maybe a countdown timer or other fun sound effects would be nice)
players usually either a) play in real life on their phones or b) use something like Google Meet or Discord to sing their lyrics
that being said, the "buzz in" feature is sensitive to latency (but, in my experience, it usually takes players a few seconds to think of a song that fits the target word anyway)
It isn't a karaoke game there are no lyrics to sync.