Thanks to your feedback, as well as to the hard work from our coding Oompa Loompas, we are glad to announce Caravel is not in beta anymore 😃🎉!!! We just released the 1.0.0 version of our lovely iOS library.

Here is an exhaustive list of the new features:

  • Multithreading support: register on background or main threads
  • Caravel is faster than before (as fast as a supersonic dragonfly)
  • Generic support when posting events from iOS
  • Fixes a bunch of potential bugs from the previous versions

Thank you again for your support! You can find below a walkthrough for migrating from the beta to the latest release with ease. And don’t worry, it’s super smooth. Also, if this library is completely unknown for you, feel free to read my previous blog post.

Pssssst. I was told an Android alter ego is on the way 😄 Stay in touch!

Migrate from 0.* to 1.*

Initialize a bus

We slightly changed the way you instantiate a bus. From now on, you must match this pattern:

class MyController: BaseController {
    override func viewDidLoad() {

        Caravel.getDefault(self, webView: self.webView, whenReady: { bus in

You must provide a subscriber first (usually the wrapping controller). Also, whenReady is not available anymore as a function. It is an argument of the getDefault() and get() functions.

Pay attention to threading

In this version, actions such as whenReady or register are run on a background thread by default. If you need the main looper, consider using whenReadyOnMain and registerOnMain instead.

Post an event

You do not have to specify the type of argument you would like to pass anymore! Just change every label to data.

Save a bus

If you would like to save an instance of your bus (e.g. for a later usage), the bus object from whenReady is not a Caravel object but an EventBus one, from now on.