Completing the Spotify Experience: My Journey Building AuraLyrics
A journey of building a native macOS app to bring lyrics to your workflow without the friction. Why I chose Swift over Electron and how I built AuraLyrics.
As a software engineer, music is a huge part of my daily workflow. It helps me get into the "zone." But I always felt something was missing in Spotify’s desktop experience: The Lyrics.
Yes, Spotify has its own lyrics screen. But to see it, you have to stop what you are doing, switch windows, and cover your whole screen. I didn't want that. I wanted something "lighter." I wanted an app that floats over my code, stays out of my way, and is there only when I need it.
That is how the idea of AuraLyrics was born.
In this article, I want to share how I built this native macOS app, why I chose Swift over Electron, and the challenges I faced along the way.
1. Why Build Another Lyrics App?
There are already some lyrics apps out there. However, most of them have two problems:
- They are heavy: Many are built with Electron, which uses too much RAM.
- They don't feel "Native": They don't look like they belong on macOS.
My vision for AuraLyrics was simple:
- Zero Friction: It should live in the menu bar and not interrupt my work.
- Native & Lightweight: It must run smoothly on Apple Silicon without eating up memory.
- Aesthetic: A borderless, clean design that fits the "Aura" brand.
2. The Tech Stack: Why Native?
As a developer, my first instinct was to build a quick web wrapper (Electron). It is easy and fast. But I saw this project as an opportunity to stretch my Swift and AppKit muscles.
- Language: Swift
- UI Framework: SwiftUI (for the modern look) & AppKit (for complex window management).
- Data Source: LRCLIB (An amazing open-source lyrics provider).
- Distribution: Homebrew Cask. I maintain a custom tap at (link coming soon) for easy installation and updates.
The "Floating Window" Challenge
The most critical feature was the floating window. I wanted the lyrics to hover over other apps (like VS Code or Terminal).
SwiftUI is great, but it doesn't always give you full control over window levels. I had to use NSPanel to handle the behavior. The goal was to make the window "always on top" but clickable, without blocking the user's view too much. It took some trial and error, but the result feels very smooth.
3. Finding the Lyrics (LRCLIB)
Here is a fun fact: Spotify’s official API does not provide lyrics data. This was a big roadblock.
I looked for alternatives and found LRCLIB. It is a free, open-source API for synchronized lyrics. Since AuraLyrics is a hobby project and fully open-source, this was the perfect match. It allows the app to be free for everyone to use.
4. Design: The "Aura Mode"
During development, I created a feature initially called "Karaoke Mode." But as the design evolved, I renamed it "Aura Mode."
In this mode, all borders and backgrounds disappear. You only see the text floating on your screen. It is minimal and clean. It doesn't just show the words; it sets the mood for your coding session.
5. What is Next? (Build in Public)
AuraLyrics is not just a standalone app; it is the first project under my personal brand, AuraWorks.
I followed a "Build in Public" approach for this project, sharing my progress and bugs on Twitter/X. The feedback from the community helped me shape the roadmap.
Currently, AuraLyrics is:
- Fully Open Source.
- Available on GitHub.
- Respectful to the macOS ecosystem.
If you don't want to miss the beat while coding, give it a try.
Note: AuraLyrics v1.0 is currently in final polish mode. It will be available for download soon. Follow me on X for the drop.