Zum Hauptinhalt springen
Echtzeit-Radar & Feeds
Alle RSS Feeds ➔
👥 Community & Social
Windows Tipps & SecurityGrafikkarte vor Überhitzung schützen: So geht’s(25.09.2026 um 08:00 Uhr)
••••••••••
Windows Tipps & SecurityGrafikkarte vor Überhitzung schützen: So geht’s(25.09.2026 um 08:00 Uhr)
••••••••••
Intelligence View
⚡ tsecurity.de Intelligence

Why I built a 15MB SwiftUI menu bar app instead of reaching for Electron

Every developer dashboard I've used is either a browser tab I forget about or an Electron app that eats 200MB of RAM to show me three numbers. I wanted something different. Something that sits quietly in the menu bar, shows me what I…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

Every developer dashboard I've used is either a browser tab I forget about or an Electron app that eats 200MB of RAM to show me three numbers.



I wanted something different. Something that sits quietly in the menu bar, shows me what I need, and gets out of the way. So I built Pulse.






The Problem



My daily workflow involves juggling multiple AI coding tools — Claude Code, Codex, OpenRouter — each with their own usage dashboard in a separate browser tab. On top of that, I run several local services (Postgres, Redis, a couple of dev servers) that occasionally die without telling anyone.



The checking ritual looked like this every morning:




  1. Open Claude Code dashboard — check remaining quota

  2. Open Codex usage page — check remaining quota

  3. Open OpenRouter balance — check remaining credits

  4. Run ps aux | grep postgres — is it alive?

  5. Hit localhost:6379 — is Redis responding?



Five context switches before I've written a single line of code. And if something died overnight, I'd only find out when a build failed or an API call timed out.






Why Not Electron?



The obvious path would have been Electron. Faster to ship, cross-platform out of the box, massive ecosystem. I've built Electron apps before and the DX is genuinely good.



But this app lives in the menu bar. It runs all day, every day. For something with that kind of residency, the numbers matter:











































Electron SwiftUI (Pulse)
Binary size ~150-200MB 15MB
Idle RAM ~80-120MB ~12MB
Startup time 2-4 seconds < 1 second
Native notifications Via bridge Native
Dark mode CSS hacks Automatic
Menu bar integration Limited First-class


For a full application with complex UI, Electron makes sense. For a status glance that should feel like part of the OS, native wins.






What Pulse Actually Does



Click the menu bar icon and you see two things:



Service status — green/red indicators for each local service Pulse monitors. If Postgres went down at 3am, you see it immediately when you open your laptop. No more discovering dead services through cascading errors.



AI quota — current usage across Claude Code, Codex, and OpenRouter in one view. When you're burning through tokens faster than usual, you catch it early instead of hitting a rate limit mid-session.



That's it. No charts, no historical data, no analytics dashboard. Just the current state of things you need running.






The Tradeoffs



Honesty time:





  • Mac-only. No cross-platform story. If you're on Linux or Windows, this doesn't help you. For a menu bar utility, I think that's the right call — menu bar apps are a Mac pattern.


  • SwiftUI is still maturing. Some things that would take 5 minutes in React took an hour of fighting with SwiftUI's layout system. The ecosystem is smaller and Stack Overflow has fewer answers.


  • No web technologies. Can't just npm install a charting library. Everything is built with native frameworks, which means more upfront work for each new feature.


  • Polling, not pushing. Pulse checks service status on an interval rather than receiving push notifications. Good enough for the use case, but not real-time.



Would I make the same choice again? Yes. The result feels right — fast, small, quiet. The kind of utility that disappears into your workflow.






What I Learned



Building a small native app after years of web development was humbling. Things I took for granted (hot reload, flexbox, npm) weren't there. But the constraints forced better decisions:




  • Fewer dependencies meant fewer things to break

  • Native APIs meant less glue code

  • Small binary meant fast iteration on the actual product



If you're considering building a small Mac utility, SwiftUI is worth the learning curve. The menu bar API is straightforward, the app lifecycle is simple, and the result feels like it belongs on the platform.



Repo: github.com/silas-maven/pulse

1. Sofort-Triage & Abwehrmaßnahmen

SOC Incident Playbook: Remote Code Execution (RCE) Defense
Syntax validiert (0 Fehler)
title: Detect Exploitation - Why I built a 15MB SwiftUI menu bar app instead of reaching for Electron
id: ca9f46e7-45db-48f4-89f5-4a2a38d95434
status: experimental
description: Automatisch generierte SIEM-Erkennungsregel basierend auf CTI Intelligence
references:
  - https://tsecurity.de/
author: iShareStuff CTI Automated Detection Engine
date: 2026-09-25
logsource:
  category: network_connection
  product: any
detection:
  selection:
      CommandLine|contains:
        - 'exploit'
  condition: selection
falsepositives:
  - Legitime administrative Zugriffe oder Penetrationstests
level: high
tags:
  - attack.initial_access
Syntax validiert (0 Fehler)
rule CTI_Threat_Indicator {
    meta:
        author = "iShareStuff CTI Automated Detection Engine"
        date = "2026-09-25"
        description = "YARA Signature for "
    strings:
        $str = "Why I built a 15MB SwiftUI men" ascii wide
    condition:
        any of them
}
Syntax validiert (0 Fehler)
index=security sourcetype IN ("cisco:asa", "pan:traffic", "zeek_conn", "suricata", "WinEventLog:Security")
("Why I built a 15MB SwiftUI menu bar app ")
| stats count earliest(_time) as first_seen latest(_time) as last_seen by src_ip, dest_ip, dest_host, signature
| eval first_seen=strftime(first_seen, "%Y-%m-%d %H:%M:%S"), last_seen=strftime(last_seen, "%Y-%m-%d %H:%M:%S")
| sort - count
Syntax validiert (0 Fehler)
message: "*Why I built a 15MB SwiftUI menu bar app *"
Syntax validiert (0 Fehler)
CommonSecurityLog
| where Message has "Why I built a 15MB SwiftUI menu bar app "
| summarize EventCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by SourceIP, DestinationIP, DestinationPort, Activity
| extend DetectionRule = "iShareStuff-CTI-Compiled"
| sort by EventCount desc

2. Cyber Threat Intelligence & Forensik

CTI Threat Relationship Graph3 Knoten / 2 Relationen
CVE / Incident Software MITRE ATT&CK CWE Weakness IoC
🎯
MITRE ATT&CK Matrix Navigator 14 Taktiken
Reconnaissance
-
Resource Development
-
Initial Access
Execution
Persistence
-
Privilege Escalation
Defense Evasion
Credential Access
-
Discovery
-
Lateral Movement
-
Collection
-
Command and Control
Exfiltration
-
Impact
tsecurity.de Cognitive Threat RAG
Fokus-Vektor:

Kognitive Analyse für identifizierte Bedrohung: Erhöhte Bedrohungslage im Bereich Why I built a 15MB SwiftUI menu bar app .... Basierend auf 368k Vektor-Korrelationen werden sofortige Isolationsmaßnahmen für betroffene Endpunkte empfohlen.

🛡️ Angriffsfläche & Exposure

Netzwerk/Remote-Zugriff ohne Vorauthentifizierung möglich.

⚡ Empfohlene Sofortmaßnahmen
  • 1. Perimeter-Inspektion: Relevante Portfreigaben und exponierte Endpunkte unverzüglich scannen.
  • 2. Patch-Applikation: Hersteller-Hotfix einspielen oder betroffene Daemons in isolierte DMZ-Segmente überführen.
  • 3. Telemetrie & EDR-Alerts: Prozessaufrufe und Child-Processes auf anomale Shell-Spawns überwachen.
🔗 Semantisch verwandte Zero-Days MariaDB 11.7 VEC
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Why I built a 15MB SwiftUI menu bar app instead of reaching for Electron

Thematisch verwandte Begriffe: built, 15MB, SwiftUI, menu · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-97898 | Insecure Direct Object Reference / missing object-level authorization in…
Advisory →
tsecurity.de Icon
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag