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'
});