Backend for frontend
API Design

Meaning

Backend for frontend (BFF) is an architectural pattern where each client type (web, mobile, desktop) gets its own dedicated backend service rather than sharing a single generic API. It addresses the pain point of forcing diverse clients with different needs to consume the same API surface, which leads to over-fetching, under-fetching, or excessive client-side aggregation logic. Teams reach for it when multiple client platforms need tailored data shapes, authentication flows, or aggregation strategies that diverge significantly.

Primary Function

API design

Communicative Purpose

Enables client-specific API surfaces that aggregate and reshape backend data to match each frontend's exact needs, reducing over-fetching and client-side complexity.

Pattern

client request → BFF layer aggregates from multiple backend services → reshapes response for that specific client

Função primária

API design

Propósito comunicativo

Enables client-specific API surfaces that aggregate and reshape backend data to match each frontend's exact needs, reducing over-fetching and client-side complexity.

Situações de gatilho

Web/mobile development: serving distinct web and mobile clients with different data needs from shared microservices; Microservices architecture: aggregating multiple service responses into a single client-optimized payload; API gateway design: customizing response shapes per client type

Contextos

Microservices architectures, mobile-first applications, GraphQL adoption, e-commerce platforms, multi-client SaaS systems

Padrão

client request → BFF layer aggregates from multiple backend services → reshapes response for that specific client

Colocados típicos

  • API gateway
  • microservices
  • GraphQL
  • client-specific aggregation
  • service mesh
  • authentication orchestration

Substituições comuns

  • GraphQL gateway (single schema
  • client-driven queries vs. server-defined per-client endpoints)
  • API gateway with response transformation (shared gateway vs. dedicated BFF service)
  • direct microservice calls from client (simpler but couples client to service topology)

Erros comuns

Creating one BFF per team rather than per client type, leading to redundant aggregation logic; Putting business logic in the BFF instead of keeping it as a thin aggregation/reshaping layer; Sharing a BFF across web and mobile when their needs diverge significantly, defeating the pattern's purpose; Ignoring latency budgets and creating deep aggregation chains that slow down mobile clients on poor networks

Similar / contraste

API Gateway (shared infrastructure layer vs. client-specific service); GraphQL (client-driven query shape vs. server-defined per-client endpoints); Facade pattern (object-level abstraction vs. service-level API surface)

Interferências

Coming from monolithic backends: may try to add client-specific logic directly to the monolith instead of creating a separate BFF layer — BFF requires service decomposition to be effective; Coming from REST-only thinking: may assume one-size-fits-all endpoints suffice — BFF explicitly rejects this for multi-client scenarios

Família do chunk

  • API gateway
  • microservices decomposition
  • client-specific aggregation
  • GraphQL federation

Nuance

When NOT to use: single-client applications or when client needs are nearly identical — adds operational overhead without benefit. Performance: aggregation latency compounds across services, so BFFs need careful timeout/caching strategies. Boundary condition: BFF should remain stateless and contain no business logic — domain rules belong in downstream services.

Efeito pragmático

Reduces mobile app payload size and round-trips by aggregating server-side, enables independent evolution of client and backend contracts, and allows platform-specific optimizations such as different auth flows for web versus mobile.

Dica de memória

Backend for frontend: like a personal shopper who knows your size, style, and budget — instead of sending you to a warehouse, they pick exactly what fits you and hand you one bag.

Upgrade path

API composition patterns, Backend-for-frontend with GraphQL federation, service mesh integration

Frequência: MediumFormulaicidade: FlexiblePrioridade de aquisição: Active recallPrioridade de output: BothTag de espaçamento: Medium-term

Log in to save chunks.