If you’re a developer working on a Mac, you probably know this feeling:
You sit down in the morning, open your code editor, Slack, Docker, a browser with 20 tabs, and your database GUI. Before you even run your first query of the day, your Activity Monitor already looks like a crime scene: 8+ GB of RAM devoured by background Chromium runtimes.
When it comes to database GUIs on macOS, developers have essentially been forced to choose between two extremes:
- The Electron / Java Giants: Powerful and feature-rich, but they take 5–10 seconds to cold-boot, idle at 800MB–1.2GB RAM, and drop frames when scrolling through large query dumps.
- The Fast Native Clients: Fast and responsive, but either locked behind costly yearly subscriptions or crippled on the free tier (like being limited to 2 open tabs).
We wanted a third option: A blazing-fast, 100% open-source, native macOS database client that treats your system resources with respect.
That’s why we built BerryDB Desktop.
# You can install it right now via Homebrew:
brew install --cask berry-apps/tap/berrydb
Here is a look under the hood at why we decided to write it completely in Swift and AppKit, how we solved large-table rendering at 120 FPS, and the engineering tradeoffs we made along the way.
⚡ The Benchmark: Native vs Electron
Before writing a single line of application code, we set clear architectural targets. Here is how BerryDB compares in everyday usage:
| Metric | BerryDB Desktop | Electron Clients | Proprietary Native |
|---|---|---|---|
| Idle Memory (RAM) | ~45 MB | 700 MB – 1.2 GB | ~60 MB |
| Cold Startup Time | < 200 ms | 4 – 8 seconds | ~300 ms |
| Scrolling Performance | 120 FPS (ProMotion) | 30 – 60 FPS (DOM lag) | 120 FPS |
| Free Tier Restrictions | None (Unlimited) | Mixed | 2 Tabs / 2 Workspaces |
| License | Apache 2.0 (Open Source) | Open / Freemium | Closed Source Proprietary |
🛠️ Deep Dive: The Engineering Decisions
1. Skipping Electron for Pure AppKit & Swift
Electron is incredible for cross-platform velocity. But for a mission-critical utility that lives in your dock all day, bundling an entire Chromium browser and Node runtime per app comes with steep penalties:
- Garbage Collection Pressure: Rendering 100 columns × 50,000 rows in HTML/CSS strains browser GC engines.
- Non-Native UX: Keyboard navigation, trackpad momentum scrolling, and macOS menu bars rarely feel seamless in web wrappers.
By using pure Swift and Apple's native AppKit, BerryDB boots instantaneously and requires zero web runtimes.
2. Solving Table Rendering: NSTableView Row Virtualization & Binary Streaming
A database client is only as good as its performance when inspecting real-world datasets.
Instead of parsing bulky JSON payloads inside WebViews, BerryDB implements:
- Direct Socket Binary Streaming: Results are streamed directly from database engine sockets into native Swift memory structs.
-
Custom Row Virtualization: Using Apple’s native
NSTableView, only the rows currently visible on your retina display are instantiated in memory.
Whether your query returns 50 rows or 2,000,000 rows, scrolling stays locked at 120 FPS on Apple ProMotion displays with virtually flat memory usage.
3. One Unified Window for SQL, Cache, and NoSQL
In modern full-stack development, a single project rarely uses just one database:
- PostgreSQL / MySQL / SQLite / MSSQL for relational models.
- Redis / Valkey for cache, rate-limiting, and queues.
- MongoDB / DynamoDB for flexible document stores.
- Qdrant / Elasticsearch for vector embeddings and search.
Switching between 3 or 4 separate client applications breaks flow state. BerryDB unifies all of them in a tabbed workspace with consistent shortcuts and native dark/light themes.
4. Privacy-First Local AI SQL Copilot
AI query assistance is genuinely useful for prototyping complex joins and analyzing slow indexes—provided your company's schema never leaves your machine.
Many newer tools pipe your table schemas to third-party cloud APIs. BerryDB takes a strict local-first approach:
- Autocompletion and query explanation run 100% on-device.
- Zero telemetry, zero cloud data transfer.
- SSH private keys and database credentials reside safely in your Mac's Apple Keychain & Secure Enclave.
🚀 Quick Install (macOS Sequoia 15+)
BerryDB is completely free and licensed under Apache 2.0.
Via Homebrew (Easiest):
brew install --cask berry-apps/tap/berrydb
Or download the pre-built DMG:
Head over to the GitHub Releases page and grab the latest .dmg.
🤝 Open Source & Community
BerryDB is an active, open-source project. Whether you want to request a driver, report a bug, or inspect how the Swift AppKit architecture is structured:
- ⭐️ GitHub Repo: https://github.com/berry-apps/berrydb-desktop
- 🌐 Website: https://db.berryhub.app
💬 Discussion
What database client are you currently using on macOS, and what is your biggest pet peeve with it? (RAM usage? Tab restrictions? Sluggish queries?) Let's discuss in the comments below!
Top comments (0)