Regulate is a lightweight library that brings the following time-based regulation operations for things that can emit values over times (and are not from reactive programming or AsyncSequence).

  • debounce: Outputs elements only after a specified time interval elapses between events
  • throttle: Outputs either the most-recent or first element pushed by a producer in the specified time interval.

Regulate is entirely backed by Swift concurrency and limits the number of created Tasks to the minimum.

Adding Regulate as a Dependency

To use the Regulate library in a SwiftPM project, add the following line to the dependencies in your Package.swift file:

.package(url: ""),

Include "Regulate" as a dependency for your executable target:

.target(name: "<target>", dependencies: ["Regulate"]),

Finally, add import Regulate to your source code.


View Github