A Swift library for scheduling timing tasks with a fluent, intuitive API as a friendly alternative to Timer.
Schedule is a Swift library for scheduling timing tasks using a fluent and intuitive API. It provides a powerful and elegant alternative to native timers like `Timer` and `DispatchSourceTimer`, allowing developers to define interval-based, date-based, and combined schedules with minimal code. It solves the problem of cumbersome and limited timer management in Swift applications.
Swift developers building iOS, macOS, or server-side applications who need robust, flexible scheduling for tasks like periodic updates, reminders, or background operations.
Developers choose Schedule for its expressive API, rich feature set beyond basic timers, and comprehensive task management capabilities, making complex scheduling simple and maintainable.
Schedule timing task in Swift using a fluent API. (A friendly alternative to Timer)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Schedule uses chainable methods like `Plan.after(3.seconds).do { }` that read like natural language, reducing boilerplate and improving code readability compared to native timers.
Supports interval-based, date-based, and combined plans with natural language parsing, such as `Plan.every("one hour and ten minutes")`, offering flexibility beyond basic Timer or DispatchSourceTimer.
Includes TaskCenter for organizing tasks with tags, execution history timeline, and dynamic control like suspend/resume, enabling centralized management of multiple scheduled operations.
Tasks default to RunLoop dispatch without a specified queue, requiring an available RunLoop on the current thread, which can be a limitation in thread-constrained environments similar to Timer.
The parsing feature is simplistic and may not handle complex or ambiguous phrases, potentially leading to incorrect schedules or developer confusion.
Adds an external dependency where native Timer or DispatchSourceTimer might suffice for simple needs, increasing project complexity and potential maintenance issues.