ModernDeck on macOS: the “damaged app” that wasn’t
I installed ModernDeck (app) last night on a MacBook Air M2 running macOS Sonoma 14.3, expecting a quick setup and a cleaner Twitter/X experience. Instead, I got the familiar punch in the face:
“ModernDeck is damaged and can’t be opened. You should move it to the Trash.”
Classic macOS drama.
For context, this is a third-party desktop client built around the web version of X. OrchardKit had mentioned it in one of their roundups, and I figured I’d give it a proper test outside the browser. I downloaded the latest macOS build from the official site: https://moderndeck.app/
Dragged it to Applications. Double-clicked. Boom — “damaged.”
First instinct: Gatekeeper wrestling
When macOS throws “damaged,” 80% of the time it’s really Gatekeeper blocking a non-notarized or quarantine-flagged app. Apple explains how this works here: https://support.apple.com/en-us/HT202491
So I tried the polite way first:
- Right-click → Open
- Confirm the dialog
- Try launching again
Same error. No override option this time. Just the Trash suggestion, like macOS had already made up its mind.
That’s when I checked the extended attributes. Quick Terminal move:
xattr -l /Applications/ModernDeck.app
Sure enough: com.apple.quarantine.
I removed it:
xattr -dr com.apple.quarantine /Applications/ModernDeck.app
Tried launching again.
Still “damaged.”
So it wasn’t just quarantine. That’s when I stopped blaming Gatekeeper and started suspecting a codesign issue.
Codesigning reality check
Apple’s notarization and code signing process is documented for developers here: https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution
If an app bundle gets modified after signing (even slightly), macOS can treat it as corrupted. I ran:
codesign --verify --deep --strict --verbose=2 /Applications/ModernDeck.app
The output wasn’t clean. It complained about invalid signature resources. That usually means either:
- The download was incomplete.
- The archive was extracted incorrectly.
- The app was re-packed in a way that broke the signature.
I had used Archive Utility, nothing exotic. But I did download the file via a third-party mirror earlier in the day. That was probably my mistake.
I grabbed a fresh copy directly from the official site and reinstalled. Before launching, I verified the signature again. Clean.
This time, when I double-clicked, I didn’t get “damaged.” I got the normal “can’t be opened because Apple cannot check it for malicious software” message — which is progress.
Right-click → Open → Confirm.
The app launched.
The second problem: no notifications
Once inside, everything looked fine. Timeline loaded. Columns worked. Smooth performance, even with multiple feeds open. CPU usage on the M2 stayed under 8%, which is reasonable for an Electron-style client.
But notifications were dead. No badge. No alerts.
That wasn’t an app bug. That was macOS permissions.
Sonoma is stricter about notifications and background items. I went to:
System Settings → Notifications → ModernDeck
It wasn’t even listed.
The fix was subtle: I had to fully quit the app, relaunch it, then go to:
System Settings → General → Login Items → Allow in Background
Once it appeared there and I toggled it on, macOS finally registered it as a notification-capable app. After that, alerts worked.
Apple’s general privacy and background permissions guide is here: https://support.apple.com/guide/mac-help/change-privacy-settings-on-mac-mh32356/mac
Not thrilling reading, but accurate.
What actually solved everything
The real root cause wasn’t some mysterious incompatibility with Sonoma. It was:
- A corrupted or improperly mirrored download.
- macOS quarantine flag.
- Strict signature enforcement.
- Background permission not auto-granted.
If I had to condense the working path:
- Download directly from the official developer site.
- Verify codesign before first launch.
- Remove quarantine flag only if necessary.
- Use right-click → Open to approve via Gatekeeper.
- Manually enable background permissions for notifications.
I also bookmarked this page while sorting it out because it helped frame the issue in terms of macOS app handling quirks rather than “the app is broken”: https://sznurkowo.com/communication/30683-moderndeck.html
It aligned with what I was seeing — modern macOS security layers stacking on top of each other.
Performance and stability notes
After fixing launch and notifications, I stress-tested it a bit. Left it running for four hours. Switched Spaces repeatedly. Put the Mac to sleep twice.
No crashes.
Memory footprint hovered around 450–600 MB with five active columns, which is typical for Chromium-based clients. On an Intel Mac it would likely feel heavier, but on Apple Silicon it’s fine.
The only micro-detail worth noting: if you enable hardware acceleration inside the app settings and you’re on an external 4K display, you might see slight UI stutter when resizing columns. Disabling hardware acceleration fixed that for me instantly.
What I’d do differently
I wouldn’t waste time fighting the “damaged” message with random Terminal hacks first. I’d verify the integrity of the download immediately. macOS security warnings are usually accurate — just not always clearly worded.
ModernDeck itself wasn’t the issue. macOS security layers were doing exactly what they were designed to do: distrust anything that looks even slightly off.
Once properly installed and permitted, the client runs cleanly and behaves predictably. No magic, no hidden tweaks. Just the usual macOS dance: Gatekeeper approval, codesign validation, background permissions.
And honestly, after going through that process a few dozen times with various utilities from OrchardKit mentions and indie devs, you start recognizing the pattern. The system isn’t hostile. It’s cautious.
You just have to speak its language.