I built a Retro ICQ Messenger (for WhatsApp & Telegram) — and Suddenly Chatting is Fun Again
Hi, I’m Felix Helleckes. A few weeks ago, I was sitting at my laptop, feeling nostalgic and slightly annoyed. Modern messengers often feel…
I built a Retro ICQ Messenger (for WhatsApp & Telegram) — and Suddenly Chatting is Fun Again

Hi, I’m **Felix Helleckes**. A few weeks ago, I was sitting at my laptop, feeling nostalgic and slightly annoyed. Modern messengers often feel like bloated data farms: a single, monolithic tabbed app where everything is squeezed together, leaving you with zero overview. One ping from the wrong group is all it takes to completely destroy your focus.
I wanted something different — a small experiment to combine old-school comfort with modern tech.
The result? A desktop messenger with a classic ICQ 5 look, built using Electron + React. It features multi-window support, QR login for WhatsApp, and native Telegram integration. And yes, I actually use it every single day.
Why a Retro Design?
Because it’s incredibly practical. ICQ 5 had a beautifully clean feel: every conversation opened in its own window, so you always knew exactly who you were talking to. I brought that concept back — no tabs, no lost chats.
In daily use, this brings a surprising amount of focus. You can drag separate windows onto different monitors, focus on a single person, and keep your workspace perfectly organized.

The Tech Stack (Quick & Concrete)
- Electron + React as the foundation — cross-platform, fast to develop.
- Multi-Window Architecture: Every chat opens its own
BrowserWindow. These windows are managed in aMapand reused when reopened to prevent duplicates. - Broadcast Pattern: All open windows stay synchronized via
WebContents, ensuring updates land exactly where they belong. - WhatsApp via
whatsapp-web.js: Runs a headless Puppeteer instance to handle QR logins and persistent sessions (which are strictly gitignored). - Telegram via GramJS: A real MTProto connection featuring native 2FA support.
- The UI: A dark-teal ICQ skin, custom title bars, stickers, images, an emoji picker, and font scaling (all styled using
remunits). - Windows Builds: Packaged as both an NSIS installer and a portable
.exefor hassle-free distribution.
Small, Practical Decisions That Make a Difference
I kept the features intentionally simple:
- Font scaling via quick
A-/A+buttons. - Contact windows running as independent
BrowserWindowinstances. - Self-contained session folders kept out of the repository.
These tiny details ensure the tool stays stable in real-world use, rather than just looking good in a demo.

Security & Limitations (Keeping it Real)
Let’s be transparent:
- WhatsApp is connected via a web API, which is unofficial. It works flawlessly, but there is always a minor risk that WhatsApp might flag or temporarily block sessions if automated rules are violated.
- Telegram runs through the official MTProto layer using individual API keys, making it highly reliable.
- Session files and
.envconfigs are fully gitignored. You should never commit your session files or API keys to a public repository.
A Real-World Example: Partial Sells, Phantom Positions, and Balance Displays
During a test run, a trading bot running on my machine executed a few automated partial exits. On my stream overlay (yes, I stream the bot’s stats live), the numbers in the top-right corner lagged for a moment. This happened because the balance-fetching script aggressively limits requests to every 2 minutes to prevent hitting API limits.
The trade went through perfectly and the orders were correct, but the UI was out of sync for a few seconds — a classic case of async data lagging behind the interface.
The Fix: The overlay now fetches the latest trades separately via a lightweight local script. This updates the display instantly without stressing the exchange APIs.
The SmartScreen Hurdle on Windows
When you launch the portable .exe for the first time, Windows SmartScreen will likely show a warning. This is completely normal since the build isn't digitally signed (which costs a fortune for indie developers).
To run it, simply click “More info” ➔ “Run anyway”, or right-click the file, go to Properties, and check “Unblock”. It’s not pretty, but it’s entirely safe.
Why This Project Makes Sense in the Era of Signal & Threads
This tool isn’t meant to replace major platforms. Instead, it’s a productivity tool for creators, community managers, and power users who handle multiple accounts and contexts simultaneously.
The multi-window philosophy supports productive multitasking far better than an endless stack of browser tabs. Plus, nostalgia is a powerful UX tool — it doesn’t just look cool, it actually makes the software more enjoyable to use.
Key Takeaways (And What You Can Apply Today)
- Small UX choices matter: Giving each contact its own window and adding quick font scaling gives the user an immense sense of control.
- Session persistence is a game-changer: It makes for a seamless UX, but you must secure it properly via your
.gitignore. - Unofficial APIs are powerful but volatile: Always build fallback mechanisms in case an API structure changes.
- Decouple your data: If you are streaming or utilizing overlays, separate your data-fetching logic (like trades or balances) from your rendering engine to prevent UI freezes.
Give It a Spin — and Let Me Know What You Think!
The source code, the installer, and a short demo video are all available in the repository (link in the README).
If you want to try it out, grab the portable .exe, test the multi-window setup, and see how it fits into your workflow. I’m incredibly curious to hear your feedback—should we add better multi-device sync? Darker themes? Automatic window snapping for multi-monitor setups?
If you’re hesitant about the Windows SmartScreen warning, I’ve uploaded a quick walkthrough video on YouTube showing exactly how to safely unblock and run the app. Check it out, give it a try, and if you like the project, leaving a star on GitHub helps more than you think!
P.S. I didn’t build this purely for nostalgia. I built it to solve a real issue: How do I manage my chats without losing my mind in a sea of tabs? The result is more focus, less noise, and a nice touch of retro charm. Even if it sounds unusual at first, give it a try. Sometimes the simplest ideas bring the most joy.
Link to Repository: https://github.com/Felix-Helleckes/ICQ
[embed]
메타데이터
- post_id
- ad01fc6df8b7
- slug
- i-built-a-retro-icq-messenger-for-whatsapp-telegram-and-suddenly-chatting-is-fun-again-ad01fc6df8b7
- url
- https://medium.com/@felix-helleckes/i-built-a-retro-icq-messenger-for-whatsapp-telegram-and-suddenly-chatting-is-fun-again-ad01fc6df8b7
- canonical_url
- https://medium.com/@felix-helleckes/i-built-a-retro-icq-messenger-for-whatsapp-telegram-and-suddenly-chatting-is-fun-again-ad01fc6df8b7
- author_url
- https://medium.com/@felix-helleckes
- status
- ok
- fetched_at
- 2026-06-14 11:28:49