Reduce plugin `page load bundle size` and avoid unnecessary increases in `packages/kbn-optimizer/limits.yml`. Use when proactively optimizing bundles, investigating CI page-load overages, or reviewing PRs that change bundle limits.
Use this workflow to keep limits stable by moving non-critical code out of the entry bundle.
docs/extend/ci-metrics.md for metric definitions and limits workflow details.page load bundle size.node scripts/build_kibana_platform_plugins --focus <pluginId> --dist --workers 4
cat <pluginDir>/target/public/metrics.json
git show upstream/main:packages/kbn-optimizer/limits.yml | rg '^\\s{2}<pluginId>:'
rg '^\\s{2}<pluginId>:' packages/kbn-optimizer/limits.yml
node scripts/build_kibana_platform_plugins --focus <pluginId> --dist --profile --no-cache --workers 4
entry_id=$(jq -r '.chunks[] | select((.names|index("<pluginId>")) != null) | .id' <pluginDir>/target/public/stats.json)
jq -r --argjson cid "$entry_id" '.modules[] | select((.chunks|index($cid)) != null) | [.size, (.name // .identifier)] | @tsv' <pluginDir>/target/public/stats.json | sort -nr | head -40
jq -r .modules[].id <pluginDir>/target/public/stats.json | sort - > moduleids.txt
# generate moduleids.txt on both branches and diff them
public entry/start contract.index.ts) from entry paths; import only required modules directly.React.lazy(() => import(...)).page load bundle size low; allow async chunks size to grow when code is not needed at initial load.--update-limits (sets current size +15kb) and include findings in PR notes.node scripts/build_kibana_platform_plugins --focus <pluginId> --update-limits
node scripts/check_changes.ts.--validate-limits or --dist --watch while iterating.check_changes.ts fails due unrelated pre-existing files, call that out explicitly in PR notes.node scripts/build_kibana_platform_plugins --validate-limits --focus <pluginId>
node scripts/build_kibana_platform_plugins --dist --watch --focus <pluginId>