Use Turbo or Turbolinks in new projects?

So there’s a big message on the Turbolinks repo saying that it’s been “superseded” by the Turbo framework:

Please note that Turbolinks is no longer under active development. It has been superseded by a new framework called Turbo, which is part of the Hotwire umbrella.

However, Turbo is still under beta:

Note: Turbo is currently in beta. We’re using it in production with HEY, but expect that significant changes might be made in response to early feedback :v::heart:

This seems odd to me - something shouldn’t be “superseded” by something else if that thing is not production-ready yet.

When starting a new project, which of these should be considered “stable”? Should I go with Turbolinks as a stable release or Turbo as the “next thing” despite it being a beta?

Turbolinks is battle tested so you will have fewer issues with it. Turbo is, as you mentioned, in beta so more issues for you. If you are not planning to use any of the special features of turbo (websockets, frames) then I’d go with turbolinks. Migration from turbolinks to turbo should be simple, just make sure you have tests.

This is one of those things where you might want to go to where the tech will be once you’re finished. Turbo is in beta now, but will it be once you’ve got to v1 of your project? We’re already on beta 3. Issues are being fixed actively, the GitHub repo is very active, lots of new people are coming on board. We’re getting close every day to a stable release. I don’t know anything about your project but I’d guess Turbo will be stable before you’re ready to show it to the world.

1 Like

@dan if I had any idea when the stable release was planned I could make a more informed decision. I’m actually trying to build a reference app for new microservices, so I’d really like to use Turbo if I can be relatively sure the API isn’t going to change before release. Can I get some reassurances on that?

It’s not up to me, but I don’t think you shouldn’t have to wait that long. In the meantime, I’d be very surprised if any of the HTML interface (data-turbo-frame and what have you) changed. The core ideas are solid.

A few things have changed through the various betas. But these seem to be mostly bugs being fixed, edge cases addressed, not sweeping changes. The MIME type for Turbo streams did change, but we have settled on a sweet new one, so you won’t see anything like that again.

Also worth noting is that the starting point of Turbo — at least Turbo Drive — was Turbolinks. Some of the source has not even really changed.

OK, thanks! I’m going to go with Turbo for now. Now on to whether I want to risk Webpacker 6… :slight_smile:

1 Like