Field guide · Scale

Change the build system when the economics demand it.

Modularization, Bazel, remote execution, hermetic builds, and monorepos are operating models—not badges. Their value depends on scale, repeated work, platform constraints, and the team’s ability to own the new system.

Prove before migrating
Stage by valuable seams
Fund long-term ownership

Not every team needs Bazel or a monorepo.

A transformation is justified when the current architecture repeatedly blocks valuable work and smaller repairs cannot change the governing constraint. Repository size alone is not enough. Look at duplicated dependency state, invalidation, cross-project changes, reproducibility, CI waste, release coordination, and ownership.

The proof should resemble production.

A toy target can prove syntax. It cannot prove cache behavior, mixed-platform toolchains, developer ergonomics, or migration cost.

Repair the current system

Prefer this when bottlenecks are local, boundaries are serviceable, and the team can meet its objectives without a new operating model.

Transform the system

Consider this when repeated work, inconsistent environments, broad graph changes, or coordination costs dominate at organizational scale.

Several changes are often bundled together. Separate them.

01

Modularization

Create boundaries that narrow invalidation, ownership, tests, and release impact. More modules are not automatically faster; dependency shape matters more than module count.

02

Bazel adoption

Introduce an explicit build graph and consistent action model where multi-language scale, reuse, or reproducibility warrants the adoption cost.

03

Build cache and remote execution

Share reusable outputs and, where appropriate, execute eligible actions on remote workers. Treat transfer, platform affinity, and cache correctness as first-class constraints.

04

Hermeticity

Declare tools and inputs so the same action means the same work. This improves reproducibility and cacheability, but requires deliberate treatment of platform tools and environment access.

05

Monorepo migration

Centralize code when shared changes, dependency consistency, and discoverability outweigh repository-scale tooling and governance costs.

06

Release engineering

Decouple building from promotion, make artifacts traceable, and preserve platform-specific signing and packaging boundaries.

Remote does not mean platform-agnostic.

Bazel can assign actions to execution platforms and use remote caching or remote execution. That does not make every action portable. An action still needs a compatible toolchain, declared inputs, and an execution environment that can legally and technically perform it.

For mixed mobile builds, the useful architecture is often hybrid: portable work runs where it is efficient, while Apple-specific compilation, resource processing, signing, or packaging remains on compatible macOS infrastructure. The build graph—not a blanket policy—should express that boundary.

Candidate quality

Action portability

Toolchain availability, platform constraints, input completeness, and determinism.

Reuse

Cacheable work

How frequently equivalent actions recur across developers and CI.

Network

Transfer economics

Artifact size and latency compared with the compute time avoided.

Operations

System ownership

Capacity, observability, security, upgrades, and developer support after launch.

Migrate through valuable seams.

01

Assess

Baseline workflows, graph shape, platform requirements, repository policy, and the current cost of delay.

02

Prove

Select a representative vertical slice with meaningful dependencies, tests, CI integration, and developer workflows.

03

Migrate

Sequence targets by value and dependency leverage. Define interoperability and rollback while two systems coexist.

04

Govern

Establish ownership, supported patterns, performance budgets, upgrade policy, documentation, and an exit from the transition state.

What a transformation engagement produces.

We evaluate whether transformation is the correct answer, model its economics, and build a production-shaped proof. If the evidence supports migration, the output includes the target architecture, platform boundaries, rollout sequence, interoperability strategy, ownership model, and success metrics.

If the evidence does not support it, the result is equally useful: a smaller improvement plan without years of unnecessary migration work.

Bazel references.

Bazel’s official documentation explains hermeticity, remote caching, remote execution, platforms and toolchains, and execution groups. These mechanisms are building blocks; the project’s graph and constraints determine the architecture.

Next guide

Mobile application performance

Build faster—and make sure the application that ships is fast for users.

Continue →