Skip to content
CAI
Software that uses CAICheck a score

GoogleChromeLabs/quicklink

69.1

Adequate · 2 October 2026

1.5k

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Quicklink is a JavaScript library that improves page load performance by prefetching and prerendering in-viewport links using the Speculation Rules API. It supports advanced configuration options for controlling eagerness and throttling, as well as React integration and route chunk prefetching. The project also includes a comprehensive documentation site built with Eleventy to demonstrate usage and measure performance gains.

How it got here

2018 — Modularization and prerendering support

5 changes.

The project underwent a significant architectural shift by restructuring its source code into modular files and rebuilding its tooling with Rollup 4. This period introduced advanced performance features, including browser-native prerendering via the Speculation Rules API and route chunk prefetching, alongside expanded configuration options. Comprehensive testing and new usage demos were added to validate these changes and support modern React versions.

2019 — Documentation site initialization

5 changes.

The project established a static documentation website using Eleventy and Firebase Hosting, featuring modular Nunjucks components and a structured layout. This period focused on creating initial pages for API references, demos, and performance measurement guides, alongside configuring the build pipeline and asset optimization.

2020–2026 — site modernization and demo enhancements

5 changes.

The project modernized its documentation site by migrating styles to Sass, centralizing metadata, and adding interactive features like a back-to-top button and code copying. It also expanded the demo suite with self-hosted examples for e-commerce and SPAs, alongside a new demonstration for custom URL prefetching via hrefFn.

Features

Add basic and network-idle usage demos

New demo pages have been added to help users understand how to integrate the library. The basic demo (\demos/basic.html\) demonstrates the simplest usage by calling \quicklink.listen()\ directly. The network-idle demo (\demos/network-idle.html\) shows how to prefetch links only when network activity is idle by integrating a localized \network-idle-callback\ implementation (\demos/network-idle.js\) with a service worker (\demos/sw.js\).

demos · high confidence

Add site initialization script with back-to-top and clipboard features

A new JavaScript file (script.js) has been added to the site assets, initializing core interactive behaviors on page load. This includes a 'back-to-top' button that appears when the user scrolls past 400 pixels and smoothly scrolls the page to the top. Additionally, it integrates ClipboardJS to handle copying code snippets, providing visual feedback upon successful copy and logging errors to the console if the action fails.

site/src/assets/js · high confidence

Demo showcasing custom URL prefetching via hrefFn

Added a new demo in the demos/hrefFn directory that illustrates how to use the hrefFn option to customize prefetch targets. The demo includes a main HTML file where quicklink is configured with an hrefFn that transforms link URLs (e.g., replacing .html with .json) to prefetch JSON resources instead of HTML pages, along with supporting HTML and JSON files to demonstrate the behavior.

demos/hrefFn · high confidence

The site now includes a set of Nunjucks partials in \site/src/\_includes/components\ that render the core documentation pages. These components provide the installation instructions, usage examples (including ES modules and React HOC integration), configuration details for limiting prefetches, and a copy-to-clipboard snippet for the CDN script. The site also features sections explaining the benefits of prefetching, showcasing trusted companies and compatible frameworks, and introducing the Quicklink Chrome extension.

_site/src/\includes/components · high confidence

Initial documentation site launch with SPA demos and performance measurement guides

The site now includes a complete documentation structure built with Eleventy, featuring dedicated pages for the API, approach, demos, and measurement. The API page documents the \quicklink.listen\ and \quicklink.prerender\ methods, including new options like \delay\ and \eagerness\. The demos page showcases Multi-Page App and Single-Page App (React) examples, while the measure page provides step-by-step guides for using Chrome DevTools and WebPageTest to quantify performance improvements. The site also adds technical assets like a \robots.txt\, \sitemap.xml\, and \site.webmanifest\ for better SEO and PWA support.

site/src · high confidence

Initial site setup with Eleventy and Firebase hosting

The site directory is initialized as a static website using the Eleventy static site generator, configured via \.eleventy.js\ to process Nunjucks templates, compile Sass with Autoprefixer, and minify HTML in production. The build output is deployed to Firebase Hosting, as defined in \firebase.json\ and \.firebaserc\, with specific cache-control headers for assets. The site structure includes an entry point (\index.njk\) composed of reusable components and is supported by linting configurations for ESLint and Stylelint.

site · high confidence

Library restructured into modular source files with new chunk and prerender capabilities

The library source has been reorganized into distinct modules (index.mjs, prefetch.mjs, prerender.mjs, chunks.mjs) to support new capabilities. Users can now prefetch specific route chunks using a manifest via the \prefetchChunks\ option, and the library supports browser-native prerendering through the Speculation Rules API (configurable via \prerender\, \eagerness\, and \prerenderAndPrefetch\ options). The main entry point now includes a React Higher-Order Component (\withQuicklink\) to automatically handle intersection observation and chunk prefetching for React applications.

src · high confidence

Quicklink now supports same-site prerendering using the Speculation Rules API, allowing in-viewport links to be fully prerendered (with a fallback to prefetching) for faster subsequent page loads. This release also introduces new configuration options including \prerender\, \eagerness\, \prerenderAndPrefetch\, \delay\, \el\, \limit\, \threshold\, \throttle\, and \timeout\ to control prefetching and prerendering behavior. The library has been rebuilt with Rollup to produce multiple optimized bundles (ESM, UMD, and a modern ES module variant) and includes updated documentation and ESLint configuration.

(repo-wide) · high confidence

Site configuration files added for package manager and update notifications

Added configuration files to the site's .config directory: a new 'glitch-package-manager' file specifying 'pnpm' as the package manager, and a 'configstore/update-notifier-pnpm.json' file tracking pnpm update status (currently showing a major update available from 2.25.5 to 4.3.3).

site/.config · high confidence

Behavioural changes

Centralized site metadata and dynamic URL configuration

The site now uses a centralized data file to manage global metadata, including the site title, description, social image, and a list of supported frameworks (WordPress, Drupal, Magento, React, Angular, Vue) and trusted brand logos. The site URL is now configured dynamically, automatically using the Netlify deploy preview URL when deployed on Netlify, or falling back to the default production URL otherwise. The Quicklink library version is also read directly from package.json to ensure consistency.

_site/src/\data · high confidence

Site layout structure and asset loading overhaul

The site's layout system has been restructured into modular Nunjucks includes (base, head, header, footer, social, and favicons) to improve maintainability. This change introduces a new navigation system using the \eleventyNavigation\ filter, updates social media meta tags for Open Graph and Twitter, and optimizes asset loading by preconnecting to cdn.jsdelivr.net and deferring non-critical scripts like Quicklink, clipboard.js, and GitHub buttons.

_site/src/\includes/layouts · high confidence

Site styles migrated to Sass with new code snippet and markdown theming

The site's styling system has been converted from plain CSS to Sass, introducing a new \main.scss\ entry point that imports modular components. This change adds a dedicated 'copy snippet' widget style for code blocks, integrates GitHub-flavored markdown styling for documentation pages, and includes Prism.js syntax highlighting for code. Users will see updated visual styling for code snippets, including a copy button and notification, as well as refreshed typography and layout for markdown content.

site/src/assets/styles · high confidence

Fixes

The site now includes self-hosted demo pages in \site/src/demos\ that replace external Glitch links, allowing users to experience Quicklink prefetching directly. The \mini-ecomm\ demo shows a product listing with and without prefetching to compare navigation speeds, while the \spa\ demo demonstrates prefetching JavaScript route chunks in a vanilla single-page app. These additions fix broken external references and provide a reliable, offline-capable way to observe Quicklink's idle-time prefetching behavior in DevTools.

site/src/demos · high confidence

Test coverage

Added comprehensive test fixtures and specifications in the \test/\ directory to verify Quicklink's behavior across various configuration scenarios. The new tests cover origin filtering (same-origin, allowed origins, allow-all), ignore patterns (regex, functions, multiple), throttling, limiting, custom DOM sources, NodeList support, duplicate link handling, static prefetching, prerendering modes, chunk-based prefetching via route manifests, and ES module imports.

test · high confidence

Dependencies

The Quicklink package has been updated to version 3.0.2, introducing support for React 19 in its optional peer dependencies alongside React 16.8, 17, and 18. The core build tooling has been upgraded to Rollup 4 and ESLint 9, with Babel dependencies updated to version 7.29.7. The site documentation has been migrated to Eleventy 2.0.1, replacing older site dependencies with modern tooling including PostCSS 8.5.25 and Stylelint 16.26.1.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 68 → 69 (+0.8)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 61 → 61 (+0.0)
  • Architecture 91 → 92 (+1.4)
  • Maturity 64 → 64 (-0.0)
  • Readiness 84 → 85 (+1.0)
  • Security 84 → 83 (-0.9)
  • Performance 100 (new)

Resolved (5)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
  • Documentation: no usage examples (README.md)
  • Hotspot: src/chunks.mjs (src/chunks.mjs)
  • Medium CVE: [GHSA redacted] (site/package-lock.json)
  • Off-boarding risk: anonymized user #1

New (6)

  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (site/package-lock.json)
  • High CVE: [GHSA redacted] (site/package-lock.json)
  • Medium vulnerability: [GHSA redacted] (site/package-lock.json)
  • Medium vulnerability: [GHSA redacted] (site/package-lock.json)
  • Off-boarding risk: anonymized user #1

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

GoogleChromeLabs/quicklink was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e2f081b78f518a108a47b9046428a36f96f74f1e — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.