Why We Switched to the Offline-Focused Bruno

Every API developer knows that to build an API properly you need a reliable client for testing and interacting with the API. Ideally this tool should be free, it should store endpoint collections and share them easily with your team, and it should be fast and secure.

Over the years we have been using Postman as our go-to API tester, but recently we have considered shifting to Bruno, a lightweight alternative. We are not the first to consider this change. There is a general trend in the PHP community toward local-first, Git-native developer tools.

Comparing Postman to Bruno

Architecture

Primarily, we use collections to save our API endpoints and then share them among our developers to streamline testing. Postman has recently decided to only allow one user account in their free plan. In some cases, it might be enough, but this is one reason why Postman is less reliable right now.

Bruno comes with a different approach: a fully-offline experience based on shared .bru files. Being that it’s offline means that there is no restriction on the number of developers using Bruno’s files, so it’s an advantage for the way we do things.

Version Control

Postman focuses on storing collections and handling version control in the cloud, forcing developers to always be online. You can still export/import collections via their UI.

Bruno’s .bru files can be saved in the Git repository and easily accessed by all members of the dev team. Version control for Bruno files is handled entirely via Git, just like for any other file on your project.

Feature Scope

A major difference between Postman and Bruno is the feature scope. Where Postman offers a complete platform for the API lifecycle, Bruno focuses mainly on interacting with the API, writing simple tests, and building local collections.

Postman is the definite winner in this department, if you also use features like mocking, documentation, and CI/CD integration. Given that we use different tool for these additional features, Postman doesn’t really benefit us compared to Bruno.

Performance

Bruno is the clear winner here, given that it uses much less RAM and is generally faster.

Postman needs to regularly synchronize with the cloud and store its advanced features in the RAM, which can introduce delays in some cases.

Security

Postman offers Single Sign-On (SSO) and Role-Based Access Control (RBAC), but we find these not to be useful for our workflow.

Bruno’s local files do offer a distinct advantage in that these files never leave your dev environment. It can be argued that it’s more secure this way, especially since we try to not share our client’s files with any online tool if we can help it.

Working with Bruno Collections

One of the most important functions that Postman has limited right now is the ability to share collection with dev team made up of multiple members. Bruno offers several options, like saving a collection to a Git, to a .zip file or a single .yaml file. By far the best option is sharing via Git which allows a single or multiple developers to quickly sync between multiple work locations, to track change history, and to easily publish their work for public consumption.

We intend to create a separate Git repository within each project for the Bruno files to streamline the sharing process. For each new proejct, we normally allocate multiple developers from the get-to: one for frontend, another for backend. But the teams often grow as the project becomes more complex. Developers may be reallocated, so being able to swiftly onboard a new member to the team is vital.

Comparison Conclusion

Postman is currently a better fit for larger teams that are willing to allocate a budget for their more feature-rich platform. Bruno stores collections in Git, so everything is offline, and thus as far as we are concerned it’s more secure, while also being generally faster.

Alternative API clients

Bruno is only one of the alternatives to Postman. Let’s see some of the other API clients available on the market right now:

  • Hoppscotch runs in the browser or as a PWA (Progressive Web App that offers a native app-like experience).
  • Insomnia with its clear UI and large plugin ecosystem.
  • HTTPie focuses on terminal-based workflows.
  • Thunder Client which is built into Visual Studio Code.
  • Apidog covers the whole API lifecycle.
  • Yaak with its minimal and fast desktop client.

As far as we are concerned, any one of them can get the job done. The decision comes down to choosing a simple, reliable tool we can use for the forseeable future.

Bruno for Dotkernel

At the moment, Bruno seems to be the best match for us. It offers similar functionality to Postman, with the added benefits of:

  • Allowing us to work completely offline.
  • Saving the enpoint collection to our GitHub accounts.

The similar functionality is to be expected, since it’s an API client, first and foremost. The offline feature is perhaps what weighed the most in our decision in favor of Bruno.

Tool Migration

Most of us have only worked with Postman, so switching to another tool can impact efficiency, at least at first. In general, Tool Migration can have an emotional impact on developers who use a tool, because they have to learn the new tool’s ins and outs before getting back to the real work.

Given Bruno’s straightforward approach and reasonable learning curve, this should be mitigated easily within our company. In fact, we see the switch as an expansion of our expertise. We thus prevent getting tied up to one tool, something similar to vendor lock-in for code.

How Long Will Bruno Last?

We fully expect Bruno to eventually restrict developers with paid plans, just like Postman did, but we’ll cross that bridge when we get to it. Hopefully, we won’t have to develop our own API client (fingers crossed). For now, Bruno becomes our de facto API client and will encourage our whole team to adopt it as soon as possible.

Additional Resources

Bruno homepage


Looking for PHP, Laminas or Mezzio Support?

As part of the Laminas Commercial Vendor Program, Apidemia offers expert technical support and services for:

  • Migration from Laminas MVC to Mezzio or Dotkernel Headless Platform.
  • Migration from legacy Laminas API Tools (formerly Apigility) to Dotkernel API
  • Mezzio and Laminas Consulting and Technical Audit
  • Modernising Legacy Applications
  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>