Upgrade to Next.js 16.3 + migrate to App Router + adopt Cache Components #7835
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Analyze Bundle | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main # change this if your default branch is named differently | |
| workflow_dispatch: | |
| permissions: {} | |
| jobs: | |
| analyze: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20.x' | |
| cache: yarn | |
| cache-dependency-path: yarn.lock | |
| - name: Restore cached node_modules | |
| uses: actions/cache@v4 | |
| with: | |
| path: '**/node_modules' | |
| key: node_modules-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('yarn.lock') }} | |
| - name: Install deps | |
| run: yarn install --frozen-lockfile | |
| - name: Restore next build | |
| uses: actions/cache@v4 | |
| id: restore-build-cache | |
| env: | |
| cache-name: cache-next-build | |
| with: | |
| path: .next/cache | |
| # change this if you prefer a more strict cache | |
| key: ${{ runner.os }}-build-${{ env.cache-name }} | |
| - name: Build next.js app | |
| # Match the production Turbopack build so route-level diagnostics reflect | |
| # the chunks users receive in production. | |
| run: ./node_modules/.bin/next build | |
| # Measure the current build's bundle sizes (App Router-aware). | |
| # See scripts/analyzeBundle.mjs — reads build output and Turbopack's route | |
| # diagnostics, since nextjs-bundle-analysis only understands Pages Router. | |
| - name: Analyze bundle | |
| run: node scripts/analyzeBundle.mjs report | |
| - name: Upload bundle | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| path: .next/analyze/__bundle_analysis.json | |
| name: bundle_analysis.json | |
| - name: Download base branch bundle stats | |
| uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e | |
| if: success() && github.event.number | |
| with: | |
| workflow: analyze.yml | |
| branch: ${{ github.event.pull_request.base.ref }} | |
| name: bundle_analysis.json | |
| path: .next/analyze/base/bundle | |
| # Compare the current build against the base-branch stats downloaded above | |
| # and write the Markdown comment body. Degrades gracefully when the base | |
| # branch has no stats yet (or still has the old format). | |
| - name: Compare with base branch bundle | |
| if: success() && github.event.number | |
| run: node scripts/analyzeBundle.mjs compare | |
| - name: Upload analysis comment | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: analysis_comment.txt | |
| path: .next/analyze/__bundle_analysis_comment.txt | |
| - name: Save PR number | |
| run: echo ${{ github.event.number }} > ./pr_number | |
| - name: Upload PR number | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: pr_number | |
| path: ./pr_number | |
| # The actual commenting happens in the other action, matching the guidance in | |
| # https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ |