Skip to content

Glossary

LaunchServices

The macOS framework that answers 'which app handles this?' — bundle ID lookups, URL scheme handlers, file-type associations. The first stop on every app launch.

LaunchServices is the macOS framework that owns the "which app handles this?" decision. It maintains a per-user database mapping:

  • Bundle IDs → app bundle locations.
  • URL schemes (mailto:, https:, custom schemes) → handler apps.
  • File UTIs (public.html, com.adobe.pdf) → handler apps.
  • Document types per app.

LaunchServices is exposed via the LSOpenApplicationAtURL family of APIs and the older LaunchServices.framework. It runs as a userspace daemon (lsd) — your Finder calls into lsd over XPC; lsd then asks launchd to spawn the app.

The database is rebuilt by lsregister, which scans known app locations on disk (the Applications folder, ~/Applications, /System/Library/CoreServices) and updates the bundle ID → location index. If you see "I dragged an app to /Applications but it doesn't show up", the answer is usually "LaunchServices hasn't rescanned" — lsregister -kill -r -domain local -domain system -domain user forces a rebuild.

LaunchServices is the first actor in the app launch flow — every "open with" decision, every URL click, every double-click in Finder goes through it.

See also: launchd, the app launch article.