Swiftpack.co - Package - lyft/Kronos

Kronos is an NTP client library written in Swift. It supports sub-seconds precision and provides an stable monotonic clock that won't be affected by clock changes.

Example app

This is an example app that displays the monotonic Clock.now on the left and the system clock (initially out of date) on the right.



Sync clock using a pool of NTP servers

Calling Clock.sync will fire a bunch of NTP requests to up to 5 of the servers on the given NTP pool (default is time.apple.com). As soon as we get the first response, the given closure is called but the Clock will keep trying to get a more accurate response.

Clock.sync { date, offset in
    // This is the first sync (note that this is the fastest but not the
    // most accurate run

Get an NTP sync'ed date

Clock.now is a monotonic NSDate that won't be affected by clock changes.

NSTimer.scheduledTimerWithTimeInterval(1.0, target: self,
                                       selector: #selector(Example.tick),
                                       userInfo: nil, repeats: true)

@objc func tick() {
    print(Clock.now) // Note that this clock will get more accurate as
                     // more NTP servers respond.


Embedded frameworks require a minimum deployment target of iOS 8 or OS X Mavericks (10.9).


CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

CocoaPods 0.39.0+ is required to build Kronos.

To integrate Kronos into your Xcode project using CocoaPods, specify it in your Podfile:

platform :ios, '8.0'

pod 'Kronos'

Then, run the following command:

$ pod install

Swift package manager (experimental)

Swift PM is a tool for managing distribution of source code.

To integrate Kronos into your project using Swift PM use:

$ export SWIFT_EXEC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc
$ swift build


Carthage is a decentralized dependency manager for Cocoa. You can install it by following the instructions here.

To integrate Kronos into your project using Carthage, specify it in your Cartfile:

github "lyft/Kronos"

Then, run the following command:

$ carthage update

Looking for Kronos for your Android application? Check out Kronos for Android


Kronos is maintained by Lyft and released under the Apache 2.0 license. See LICENSE for details.


Stars: 330
Help us keep the lights on


Used By

Total: 1


4.0.0 - Mar 28, 2019

  • Update for Swift 5

3.0.1 - Dec 10, 2018


  • Don't restore timestamps from the cache after a reboot
  • Expose sync age through Clock.annotatedNow


  • Update for Swift 4.2


  • Add tvOS support with CocoaPods


  • Update for Swift 4.1


  • Use app groups for UserDefaults if sharing time with an extension is desirable.

1.0.1 - Oct 19, 2017


  • Restore previous time delta after reboot

1.0.0 - Sep 19, 2017


  • Swift 4.0 support
  • Use UserDefaults to cache the previous stable time

0.2.3 - Jan 20, 2017


  • Handle SIGPIPE errors to prevent crash on UDP sockets - Globally this time.