Why we ditched Discord Embeds for Components V2 (and built a minimalist bot)
If you've used Discord in the past few years, you've probably noticed that almost every bot feels identical: giant colorful embeds, endless emojis, noisy confirmation messages, and clunky reaction-based menus. When building ego — a curated social utility bot — we decided to take a completely different route: keep it minimal, understated, and built entirely around Discord Components V2. Here is…
Discord bots have largely remained the same in recent years, with most featuring large, colorful embeds, countless emojis, noisy confirmation messages, and reaction-based menus. When developing ego – a social utility bot, the team decided to take a completely different approach, focusing on minimalism and an understated design built entirely around Discord Components V2. Here’s why they abandoned traditional embeds and how they structured their architecture.
Classic Discord embeds, once useful in 2017, now have significant user experience (UX) issues. They create visual noise with high-contrast colored sidebars that draw attention to trivial status messages. A single command response can take up half of a phone screen, and they have an impersonal feel, appearing more like automated marketing bots than natural platform utilities.
However, Discord’s markdown has evolved. Features such as subtext, blockquotes, and native Components V2 (containers, sections, buttons, and separators) enable developers to create interfaces that feel more at home in Discord’s dark theme. Instead of large, colorful banners with decorative emojis, clean status blocks offer a much better appearance.
For ego’s core architecture, the team prioritized pragmatism over hype. They chose Node.js 22 plus TypeScript (ESM) for the runtime, discord.js v14 as the library, SQLite with better-sqlite3 and drizzle-orm as the database, and an optional Redis layer for caching and hot-state. The choice of SQLite + Drizzle was strategic. While many developers opt for PostgreSQL or MongoDB for their bot projects, for ego, handling local guild preferences, fast identity histories, and low-latency lookups, an embedded SQLite database with Write-Ahead Logging (WAL) mode delivers sub-millisecond query times with zero networking overhead.
A standout feature of ego is its ability to automatically resolve media links. Modern Discord users often face broken video previews when sharing links from Instagram, X (Twitter), or TikTok. Rather than forcing users to run commands or paste alternative domains, ego listens for supported URLs passively. It resolves the direct media source via backend streamers, attaches the video/photo using native Discord message attachments, and suppresses the original broken embed using MessageFlags.SuppressEmbeds. The outcome is that users get instant playable video in their feed without any clutter or friction.
The team learned that restraint is a powerful feature. Removing information can be harder than adding it, but users appreciate tools that don’t shout for attention. Components V2 are the future of Discord UI: separators, accessory thumbnails, and discreet button rows provide significantly better hierarchy than legacy embeds. The team encourages isolating feature logic into dedicated modules with their own lifecycle hooks and services. The live project can be found at ego.skin (https://ego.skin).
As for UI design in Discord applications in 2026, the team is curious about others’ approaches. Are developers still relying on embeds, or are they transitioning to components as they have?
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.