Company
About Tomosu Our Team
Platform
Platform & Agents Indexes How it works Solutions Pricing
Get Started
MCP Server VS Code — Plugin Installation Scan Your Repo — Guide Integrations · GitHub App Integrations · CodeRabbit MCP FAQ
Free Tools
Governance Impact
Resources
Blogs News Download / Free Trial Book a call →
Production Reliability · Blast radius

How to Assess the Blast Radius of a Code Change

Tomosu AI·10 min read·

A code change can be small and still affect a large part of a production system.

A two line change to a shared library can reach dozens of services. A large pull request isolated to an internal tool might affect almost nothing outside that tool.

This is why the number of changed lines is not enough to understand the potential impact of a change. Blast radius is about what could be affected if a change behaves differently than expected. Assessing it before merge gives engineers another way to understand the production implications of a change.

What is the blast radius of a code change?

Short definition

The blast radius is the set of systems, components, users, or business functions that could be affected by a change.

It can include:

The blast radius is not necessarily the same as the number of files changed. Consider two changes:

DIFF SIZE IS NOT REACH CHANGE A · 2 FILES Shared auth library 12 services depend on it Customer login workflow LARGE potential reach CHANGE B · 25 FILES Internal reporting tool 1 team uses it SMALL potential reach The second change is larger as a diff. The first may have a much wider production impact.
Twelve and a half times more files, a fraction of the reach. The diff alone would rank these the wrong way round.

For the broader connection between change scope and production reliability, see What Is Production Reliability in Software Engineering?.

Why blast radius matters

Understanding blast radius helps engineers decide how much attention a change deserves.

A change affecting one isolated component may need normal review and testing. A change affecting a shared production dependency may justify additional verification or a more controlled deployment.

This does not mean every change with a large blast radius should be blocked. It means the potential impact should be visible before the change reaches production.

Step 1: Identify what changed

Start with the pull request itself. Look at:

Ask:

What part of the system is actually changing?

The answer becomes the starting point for mapping the potential impact.

Step 2: Map dependencies

Next, determine what depends on the changed component.

ONE CHANGED COMPONENT, EVERY CONSUMER IN REACH CHANGED Authentication library API A API B API C Users Users Internal tools Only the library appears in the diff. Everything below it is in reach.
A change to the authentication library may affect every service using it.

Useful dependency relationships can include:

The more downstream relationships a component has, the more carefully its potential impact should be considered.

Step 3: Identify direct and indirect impact

Not every affected component is directly modified. Separate the impact into two levels.

Direct impact

What the diff changes

Components changed directly by the pull request.

Indirect impact

What depends on it

Components that depend on the changed components.

DIRECT VS INDIRECT IMPACT DIRECT · IN THE DIFF INDIRECT · NOT IN THE DIFF PR Payment library Checkout service Order service Customer purchase flow Only the payment library appears in the diff. The potential production impact extends beyond it.
This is one of the main reasons blast radius cannot be determined from the diff alone.

Step 4: Look at production usage

Dependency relationships tell you what could be affected. Production usage helps show what actually matters. Consider:

A component used by ten internal development tools does not necessarily have the same production significance as one used by ten customer facing services.

Reach vs significance

The dependency graph tells you the reach. Production usage adds context to that reach.

Step 5: Check historical incidents

Look at whether the affected components have caused problems before. Useful questions include:

Historical incidents do not mean that the current change will fail. They provide context that should not be ignored when evaluating the change.

Step 6: Look at recent changes

Recent change activity can provide another signal. Check:

A component undergoing several changes at once can be harder to reason about than a stable component. This becomes more useful when combined with the actual scope and dependencies of the current change.

Step 7: Consider production behavior

Current runtime behavior can also affect the assessment. Look at relevant error rates, latency, resource usage, dependency failures, runtime anomalies, and recent alerts.

For example, changing a heavily used component that is already showing elevated error rates may warrant additional investigation.

Observability provides much of this evidence. See Production Reliability vs Observability for how runtime signals fit into broader production reliability analysis.

Step 8: Consider the type of change

Not all changes have the same potential impact. Pay particular attention to changes involving:

Shared libraries

Many consumers

One change can affect many consumers.

Public APIs

Outside clients

Changes can affect clients outside the immediate service.

Database schemas

Deploy sequencing

Schema changes can affect multiple applications and deployment sequences.

Auth & authz

System-wide access

Changes can affect access across many parts of the system.

Infrastructure

Simultaneous impact

A change to shared infrastructure can affect multiple services simultaneously.

Core business logic

Critical workflows

Changes to payments, orders, billing, identity, or other critical workflows can have broad consequences.

The actual significance depends on the architecture and production usage of the system.

Step 9: Consider deployment conditions

Blast radius is not only about what could be affected. It is also about how the change reaches production. Consider whether the change will use:

For example, a change affecting 20 services but released gradually may have different operational exposure from the same change deployed everywhere immediately.

Deployment controls can therefore reduce the practical exposure of a change even when its theoretical blast radius is large.

A simple blast radius model

You can think about the assessment as several layers:

EACH LAYER EXPANDS THE PICTURE CODE COMPONENTS DEPENDENCIES CONSUMERS WORKFLOWS USERS 1. Changed code 2. Directly affected components 3. Dependencies 4. Production consumers 5. Critical workflows 6. Potential user impact Where can the change travel?
The goal is not necessarily to produce an exact number. The goal is to understand where the change can travel.

Blast radius vs change size

One common mistake is treating lines of code as a proxy for production impact. They are not equivalent. For example:

ChangeDiff sizePotential reach
Internal dashboard changeLargeLimited
Shared utility changeSmallBroad
Database migrationMediumBroad
Documentation updateLargeUsually minimal runtime impact
Authentication changeSmallPotentially broad

The table is illustrative rather than a universal classification. The architecture and usage of the system determine the actual impact.

Blast radius and testing

Once the potential blast radius is understood, it can inform testing.

A change affecting one isolated component might require focused tests. A change affecting a shared dependency may justify broader verification. That could mean integration tests, end to end tests, load tests, regression tests, additional staging verification, or canary testing.

The point is not to test everything equally. It is to align verification with the potential impact of the change.

For a broader pre deployment process, see How to Assess Production Reliability Before Deployment.

Blast radius and pre merge analysis

Blast radius is one part of pre merge reliability analysis. A useful workflow is:

This fits into the broader workflow described in Pre Merge Reliability Analysis: How to Evaluate a Change Before Merge.

What should you do when the blast radius is large?

A large blast radius is not automatically a reason to reject a change. Instead, it can trigger additional questions:

Possible actions include adding tests, splitting the change, adding a feature flag, deploying gradually, adding monitoring, requesting additional review, investigating dependencies, and improving rollback controls.

The appropriate response depends on the change and the team's reliability requirements.

Where static analysis fits

Static analysis can help identify code level problems, but it does not necessarily reveal the full production reach of a change.

A static analyzer may identify a problematic API usage. It may not know that the affected function is called by a large number of production services or sits on a critical customer workflow.

That is why blast radius assessment can complement static analysis. See Production Reliability vs Static Analysis.

Production Reliability Index

Tomosu uses the Production Reliability Index (PRI) to bring multiple reliability signals into a broader view of changes and production systems. The platform describes PRI as a master score built from seven sub indices:

These signals are calibrated to the organization and used across development, pre merge, and production.

Blast radius is therefore one piece of the broader reliability context around a change rather than a standalone score.

Try the Production Reliability Index →

Practical blast radius checklist

Before merging a change, ask:

Change scope
  • What components changed?
  • Are shared components involved?
  • Does the change modify an API, database, or infrastructure?
Dependencies
  • What depends on the changed code?
  • Are there downstream services?
  • Are external systems involved?
Production usage
  • Who uses the affected components?
  • Are customer facing workflows involved?
  • How heavily are they used?
History
  • Have these components caused incidents before?
  • Have similar changes caused problems?
  • Have recent deployments been unstable?
Runtime
  • Are there current errors or anomalies?
  • Is the affected component already showing reliability issues?
Deployment
  • Can the change be rolled out gradually?
  • Is rollback available?
  • Can the affected area be isolated?
Verification
  • Does the testing match the potential impact?
  • Are integration or end to end tests needed?

The main idea

Change + dependencies + production usage + historical behavior + deployment conditions = potential blast radius.

That context can then feed into the broader production reliability assessment before the change is merged. For the next step, see How to Assess Production Reliability Before Deployment.

Frequently asked questions

What is blast radius in software engineering?

Blast radius describes the systems, components, users, or workflows that could be affected if a software change behaves unexpectedly.

How do you calculate blast radius?

There is no single universal formula. A practical assessment maps the changed components to their dependencies, production consumers, critical workflows, and potential user impact.

Does a bigger code change have a bigger blast radius?

Not necessarily. A small change to shared infrastructure can have a much wider potential impact than a large change to an isolated component.

How can I assess blast radius before merging?

Start with the changed components, map their dependencies, identify production consumers, review historical incidents and runtime behavior, and consider deployment and rollback conditions.

Can static analysis determine blast radius?

Static analysis can provide useful information about code and dependencies, but it may not contain enough production context to determine the full potential impact.

How does blast radius relate to production reliability?

Blast radius is one factor in understanding the potential reliability impact of a change. A change with a wider potential impact may require more evidence or stronger deployment controls.


A pull request tells you what changed. Blast radius tells you where it can travel. Tomosu's Production Reliability Index brings that reach together with dependencies, runtime signals, and history before the change merges. Try the Production Reliability Index →