Unsigned macOS app installed in /Applications does not appear in Launchpad

Hello,

I have a macOS app built with Flutter’s macOS target (native Xcode project). The app is unsigned (no Developer ID code signing / notarization). The .app bundle looks valid:

CFBundlePackageType = APPL

Unique CFBundleIdentifier

No LSUIElement or LSBackgroundOnly

Executable exists and is runnable

Placed at /Applications/MyApp.app (top-level), runs fine from Finder

However, it does not show up in Launchpad.

What I tried:

Remove quarantine: xattr -dr com.apple.quarantine "/Applications/MyApp.app"

Force Launch Services registration: /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f "/Applications/MyApp.app"

Rebuild LS caches: /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user

Reset Launchpad DB and restart Dock: defaults write com.apple.dock ResetLaunchPad -bool true && killall Dock

Verified bundle structure/type: mdls -name kMDItemContentType -name kMDItemKind "/Applications/MyApp.app" → shows com.apple.application-bundle / Application

Questions

Is code signing/notarization required for an app to appear in Launchpad (even if it runs from Finder)?

What additional conditions cause Launchpad to skip an otherwise valid, unsigned .app in /Applications?

Are there deeper Launch Services or Dock database checks I can run to diagnose why this specific app is excluded?

Answered by DTS Engineer in 853685022

It’s better to reply as a reply, rather than in the comments; see Quinn’s Top Ten DevForums Tips for this and other titbits.

Do you know any reason why an app might not appear in Launchpad even though it shows in the Applications folder?

No. But I’ve never had cause to look into this. Creating an app without signing it (or ad hoc signing it) takes you far off the beaten path, and Launchpad is just one of the pitfalls waiting for you there.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Let’s take a step back here: Why are you creating an unsigned macOS app?

There are five ways to sign a macOS app:

  • Completely unsigned — This option is only available on Intel. Unsigned code won’t run on Apple silicon.
  • Ad hoc signed — This is known as Signed to Run Locally in Xcode.
  • Apple Development signed — This is what you should be using for day-to-day development.
  • Apple Distribution signed — This is only suitable for uploading to App Store Connect, for eventual distribution via App Store or TestFlight. See Don’t Run App Store Distribution-Signed Code.
  • Developer ID signed — This is for direct distribution.

Of these, only the last three make any sense when developing an app [1]. That’s because app’s regularly touch system services, like the keychain and any resource protected by System Settings > Privacy & Security, that require the app to have a stable code-signing identity. If you run, say, ad hoc signed code and it touches the keychain, you’ll find yourself being presented with new authorisation alerts every time you run the app.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

[1] Ad hoc signing is a reasonable option for situations like Homebrew, where you’re building Unix-y code for your own internal use.

It’s better to reply as a reply, rather than in the comments; see Quinn’s Top Ten DevForums Tips for this and other titbits.

Do you know any reason why an app might not appear in Launchpad even though it shows in the Applications folder?

No. But I’ve never had cause to look into this. Creating an app without signing it (or ad hoc signing it) takes you far off the beaten path, and Launchpad is just one of the pitfalls waiting for you there.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Unsigned macOS app installed in /Applications does not appear in Launchpad
 
 
Q