{"id":"ERC-7409","name":"Public NFT Emote Repository V2","status":"Final","chain":"both","category":{"id":"social","name":"Social & Messaging","description":"Communication and reactions"},"journeyStages":[{"id":"specialized","name":"Specialized Interactions","description":"Physical items, AI, social, gaming"}],"uxImpact":"Users can react to any NFT with full Unicode emoji support including skin tones and variations — supersedes ERC-6381 with string-based emoji encoding for future compatibility. Design implications: same as ERC-6381 but with full emoji picker including skin tone variants, handle variable-length emoji rendering, show diverse emoji options. Design decisions: whether to group emoji variants or show individually, handling emoji that render differently across devices, search/filter in expanded emoji set, backwards compatibility display for collections using both standards.","hasDetailedContent":true,"content":{"id":"ERC-7409","sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-7409","type":"official-spec"}],"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25","summary":"Users can react to any NFT with full Unicode emoji support including skin tones and variations — supersedes ERC-6381 with string-based emoji encoding for future compatibility.","designerTakeaways":["You can attach reaction bar below any NFT with recent emoji shortcuts plus full picker.","Your picker includes skin tone modifiers on people emoji per Unicode standards.","You can group variant emoji in picker while showing individual counts on display."],"applicability":{"whenToUse":["Social layer on NFT galleries or feeds.","Platform adopts ERC-7409 emote registry.","Full Unicode emoji expression matters."],"whenToAvoid":["No social reactions in product.","Only legacy ERC-6381 without migration plan.","On-chain storage cost prohibitive for reactions."]},"prototypeFirst":[{"screen":"NFT reaction bar","why":"Primary social interaction surface.","covers":["No reactions","Popular reactions","Your reaction"],"include":["Quick emoji row","Add reaction","Count badges"]},{"screen":"Full emoji picker","why":"7409 value is full Unicode including skin tones.","covers":["Picker open","Skin tone select"],"include":["Category tabs","Skin tone long-press","Search"]},{"screen":"Reaction list expand","why":"See who reacted with what.","covers":["Reaction aggregations"],"include":["Emoji group headers","User list per emoji","Remove your reaction"]},{"screen":"Legacy 6381 fallback display","why":"Collections may mix standards.","covers":["6381 only","7409 only","Mixed"],"include":["Unified display layer","Migration note in advanced"]}],"mentalModel":[{"label":"Reaction","description":"Unicode emoji string attached to NFT by user."},{"label":"Registry","description":"Public repository aggregating reactions cross-app."},{"label":"Skin tone modifier","description":"Fitzpatrick codes combine with base emoji."},{"label":"Variable length","description":"Some emoji multi-codepoint — render as single glyph."},{"label":"6381 legacy","description":"Older encoding — migrate display for compatibility."}],"statesToDesign":[{"state":"No reactions yet","trigger":"First visitor.","userNeed":"Discover feature.","designResponse":"Subtle Add reaction affordance."},{"state":"User reacted","trigger":"Connected wallet reacted.","userNeed":"Change or remove.","designResponse":"Highlight your emoji; tap to change."},{"state":"Picker open","trigger":"User adds reaction.","userNeed":"Find emoji including tones.","designResponse":"Full picker with search."},{"state":"Cross-device render diff","trigger":"Unsupported glyph.","userNeed":"Not broken boxes.","designResponse":"Fallback placeholder with tooltip."},{"state":"Reaction tx pending","trigger":"On-chain reaction submitting.","userNeed":"Optimistic UI.","designResponse":"Show pending reaction gray until confirm."}],"designDecisions":[{"question":"Group skin tone variants in counts?","recommendation":"Separate counts per exact string; optional rollup in analytics only.","rationale":"👍 vs 👍🏽 are distinct user expressions."},{"question":"On-chain vs off-chain reactions?","recommendation":"Match product — if on-chain show pending tx state.","rationale":"Cost vs permanence tradeoff."},{"question":"Picker search?","recommendation":"Required for expanded set.","rationale":"Full Unicode too large to browse only."}],"problemsSolved":[{"problem":"Limited reaction set","oldWay":"6381 constrained encoding","newWay":"Full Unicode string emoji","impact":"medium"},{"problem":"No skin tone representation","oldWay":"Yellow only emoji","newWay":"Tone modifiers in picker","impact":"medium"},{"problem":"Silent NFT social layer","oldWay":"No reactions on art","newWay":"Cross-app emote registry on any NFT","impact":"low"}],"uxPatterns":[{"name":"NFT Emoji Reaction Bar","description":"Quick react plus counts under NFT.","mockup":"concept/reactions","components":["ReactionBar","EmojiCount","AddButton"],"userFlow":["View NFT","Tap emoji","Count updates","Others see reaction"]},{"name":"Full Unicode Picker","description":"Skin tone support and search.","mockup":"concept/reactions","components":["EmojiPicker","SkinTonePopover","SearchField"],"userFlow":["Open picker","Long press for tone","Select","Reaction posts"]}],"seenInTheWild":[{"app":"Lens Protocol","url":"https://lens.xyz/","note":"Social reactions on content."},{"app":"Farcaster","url":"https://farcaster.xyz/","note":"Emoji reaction patterns in feeds."},{"app":"OpenSea","url":"https://opensea.io/","note":"NFT engagement feature experiments."}],"antiPatterns":[{"pattern":"6381-only picker without tones","why":"7409 upgrade value lost","instead":"Full Unicode picker with modifiers","severity":"medium"},{"pattern":"Broken tofu boxes for valid emoji","why":"Looks broken","instead":"Font fallback stack and placeholder","severity":"high"},{"pattern":"Reactions without remove/change","why":"Regret permanent wrong emoji","instead":"Tap your reaction to edit","severity":"medium"}],"vocabulary":[{"use":"React","avoid":"Post emote to registry","why":"Social verb."},{"use":"Reactions","avoid":"Emote repository entries","why":"Familiar social term."},{"use":"Change reaction","avoid":"Update emote string","why":"Edit action language."}],"onMonad":[{"aspect":"On-chain reactions","ethereum":"Gas per reaction limits spam but adds cost","monad":"Low fees enable reactive social layers","designImplication":"On-chain reactions viable on Monad galleries."},{"aspect":"Reaction confirm speed","ethereum":"Slow pending reaction state","monad":"Quick confirm for optimistic UI","designImplication":"Short pending window on reaction bar."}],"technicalNotes":"ERC-7409 uses string emoji; handle multi-codepoint glyphs and 6381 legacy display.","relatedStandards":[{"id":"ERC-6381","relationship":"Prior emote standard superseded"},{"id":"ERC-721","relationship":"Reactions attach to any NFT"}]},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-7409","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-7409","type":"discussion"},{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-7409","type":"official-spec"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-7409","markdown":"https://www.eipsfordesigners.com/standards/ERC-7409/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-7409/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-7409","official":"https://eips.ethereum.org/EIPS/erc-7409","discussion":"https://ethereum-magicians.org/search?q=ERC-7409"},"freshness":{"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25"}}