Today I learned that status bar menus on macOS use a different run loop mode (.commonModes; https://source.ind.ie/better/app/blob/2018.2/Better/Better%20Mac/StatusAreaController.swift#L205) and so if you try to update a custom view via a timer on the default mode, your view won’t update. (Also, there’s a three-year-old bug with vibrant views and CoreAnimation that means that you apparently can’t use the latter in a system menu without artifacts, which is why I’m frame-animating a spinner via an NSImageView instead of using NSProgressIndicator).