Skip to content

nuxt: stop running the link checker at build time - #5636

Open
dimitrieh wants to merge 2 commits into
mainfrom
perf/link-checker-off-on-build
Open

nuxt: stop running the link checker at build time#5636
dimitrieh wants to merge 2 commits into
mainfrom
perf/link-checker-off-on-build

Conversation

@dimitrieh

Copy link
Copy Markdown
Contributor

Description

Adds runOnBuild: false to the linkChecker config, so nuxt-link-checker no longer re-inspects every prerendered page at the end of the build. On run 32107141754 that pass was 19m15s of a 24m15s CI job, and it scales with page count: 4m34s over 251 routes on 28 Jul, 10m10s over 563 routes on 30 Jul, 19m15s over 2363 routes on 18 Aug. Only three of its inspections are error scope, and no-error-response is already in skipInspections, leaving missing-hash and no-javascript; the CI build workflow also runs hyperlink with --check-anchors over the built nuxt/dist tree in 582ms, which already covers broken links and anchors.

failOnError and skipInspections are unchanged, and the module keeps its dev-time and devtools checking. Only the build-time pass is dropped.

Related Issue(s)

None

Checklist

  • I have read the contribution guidelines
  • I have considered the performance impact of these changes
  • Suitable unit/system level tests have been added and they pass
  • Documentation has been updated
  • For blog PRs, an Art Request has been created (instructions)

The nuxt-link-checker prerender pass takes 19m15s of a 24m15s CI job and
scales with page count. Only missing-hash and no-javascript are still
error scope for us, and the CI build workflow already runs hyperlink with
--check-anchors over nuxt/dist in under a second. Dev-time and devtools
checking are unaffected.
@netlify

netlify Bot commented Aug 18, 2026

Copy link
Copy Markdown

Deploy Preview for flowforge-website ready!

Name Link
🔨 Latest commit 259c14e
🔍 Latest deploy log https://app.netlify.com/projects/flowforge-website/deploys/6a847878275d4f000800d3de
😎 Deploy Preview https://deploy-preview-5636--flowforge-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 61 (🟢 up 7 from production)
Accessibility: 96 (no change from production)
Best Practices: 100 (no change from production)
SEO: 85 (no change from production)
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@dimitrieh

Copy link
Copy Markdown
Contributor Author
CleanShot 2026-08-18 at 17 15 12@2x

@dimitrieh

Copy link
Copy Markdown
Contributor Author

To consider if merged:

Lost:

  1. The SEO warnings. Link text "here", underscores in URLs, links pointing at a redirect. These were warnings only. Nothing failed on them and nobody was reading them.
  2. The no-javascript rule. Catches javascript: hrefs. It was its one remaining error-scope rule, and nothing else covers it now.

Not lost:

  • broken links and broken anchors. Hyperlink checks those across both the Nuxt and 11ty halves, which is more of the site than link-checker ever saw.

both are cheap to recover.

  • no-javascript: add it to the unit test suite you already run (nuxt/lib/*.test.mjs, 104 tests, 1 second, every push). A scan of content and templates for javascript: hrefs. That gates harder than the old rule did, since link-checker only saw prerendered Nuxt pages.
  • SEO warnings: put runOnBuild behind an env var and add a weekly scheduled run on main that sets it. One 24-minute run a week instead of one per push, and you keep the full report.

Pre-existing gap:

  • External URLs are not checked.

@ppawlowski

Copy link
Copy Markdown
Contributor

While setting runOnBuild: false in the linkChecker configuration significantly reduced website build process (less than 4 minutes for this pull request), I do not know if the Check links step, that utilizes the untitaker/hyperlink external action, can fully replace the solution offered by the nuxt module.
From the execution perspective, it's a huge change, but I do not know what the differences are in link testing between untitaker/hyperlink and nuxt-link-checker.

@dimitrieh

Copy link
Copy Markdown
Contributor Author

@knolleary can you take a look at the comment above when you have time? It solves part of our CI pipeline taking so long woes.

@dimitrieh dimitrieh reopened this Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants