Roast: nolanlawson/emoji-picker-element
๐จ Warning: Over-Engineering Level Critical
Congratulations to nolanlawson for finally answering the question nobody asked: "What if we treated a simple smiley-face dropdown like a mission-critical database migration?"
Here lies emoji-picker-element, a repository that serves as a monument to the sunk cost fallacy of web performance.
๐ The "Custom Framework" Syndrome
You started with Svelte 3. Then Svelte 4. Then, in a move that screams "I have too much free time," you wrote your own custom framework just to shave off 6kB of bundle size.
Read that again. You built a reactivity engine and a templating system from scratch... for a pop-up that picks eggplants. That is not optimization; that is a cry for help. Itโs like building your own car because you didn't like the upholstery in the Uber.
๐พ IndexedDB? For Emojis?
You are using IndexedDB to cache emoji data. Let me repeat that: You are using a transactional, asynchronous, browser-native NoSQL database to store a list of static JSON objects that change once a year when the Unicode Consortium decides we need a "melting face."
You claim it's for "memory efficiency," but let's be real: this is just PouchDB withdrawal symptoms manifesting in a new project. "Offline-first emoji picking"โfinally, I can react with a ๐ฉ to my lack of internet connection while spelunking.
๐จ The "Native" Excuse
- Visuals: "It renders native emoji by default." Translation: "I didn't want to bundle a font, so if you're on Windows 7, enjoy your black-and-white rectangles."
- Safari Support: You dropped Safari 12 support to save bytes, then wrote a blog post rationalizing it. The mental gymnastics required to justify breaking the web for 0.5% of users just to make your bundle size look better on Bundlephobia is truly Olympian.
๐ The API Quirks
I see an event called emoji-click-sync. This exists solely because of a Safari clipboard bug. Your codebase is literally haunted by the ghosts of browser quirks you tried to optimize away.
Summary
emoji-picker-element is a technical marvel that solves a problem <input type="text"> with an emoji keyboard already solves. It is 12.5kB of pure, unadulterated "because I can."
Verdict: 10/10 for engineering, 0/10 for sanity. Please go outside and touch some grass (๐ฑ Unicode U+1F331).