Skip to content

feat(@angular/build): Support splitting browser and server stats jsonfiles for easier consumption#32631

Open
tsteuwer-accesso wants to merge 2 commits intoangular:mainfrom
tsteuwer-accesso:main
Open

feat(@angular/build): Support splitting browser and server stats jsonfiles for easier consumption#32631
tsteuwer-accesso wants to merge 2 commits intoangular:mainfrom
tsteuwer-accesso:main

Conversation

@tsteuwer-accesso
Copy link

This feature supports splitting out the browser and server stats json files so it's easier to inspect the bundle in various analyzers. Today, everything gets dumped into a single file and it's nearly impossible to use without hours of fix -> remove unused browser/server chunks -> analyze and starting the loop all over again.

This feature implements the feature request I made in #28185, along with another developers request to see a stats json file for just the initial page bundle. I've tested this out in my own repository and it's already helped an incredible amount.

Fixes #28185 #28671

PR Checklist

Please check to confirm your PR fulfills the following requirements:

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Documentation content changes
  • Other... Please describe:

What is the current behavior?

When using --stats-json, the CLI outputs a single stats.json file.

Issue Number: 28185

What is the new behavior?

We now receive a browser-stats.json, server-stats.json, browser-stats-initial.json and server-stats-initial.json

Does this PR introduce a breaking change?

  • Yes
  • No

This is a breaking change for anyone relying on CI processes that inspect the old stats.json file as it will no longer be named that.

Other information

… files for easier consumption

This feature supports splitting out the browser and server stats json files so it's easier to inspect the bundle in various analyzers. Today, everything gets dumped into a single file and it's nearly impossible to use without hours of fix -> remove unused browser chunks -> analyze and starting the loop all over again.

This feature implements the feature request I made in angular#28185, along with another developers request to see a stats json file for just the initial page bundle. I've tested this out in my own repository and it's already helped an incredible amount.

Fixes angular#28185 angular#28671
@google-cla
Copy link

google-cla bot commented Mar 1, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@angular-robot angular-robot bot added detected: feature PR contains a feature commit area: @angular/build labels Mar 1, 2026
@tsteuwer-accesso
Copy link
Author

Signed CLA.

…at was in my main branch off of @angular/angular-cli repository

This addresses an issue of including the (browser|server)-initial-stats.json file that was in my original repository. It also fixes unit tests that were also addressed in the original repo.
@@ -83,9 +83,8 @@ export async function getCommonConfig(wco: WebpackConfigOptions): Promise<Config
// Once TypeScript provides support for keeping the dynamic import this workaround can be
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes are unrelated and unneeded.

Please revert.

@@ -208,7 +208,7 @@
},
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please revert.

@@ -394,7 +394,7 @@
},
Copy link
Collaborator

@alan-agius4 alan-agius4 Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please revert.

@@ -406,7 +406,7 @@
},
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please revert.

PrerenderedRoutesRecord,
} from './bundler-execution-result';

export function buildMetafileForType(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't the ideal place for this logic. Since metadata is already being merged here, we should instead modify that process to skip merging for specific fields or keep them isolated from the start.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: @angular/build detected: feature PR contains a feature commit

Projects

None yet

Development

Successfully merging this pull request may close these issues.

--stats-json to allow giving stats to both server and browser, separately

2 participants