SkyLight
Private frameworks are frameworks which Apple does not intend for third-parties to use. Private frameworks are not officially documented or supported, and can be more unstable than public frameworks between firmware updates, but many of the interesting features of Apple platforms are in the private frameworks. They are very likely to change between releases, even minor ones, so make sure you check which version of iOS, macOS, etc. your code is running on before using private API.
Attempting to use private frameworks in an App Store app will result in rejection of that application.
SkyLight has no headers, so there is no "API" here in the usual sense — only the symbol names Apple's linker stub publishes, plus what can be observed by calling them. Entries that were actually called on a real machine are marked probed; the rest are listed with whatever the symbol table says and nothing more. Signatures shown are inferred, and a wrong guess is a crash rather than a compile error.
Prefer dlopen/dlsym over linking. If you link against SkyLight directly and Apple removes a symbol, your process fails to launch; with dlsym you get a nil you can handle. Most calls take a connection id from SLSMainConnectionID as their first argument.
Many of these calls have a second, older name: 778 of them are also exported by the public CoreGraphics framework under the CGS prefix (SLSGetMenuBarAutohideEnabled is CGSGetMenuBarAutohideEnabled). Existing code and most community documentation use the CGS names, so both are shown.
Two probe programs live in the repository:
tools/probe_skylight.swift— read-only. It only queries state, so it runs on the maintainer's machine, and it is what the probed markers above are based on.tools/probe_skylight_rw.swift— read/write/restore. Each check reads a setting, changes it, verifies the change, puts the original back and verifies the restore. It never runs on the maintainer's machine: it requiresSKYLIGHT_RW_PROBES=1, a--yesflag, and it refuses outright when it recognises that machine by a hash of its hardware UUID. Run it on a spare Mac withSKYLIGHT_RW_PROBES=1 xcrun swift tools/probe_skylight_rw.swift --yes, and expect the menu bar to blink while it works.
Topics
Where this comes from
| install name | /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight |
| SDK stub | System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight.tbd — the authoritative symbol list |
| binary | read from the dyld shared cache (arm64e); function/data kinds come from its function-starts table |
| version | current 600, compatibility 64 |
| symbols | 2305 exported — 1876 functions, 421 data/constants, 137 Objective-C classes, 192 Swift |
| legacy names | 778 of these are also exported by CoreGraphics under the CGS prefix — the names most existing code uses |
| built | 2026-09-25 on macOS 26.4.1, SDK 26.4 |