Skip to content

Migration Guide ​

Upgrading legacy installations to the new monorepo scoped version of AnomotionJS is simple. This guide outlines namespace overrides, import updates, and migration from Glitch v1 to Glitch v2.


1. Scoped Namespace Packages ​

Historically, all classes were bundled inside a single anomotion library. To optimize bundle tree-shaking, these have been decomposed into scoped NPM packages:

diff
- import Anomotion from 'anomotion';
+ import Anomotion from '@eldrex/anomotionjs-core';
+ import '@eldrex/anomotionjs-renderer-2d';

2. Dependency Matrix Mapping ​

Update your package dependency maps in package.json:

Legacy Package APIScoped Monorepo EquivalentInstallation
anomotion (Core)@eldrex/anomotionjs-corenpm install @eldrex/anomotionjs-core
anomotion (DOM/Canvas)@eldrex/anomotionjs-renderer-2dnpm install @eldrex/anomotionjs-renderer-2d
anomotion (ThreeJS)@eldrex/anomotionjs-renderer-3dnpm install @eldrex/anomotionjs-renderer-3d
anomotion-cache@eldrex/anomotionjs-cachenpm install @eldrex/anomotionjs-cache

3. Glitch v1 to Glitch v2 Migration ​

The glitch animation effect has been completely rewritten in v1.0.2 to resolve screen flicker, allow deterministic animations, and support accessibility standards.

Summary of Changes ​

FeatureGlitch v1Glitch v2
Flicker ControlJarring layout reflows (updating top/left)Zero reflow. GPU-accelerated layers with will-change: transform.
Color ShiftsHard color changesIndependent sub-layers using CSS mix-blend-mode: screen.
RNG RandomnessUncontrolled Math.random()Seed-based RNG for identical playback.
AccessibilityFlickered regardless of systemsRespects system-level prefers-reduced-motion settings.

API Signature Migration ​

Legacy API (v1.0.1) ​

javascript
Anomotion.create('.text', {
  effect: 'glitch',
  glitchColor: '#ff0055'
});

New API (v1.0.2) ​

javascript
Anomotion.create('.text', {
  effect: 'glitch',
  glitchIntensity: 0.3,
  glitchTiming: 'triggered', // 'triggered' | 'periodic' | 'continuous'
  seed: 42,
  colorChannels: ['#ff0055', '#00ffaa', '#0070f3'],
  exitDuration: 0.5
});

4. Registering Renderers ​

Renderers must be imported to auto-register:

HTML/DOM Renderer ​

javascript
import Anomotion from '@eldrex/anomotionjs-core';
import '@eldrex/anomotionjs-renderer-2d'; // Registers 'dom' & 'canvas'

Anomotion.create('#header', {
  renderer: 'dom',
  effect: 'wave'
});

Three.js Renderer ​

javascript
import Anomotion from '@eldrex/anomotionjs-core';
import '@eldrex/anomotionjs-renderer-3d'; // Registers 'three'

Anomotion.create('#canvas3d', {
  renderer: 'three',
  effect: 'vortex'
});