Skip to content
Talk to our solutions team

BFF

The BFF block gives a front end one endpoint per screen. Instead of a page making six calls across IAM, the Data block and Content and assembling the result in the browser, it makes one call to a BFF endpoint that does the stitching server-side.

A rich screen usually needs data from several services. Doing that assembly in the client has three costs that compound:

  • Latency multiplies on bad networks. Six sequential round trips on mobile is a visible delay; one is not.
  • The front end learns your backend topology. Every client, web, iOS, Android, encodes which services exist and how they relate, so a backend change becomes a coordinated release across all of them.
  • Over-fetching becomes the default. Clients pull whole entities to display three fields, because narrowing the response means another backend change.

A BFF endpoint is defined declaratively: which calls to make, how to combine them, what shape to return.

GET /list BFF endpoints defined for this product
GET /health liveness
GET /ready readiness

Product endpoints are declared per tenant and served from the same surface.

The pattern’s original form is one BFF per client type. The web app’s needs differ from the mobile app’s, and forcing both through one endpoint reproduces the over-fetching you were trying to remove.

The failure mode to avoid is the opposite: a single “BFF” that accumulates every screen’s endpoint until it is a second application with its own business logic. Keep the stitching declarative. When an endpoint starts needing real branching, that logic belongs in a service, usually the Data or a workflow.

  • API Stitching: composing several backend calls into one response