Timelane

Visually profile your asynchronous code

  • Download from GitHub Fork

    Follow @icanzilb for updates about Timelane.

What is Timelane?

Timelane is a free app that bundles a custom Xcode Instrument and the frameworks to enable your code to talk to the Timelane instrument. Once you start profiling your app with Timelane you will be able to see your asynchronous tasks plotted visually on an interactive timeline you can inspect to heart's content.

Free and extensible

The app and related packages are free of charge. Timelane integrates with:

  • Combine
  • RxSwift
  • ReactiveSwift
  • CombineX
  • Operation

Additionally, anyone can use the Timelane core to enable their own asynchronous code to send profiling data to the Timelane Instrument.

Open source

Drill down into the code to explore how it works. If you find a bug or have a suggestion, do say so.

If you follow suit to others in the community and make a separate package to integrate Timelane with some framework or make a new instrument based on TimelaneCore, please get in touch. Made in the open by Marin Todorov.

Time saver

Timelane is specifically designed to address profiling asynchronous concurrent code. Visualizing asynchronous operations gives you a bird's view over your subscriptions.

You can also save your debugging session on disk and load it up at a later time for additional inspection or share it with colleagues.

Debugging Combine code (1:14m)

Pair debugging remotely (0:45m)

Features

Get Started

Adding Timelane

Use Swift Package Manager to add the Timelane library to use with Combine code:


.package(url: "https://github.com/icanzilb/TimelaneCombine", from: "1.0.0")

Profiling code

Use the lane("name") operator to send the subscription data to the Timelane Instrument:


import TimelaneCombine

yourPublisher
  .filter { ... }
  .lane("My Subscription")
  .map { ... }
  .sink {
    ... 
  }
                    

Profile the project in Instruments and record the live data:

Packages and Documentation

These are all the packages that you use in your code to talk to the Timelane Instrument. Pick your flavor:

Main

TimelaneCombine RxTimelane TimelaneCore

Community

ReactiveTimelane TimelaneCombineX

Experimental

OperationTimelane

Troubleshooting

Apple, the Apple logo, and Instruments are trademarks of Apple Inc., registered in the U.S. and other countries. This app is not made by, affiliated with or endorsed by Apple.