Monday, October 19, 2026

more about feature flags in macOS

it's been a minute. yes, i'm alive. i've just been neglecting this site (as i do with many responsibilities. oops!)

i wanted to touch on feature flags again. i've unearthed a few developments about them since my last post about them in june 2025, and i'll give a brief rundown.

the environment variable

starting around circa macOS 26, apple introduced a simpler method to control feature flags. this does not require reboots, and can be applied to apps individually. it is a simple environment variable. two, actually. FEATUREFLAGS_ENABLED and FEATUREFLAGS_DISABLED. these are simply applied at runtime via a shell. for example:
FEATUREFLAGS_DISABLED=SwiftUI/Solarium open /System/Applications/Music.app
this command disables solarium for the music app when launched. it does not affect other apps (though it may affect processes spawned from it.)
 
you can chain up multiple by separating them with a colon:
FEATUREFLAGS_DISABLED=SwiftUI/Solarium:AppKit/Glade open /System/Applications/Music.app
now obviously you cannot set glade anymore, but this is an example. beware that if you have one flag in FEATUREFLAGS_ENABLED and FEATUREFLAGS_DISABLED at the same time, you just receive a trace trap on launch.

the calistoga 

"what is calistoga?" you may ask. calistoga is the name for ANOTHER redesign of liquid glass, as seen in macOS/iOS/tvOS 27. previously, you could disable it by setting SwiftUI/Calistoga to false. macOS 27 beta 3 stripped this ability. perhaps because of my previous featureflag research (lol). it may still be possible to revert, but i'd need to look into the headers of SwiftUI and AppKit themselves, which i haven't gotten around to for macOS 27.