# JavaScript · Tech watch

[Canonical source](<https://sebastien.rigaux.be/en/tech-watch/tags/javascript>)

The language of the Web, covering interactions, browser APIs and server applications.

## [WebMCP: W3C backs a polyfill for experimenting with web agents](<https://sebastien.rigaux.be/en/tech-watch/links/webmcp-w3c-backs-a-polyfill-for-experimenting-with-web-agents>)

The W3C has launched a second pilot in its open-source program: a polyfill for WebMCP, an incubating JavaScript API that lets applications expose functions as tools callable by agents and assistive technologies. The polyfill is intended to support experimentation and interoperability as the specification evolves.

Plans include publishing an npm package, tracking Web Platform Tests coverage, and advancing lifecycle events and declarative support. If WebMCP moves onto the standards track and interoperable native implementations emerge, the polyfill would be phased out gradually.

2026-10-29 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/webmcp-w3c-backs-a-polyfill-for-experimenting-with-web-agents.md>) · [Original resource](<https://www.w3.org/blog/2026/w3c-launches-second-pilot-of-program-to-support-open-source-projects/>)

## [DeadTag turns abandoned website tags into iPhone attack paths](<https://sebastien.rigaux.be/en/tech-watch/links/deadtag-turns-abandoned-website-tags-into-iphone-attack-paths>)

Expired domains behind old analytics and advertising tags have been bought and repurposed to redirect visitors to malicious content, including the Coruna and DarkSword iOS exploit kits. Report URI and iVerify describe a chain that filters visitors and tailors its payload to the device; security scanners may receive only an empty response.

The case shows how a forgotten third-party script remains an active dependency: its domain can change hands without any site change. The article recommends auditing tags, monitoring loaded scripts, and restricting their domains with a Content Security Policy.

2026-10-29 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/deadtag-turns-abandoned-website-tags-into-iphone-attack-paths.md>) · [Original resource](<https://blog.report-uri.com/deadtag-how-forgotten-website-tags-became-a-delivery-network-for-iphone-spyware/>)

## [OGL: a minimal WebGL library for writing custom shaders](<https://sebastien.rigaux.be/en/tech-watch/links/ogl-a-minimal-webgl-library-for-writing-custom-shaders>)

OGL keeps abstractions to a minimum for WebGL rendering and custom shaders. This dependency-free ES module library shares some conventions with Three.js, but provides fewer features and leaves room to use native WebGL commands directly.

Its Math, Core, and Extras split helps keep integrations modular; the README lists 29 KB minified and gzipped for the full set before tree-shaking. Commented examples cover both a camera-based scene and a fullscreen shader. The low abstraction level makes the code easier to learn and extend, while leaving more WebGL details to the developer.

2026-10-26 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/ogl-a-minimal-webgl-library-for-writing-custom-shaders.md>) · [Original resource](<https://github.com/oframe/ogl>)

## [Mutative: immutable updates without the spread syntax](<https://sebastien.rigaux.be/en/tech-watch/links/mutative-immutable-updates-without-the-spread-syntax>)

Mutative lets developers write mutations against a draft to produce a new immutable state, avoiding manual spread copies at every level. It also supports arrays, `Set` and `Map`, along with patches and optional freezing.

Its benchmarks report a geometric mean 3.6 times faster than Immer with matched settings, or 6.6 times with each library’s defaults. Results vary by workload; hand-written reducers remain faster in most of the cases shown.

2026-10-23 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/mutative-immutable-updates-without-the-spread-syntax.md>) · [Original resource](<https://mutative.js.org/>)

## [Learn JavaScript and web performance patterns with Patterns.dev](<https://sebastien.rigaux.be/en/tech-watch/links/learn-javascript-and-web-performance-patterns-with-patterns-dev>)

Patterns.dev documents JavaScript design patterns and performance techniques for web apps. Its examples connect architectural choices to their impact on loading and rendering.

2026-05-10 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/learn-javascript-and-web-performance-patterns-with-patterns-dev.md>) · [Original resource](<https://www.patterns.dev/>)

## [Share atomic frontend state with Nanostores](<https://sebastien.rigaux.be/en/tech-watch/links/share-atomic-frontend-state-with-nanostores>)

Nanostores provides small composable state stores for React, Preact, Vue, and Svelte. Its atomic, tree-shakable design supports focused state without shipping unused code.

2026-05-01 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/share-atomic-frontend-state-with-nanostores.md>) · [Original resource](<https://github.com/nanostores/nanostores>)

## [Add haptic feedback to mobile web interactions](<https://sebastien.rigaux.be/en/tech-watch/links/add-haptic-feedback-to-mobile-web-interactions>)

WebHaptics adds tactile feedback to mobile web interactions through a small JavaScript API. It offers a way to make gestures feel physical without building a native app.

2026-03-04 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/add-haptic-feedback-to-mobile-web-interactions.md>) · [Original resource](<https://haptics.lochie.me/>)

## [Spacetime: explore dates, time zones and formatting](<https://sebastien.rigaux.be/en/tech-watch/links/spacetime-explore-dates-time-zones-and-formatting>)

This demo shows converting an instant between time zones and formatting it with Spacetime. It also exposes calendar and daylight-saving information useful for time-based interfaces.

2025-10-06 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/spacetime-explore-dates-time-zones-and-formatting.md>) · [Original resource](<https://work.spencermountain.dev/spacetime/>)

## [Npm-check-updates: identify newer dependency versions](<https://sebastien.rigaux.be/en/tech-watch/links/npm-check-updates-identify-newer-dependency-versions>)

Npm-check-updates compares package.json dependencies with available versions and can update their constraints. Installation remains a separate step, allowing review of the proposed changes.

2025-10-05 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/npm-check-updates-identify-newer-dependency-versions.md>) · [Original resource](<https://github.com/raineorshine/npm-check-updates>)

## [Knip: find unused dependencies, exports and files](<https://sebastien.rigaux.be/en/tech-watch/links/knip-find-unused-dependencies-exports-and-files>)

Knip analyzes project entry points and tooling to detect unused code. Framework-aware plugins make dependency, export and file cleanup more targeted.

2025-10-05 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/knip-find-unused-dependencies-exports-and-files.md>) · [Original resource](<https://knip.dev/>)

## [EmbedPDF: add a framework-independent PDF viewer](<https://sebastien.rigaux.be/en/tech-watch/links/embedpdf-add-a-framework-independent-pdf-viewer>)

EmbedPDF provides a JavaScript PDF viewer that integrates with multiple frameworks. The repository distinguishes the stable branch from ongoing development and links to demos and documentation.

2025-09-07 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/embedpdf-add-a-framework-independent-pdf-viewer.md>) · [Original resource](<https://github.com/embedpdf/embed-pdf-viewer>)

## [ForesightJS: anticipate navigation to trigger prefetching](<https://sebastien.rigaux.be/en/tech-watch/links/foresightjs-anticipate-navigation-to-trigger-prefetching>)

ForesightJS observes cursor movement, keyboard navigation and scrolling to estimate the next target. It can start loading before a click or touch interaction.

2025-08-17 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/foresightjs-anticipate-navigation-to-trigger-prefetching.md>) · [Original resource](<https://foresightjs.com/>)

## [PDFSlick: embed PDF navigation and tools in web applications](<https://sebastien.rigaux.be/en/tech-watch/links/pdfslick-embed-pdf-navigation-and-tools-in-web-applications>)

PDFSlick provides PDF viewer examples for React, Svelte, SolidJS and JavaScript. Navigation, thumbnails and zoom show how documents can become part of the application interface.

2025-05-04 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/pdfslick-embed-pdf-navigation-and-tools-in-web-applications.md>) · [Original resource](<https://pdfslick.dev/>)

## [Anime.js: coordinate timelines, gestures and scroll animation](<https://sebastien.rigaux.be/en/tech-watch/links/anime-js-coordinate-timelines-gestures-and-scroll-animation>)

Anime.js combines animation, timelines, springs and scroll observation in one API. Composition tools let developers tune properties and synchronize multiple effects.

2025-04-20 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/anime-js-coordinate-timelines-gestures-and-scroll-animation.md>) · [Original resource](<https://animejs.com/>)

## [SuperJSON: serialize dates and types missing from JSON](<https://sebastien.rigaux.be/en/tech-watch/links/superjson-serialize-dates-and-types-missing-from-json>)

SuperJSON extends JSON.stringify and JSON.parse to transport values such as Date and BigInt. It reduces manual conversions when exchanging data between server and client.

2025-02-23 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/superjson-serialize-dates-and-types-missing-from-json.md>) · [Original resource](<https://www.npmjs.com/package/superjson>)

## [ExcellentExport: export HTML tables to Excel or CSV](<https://sebastien.rigaux.be/en/tech-watch/links/excellentexport-export-html-tables-to-excel-or-csv>)

ExcellentExport turns HTML tables into Excel or CSV files directly in the browser. It adds exports to an interface without requiring a dedicated server service.

2025-02-22 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/excellentexport-export-html-tables-to-excel-or-csv.md>) · [Original resource](<https://github.com/jmaister/excellentexport>)

## [Jscanify: detect and straighten documents in JavaScript](<https://sebastien.rigaux.be/en/tech-watch/links/jscanify-detect-and-straighten-documents-in-javascript>)

Jscanify uses OpenCV.js to detect paper and correct distortion. The repository provides examples for integrating document scanning into browsers or Node.js environments.

2025-02-15 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/jscanify-detect-and-straighten-documents-in-javascript.md>) · [Original resource](<https://github.com/puffinsoft/jscanify>)

## [Preact signals for reactive state management](<https://sebastien.rigaux.be/en/tech-watch/links/preact-signals-for-reactive-state-management>)

The guide introduces signals and automatic dependency tracking in Preact. It explains how state changes update the interface without repeated manual synchronization.

2025-02-15 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/preact-signals-for-reactive-state-management.md>) · [Original resource](<https://preactjs.com/guide/v10/signals/>)

## [Generate test values with JavaScript generators](<https://sebastien.rigaux.be/en/tech-watch/links/generate-test-values-with-javascript-generators>)

This note explores composing generators to test TypeScript type predicates. It connects generated test values with checking the reliability of validation functions.

2025-01-25 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/generate-test-values-with-javascript-generators.md>) · [Original resource](<https://github.com/peter-leonov/type-predicate-generator/issues/18>)

## [Unstorage: one key-value API for multiple storage backends](<https://sebastien.rigaux.be/en/tech-watch/links/unstorage-one-key-value-api-for-multiple-storage-backends>)

Unstorage provides a common JavaScript interface for memory, filesystems, browsers and cloud services. Drivers can be mounted under different prefixes within one instance.

2025-01-05 · [Markdown](<https://sebastien.rigaux.be/en/tech-watch/links/unstorage-one-key-value-api-for-multiple-storage-backends.md>) · [Original resource](<https://unstorage.unjs.io/>)

Page 1 / 2

[Next](<https://sebastien.rigaux.be/en/tech-watch/tags/javascript/page/2>)
