APIs and integrations

5 min read

BFF: Why Mobile and Web Sometimes Need Different APIs

One API for every client looks simpler. But mobile, web, and partner interfaces often evolve differently. Backend for Frontend lets each channel adapt the server side to its own needs — when that freedom is worth another component.

At the beginning, one backend often serves everything: the website, the mobile app, and sometimes an internal interface. That works while all clients need roughly the same data and evolve at roughly the same pace.

The problem appears later. Mobile wants fewer network calls, web wants richer data for larger screens, and internal tools need a different set of operations. One universal API gradually becomes a compromise for everyone.

What problem are we solving?

BFF — Backend for Frontend — adds a dedicated server layer for a specific client interface. Mobile calls its BFF, web calls another one, while the same internal services may remain behind both.

The BFF aggregates data, reshapes it, combines several internal calls, and returns exactly what that client needs.

What does the business gain?

The main business benefit is that channels can evolve more independently.

If the mobile team wants to change a screen or launch a feature, it is less likely to wait for a shared API change that affects web and other consumers. That reduces coordination and can shorten product delivery time.

There is another effect: each channel can be optimized for its real constraints. Mobile may reduce network calls, web may receive richer datasets, and a partner interface may keep a stable contract of its own.

BFF therefore makes sense not because it is fashionable, but when the cost of coordination between channels has become visible to the business.

What does the team gain?

The frontend team gets a server layer closer to its product needs. It depends less on a universal backend contract and can aggregate internal services for the specific interface.

But the BFF should not become a hidden home for business logic. Otherwise the same rules get duplicated across mobile and web BFFs and start drifting apart.

What does the customer gain?

The customer gets an interface that can respond faster and fit the actual device or channel better.

Users never see the BFF. They see that a screen loads with one request instead of five, the mobile app behaves better on unstable networks, and new capabilities arrive faster.

What do we pay for it?

The price is more services to deploy, test, monitor, and maintain.

There is a duplication risk: two BFFs can implement similar aggregation differently. Another risk is coupling server code too tightly to the current UI, so every interface change starts requiring a backend release.

The organization also needs clear ownership: does the frontend team own the BFF, a platform team, or a shared backend team?

When do you not need BFF?

If there are few clients, their needs are similar, and the shared API is not slowing product development, separate BFFs only add code.

Sometimes a few convenient endpoints or a GraphQL layer are enough without creating a dedicated backend for every channel.

What should we ask before deciding?

In the end

BFF is a way to accept that different client channels may have different needs and different rates of change.

Its business value appears when channel independence speeds product development more than the extra layer increases engineering and operating cost.