Why Claspo Doesn’t Support Prototype.js
Claspo’s widgets and analytics depend on standard browser behaviour. Prototype.js is a legacy library that augments JavaScript by adding methods directly to core objects like Array
, String
, Object
and Element
. While convenient for older codebases, this technique—called “monkey‑patching”—replaces built‑in methods and can corrupt the environment for other scripts. Versions up to and including 1.7.3 (Released on September 22, 2015), for example, override Element.prototype.remove
, Array.from
, and other functions that modern scripts rely on. When those methods behave unexpectedly, Claspo’s event tracking and UI components can fail or produce inconsistent results.
Because Claspo is delivered as a single, minified script, we cannot detect or compensate for every prototype override. Loading Prototype.js on the same page effectively changes the rules of JavaScript in ways we can’t control. This leads to broken widgets, lost events or degraded performance, which is why we do not support integrating Prototype.js with our service.
Workarounds
The most reliable solution is to remove Prototype.js from pages where you embed Claspo. Modern JavaScript features (ES2015+) and small utility libraries (e.g. Lodash) provide similar functionality without modifying native objects. If you must keep Prototype.js for legacy reasons, consider isolating it: serve your legacy code from a subdomain or iframe that doesn’t load Claspo. Ultimately, avoiding global prototype modifications is the safest way to ensure Claspo operates as designed.