[Tip] Actions with rate limits: Take Screenshot, Set Wallpaper, Send Message, Show Notification

You can find WFActions.plist from /System/​Library/​PrivateFrameworks/​WorkflowKit.framework/ on macOS and iOS, which contains useful info on some of the native actions. The following actions have the RateLimit field:

  • Take Screenshot
    RateLimit: {Delay: 3, Threshold: 1, Timeout: 20}
  • Set Wallpaper
    RateLimit: {Delay: 3, Threshold: 1, Timeout: 20}
  • Send Message
    RateLimit: {Delay: 3, Threshold: 4, Timeout: 30}
  • Show Notification
    RateLimit: {Delay: 2, Threshold: 30, Timeout: 30}

After some experiments, I think I figured out what each of them means:

  • If Timeout is not active, the action executes immediately. Then Timeout activates and counter increments.
  • If Timeout is active and counter ≤ Threshold, the action executes immediately. Timeout restarts and counter increments.
  • If Timeout is active and counter > Threshold, the action takes Delay seconds to execute. Timeout restarts and counter increments.
  • Counter resets to 0 after Timeout seconds without executing the action.
  • Timeout and counter apply globally. For example, if shortcut A takes a screenshot and finishes, shortcut B will get a 3-second delay when taking a new screenshot within 30 seconds.

Note: WFActions.plist is no longer available starting iOS 18.


Previous Tips

2 Likes