All writing
November 2023·5 min read

Frontend Engineering Is Architecture

The frontend is not where you apply your architecture. It is where you reveal it. Every component tree is an expression of your domain model. Every state management decision is an architectural statement. Every API shape you consume reflects the design decisions of the systems behind it.

The Dismissal

Frontend engineering has a reputation problem among a certain kind of backend engineer. "It's just UI." "It's not real engineering." "Anyone can do it."

This view is not just wrong — it reveals a fundamental misunderstanding of where complexity lives in modern software systems.

Where Complexity Actually Lives

In a modern web application, the frontend is where:

  • All user-facing state converges. The frontend must reconcile server state, client state, optimistic updates, and real-time data — simultaneously, without inconsistency.
  • All failure modes become visible. Network errors, permission failures, validation errors, race conditions — the frontend handles all of them and must do so gracefully.
  • Performance constraints are tightest. A 3MB bundle or a layout shift at 300ms costs you users. Backend latency is measured in seconds. Frontend performance is measured in milliseconds.
  • Security boundaries are real. XSS, CSRF, sensitive data exposure, broken access control at the client layer — these are OWASP top-10 issues, not UI bugs.

The Architectural Implications

When I design a frontend system, I'm making architectural decisions that affect:

Data fetching strategy: Do we cache on the edge? SWR or React Query? How do we handle stale data in real-time contexts?

State boundaries: What state belongs to the server? What belongs to the client? What belongs to the URL?

Component boundaries: Which components are pure (stateless, testable, predictable)? Which own state? How do we prevent prop-drilling from becoming an implicit dependency graph?

API contract design: The shape of your API is as much a frontend concern as a backend one. A poorly designed API forces complexity into the client.

The Signal

The signal that someone understands frontend as architecture is not their knowledge of the latest framework. It's whether they ask the right questions before writing a single component:

  • Where does this data live, and who owns it?
  • What are the failure modes, and how do we handle them?
  • What are the performance constraints, and where are the bottlenecks?
  • What changes frequently, and what should be stable?

These are architectural questions. They happen to be answered in TypeScript with JSX. That doesn't make them less architectural.

Ihedioha Chinonso

Software Engineer · 🌎

More essays →