Quicklink - a small JS library to fast load subsequent pages and improve user experience

Most of the modern web frameworks handle loading subsequent pages faster by different techniques like code splitting, front end caching, service workers etc.

Some other common techniques to boost site speed are,

  • pre-fetching assets for next pages during idle time
  • pre-load next urls and cache it

Several companies like medium, wikipedia, dev.to, quora loads their pages faster using similar techniques.

These technique require lot of smartness based on user's settings, device and network speed etc.

Introducing Quicklink

A small javascript library (< 1Kb) which makes the subsequent page load faster and do some smart loading techniques too.

How it works

  • It loads all the links on the page when the link is in viewport (using Intersection Observer)
  • It won't load those links more than once using its smartness
  • It won't load these techniques if user is on slow connection (using navigator.connection.effectiveType) and if user opt in for saving data in mobile devices (using navigator.connection.saveData)
  • It won't interrupt the site content, it start its operation only on Idle-time (using requestIdleCallback)

Check out the docs here for more info on the library. It is open sourced by Google chrome labs

How to use it on your site

// ES6 way
import quicklink from 'quicklink/dist/quicklink.mjs'
quicklink()
<!-- Include as script -->
<script src="dist/quicklink.umd.js"></script>
<script>
  /*
        you can load the script DOMContentLoaded, or Window load callbacks,
        it won't cause any issues, since quicklink start executing only in browser idle time.
    */
  quicklink()
</script>

quicklink accepts lot of options, You can find it in documentation in the github link.

Ignoring few URL's are the widely used option, most other options have default values.

Example, for ignoring all URL with extensions .pdf, URL with sub-string /api and also links which explicitly asked to noprefetch

quicklink({
  ignores: [
    // ignore all /api/* urls
    /\/api\/?/,
    // ignore .pdf files
    (uri) => uri.includes('.pdf'),
    // ignore all links, scripts which has explicit noprefetch
    (uri, elem) => elem.hasAttribute('noprefetch'),
  ],
})

Quicklink is easy to setup and smart enough for most cases to optimize subsequent page load experience. It doesn't solve the first load experience though.

Hope it improves the performance of your website and improves the user experience. Try it out, its one exciting library to test web performance for users.

Beginners to ProNode Js

Visual Guide to API Design Best Practices

This visual eBook covers essential best practices for designing robust APIs using REST principles.

This book is ideal for beginners and backend developers seeking to enhance their API design skills. However, it is not suited for those seeking an in-depth exploration of API design. This book is a quick read under 40 slides like scrolling through your instagram feed.

Visual Guide to API Design Best Practices