1) What
There's currently no way of showing a dynamic experience in a frame without a user interacting with a frame. You could push details about the user in the first get, but it would make frames less indexable, and could leak session data without permission.
The idea is to add a new meta tag fc:frame:status which indicates the "status" that will be shown if a condition is met. Here's an example:
<meta property="fc:frame:status:✅" content="ERC721:0x123...:*" />
This would indicate that the frame for the current user should receive the status ✅ if the user has any ERC-721 from the supplied contract.
Another condition could be an individual token, ERC721:0x123...:1 or a range of tokens ERC721:0x123...:1-2,4-5. The client can then indicate on the frame that the status has been achieved. For example, Warpcast might choose to display the status this way:
Additionally, it might be useful to add additional metadata that could drive how certain states are interpreted by the client, for instance indicating which image should be displayed if a status has been achieved.
<meta property="fc:frame:status:✅:image" content="https://..." />
Unlike the first option this could leak some amount of information to the website, e.g. if I sent someone.eth the NFT 0x123...:1 and I was tracking views to the image specifically crafted for that NFT I would know at what point in time they saw the cast (or at least when a client claimed to have shown it). This might be something privacy focused users opt out of.
2) Why
Helps indicate state without having to interact with the frame:
Check if I still have my tamagotchi 👾, does it need cleaning 💩 or is it dead 💀
Have I already won 👑 or lost 😭 the game someone started with me
Am I currently holding the hot potato or has it exploded 💣
Have I already completed this task ✅ (Mint, Survey, whatever - i.e. POAP)
Think Frame Friday showed how creative people can be, these are just some ideas but I'm sure smart people could come up with a million more.
Might help frame spam, i.e. I can see on the frame I've successfully interacted with the frame that minted the token.
There's even space for some real-time component to this in the far future, e.g. if the client is listening for changes to the user's NFT wallet both the utf-8 icon statuses and even the images could be updated accordingly.
It's extensible I've so far only discussed the condition name ERC721, however clients could converge on other conditions such as Liked:<Cast>, Retweeted:<Cast> etc.