Is there a best practice for hiding the app window once the user has tabbed out of the game?

Should I listen when the app window losses focus?

Well, we have an in_game_only window for that… but you can also use the getRunningGameInfo() to listen when the app window losses focus and then hide the relevant window.