js.foresight
v4.2.1
Published
Predicts where users will click based on mouse movement, keyboard navigation, and scroll behavior. Includes touch device support. Triggers callbacks before interactions happen to enable prefetching and faster UI responses. Works with any framework.
Downloads
78,466
Maintainers
Readme
ForesightJS
ForesightJS is a lightweight JavaScript library that predicts user intent to prefetch content before it's needed. It works completely out of the box without configuration, supporting both desktop and mobile devices with different prediction strategies.
Playground
In the GIF above, the ForesightJS DevTools are enabled. Normally, users won't see anything that ForesightJS does except the increased perceived speed from early prefetching.
Integrations
Since ForesightJS is framework agnostic, it can be integrated with any JavaScript framework. There are official packages for React, Vue, and Angular:
- JavaScript →
js.foresight: the framework-agnostic core, usable in any project. - React →
@foresightjs/react:useForesight, theForesightcomponent,useForesightEvent, plus Next.js and React Router examples. - Vue →
@foresightjs/vue: thev-foresightdirective, theForesightcomponent, and theuseForesight/useForesightEventcomposables. - Angular →
@foresightjs/angular: the[fsForesight]directive,ForesightService,ForesightComponent, andinjectForesightEvent.
Using another framework (Svelte, Solid, etc.)? See Other Frameworks for how to build your own thin binding on top of the core. Sharing integrations for other frameworks/packages is highly appreciated!
Prediction Strategies
ForesightJS uses different prediction strategies depending on the device type:
Desktop/Keyboard Users: Mouse trajectory prediction, keyboard navigation tracking, and scroll-based prefetching. Read more
Mobile Devices: Viewport enter detection and touch start events (configurable via [touchDeviceStrategy]). Read more
Configuration
ForesightJS works out of the box with no setup required, but it can be configured both globally and per element if needed.
Development Tools
ForesightJS has dedicated Development Tools created with Foresight Events that help you understand and tune how foresight is working in your application. This standalone development package provides real-time visualization of mouse trajectory predictions, element bounds, and callback execution.
pnpm add js.foresight-devtoolsSee the development tools documentation for more details.
Contributing
Please see the contributing guidelines
