PeekJS
A Window Before the Click
Tiny, zero-config link previews on hover that morph into the destination via the View Transitions API.
Hovering a link is a moment of hesitation. You know you might want to go there, but you are not sure enough to commit to a navigation. That gap is exactly where I wanted PeekJS to operate.
The library surfaces a live preview of the destination page on hover, rendering it inside a secure iframe that contains same-origin content without any configuration. When you click, the preview morphs into the full page using the View Transitions API: the bounding box of the preview window maps to the final viewport, and the browser handles the transition as a single animated motion rather than a hard cut. The effect is a navigation that feels like unfolding rather than teleporting.
I kept the bundle under 6 KB gzipped by keeping dependencies at zero. The framework wrappers, React's usePeek hook, Vue, Svelte, and Angular's PeekService, are thin bindings over the @peekjs/core package. Cross-origin links fall back to metadata scraping via edge workers, extracting title, description, and OG image when the full iframe preview is not available.
The documentation site at peekjs.dev was built to reflect the library's own philosophy: show the tool in action immediately, before any explanatory text. Landing on the docs and seeing PeekJS working on the links on the page is a more efficient demonstration than any written description. I kept the design deliberately quiet, with no decorative elements competing with the behavior the page is there to illustrate.
PeekJS is one of those libraries that is small enough to use anywhere and specific enough to solve its problem completely.