Yes - though not automatically. You can calculate the size of the Frame contents and set it accordingly - this will mean you can’t use Scale though.
I’d recommend using Team.PlayerAdded and Team.PlayerRemoving events to register players.
Nope - these aren’t required. Although, it is required that you do not show content between players who are blocked. You should check this before any sort of communication is allowed (for example, custom icons).
Yes! You can calculate this by adding up the size of each component you want inside, and the spacing (if applicable) - there is also a way of doing this with UI Constraints, however I wouldn’t be able to provide you with specifics for a situation without background of what you might want to do specifically there.
Want to provide an extension here regarding point three: there are several methods available for you to use when accounting for blocking communication for players, either because they’re blocked or as a respect to the privacy settings on their account. Here are the in-engine APIs:
CanUserChatAsync
Returns a boolean value whether the player is permitted to chat or not as a result of the privacy settings on their account. This is chiefly the Who can chat with me? option.
CanUsersChatAsync
Returns a boolean value whether two players are allowed to communicate with each other. This takes both of their account settings into consideration first and I believe relation status second (blocked users cannot chat with each other). [requires citation]
StarterGui:GetCore(“GetBlockedUserIds”)
Returns an array of UserIds of the users who the LocalPlayer blocked. Users do not have to be online for a UserId to be included. This list can be used to omit various kinds of contact.