Motion preferences
The motion preference system detects and respects your comfort settings, storing them locally for future sessions.Checking motion preference
The app checks your motion preference on startup:Setting motion preference
You can update your motion preference from the system check panel:Open the system check
On the homepage, scroll to Check your device and click Open full system check.
Toggle low-motion mode
Look for the 🫧 Comfort readiness item. If your system prefers reduced motion, you’ll see:Otherwise, you can manually enable it in the performance panel.
Quality presets for comfort
The settings panel includes a Low motion quality preset that reduces particle density and shimmer:Available presets
Battery saver
Battery saver
- Max pixel ratio: 1.25x
- Render scale: 0.9x
- Particle scale: 0.65x
- Use case: Older GPUs or devices with thermal constraints
Low motion
Low motion
- Max pixel ratio: 1.5x
- Render scale: 0.95x
- Particle scale: 0.5x
- Use case: Calmer visuals with reduced particle density and shimmer
TV balanced
TV balanced
- Max pixel ratio: 1.25x
- Render scale: 0.9x
- Particle scale: 0.75x
- Use case: 10-foot viewing with lower DPI for steady frame pacing
Balanced (default)
Balanced (default)
- Max pixel ratio: 2x
- Render scale: 1x
- Particle scale: 1x
- Use case: Native look for most laptops and desktops
Hi-fi visuals
Hi-fi visuals
- Max pixel ratio: 2.5x
- Render scale: 1x
- Particle scale: 1.35x
- Use case: High-end GPUs; may increase thermal load
Reduced-motion detection
The system reads your OS-level motion preference viaprefers-reduced-motion:
Accessibility features
Audio fallback options
All audio-reactive toys support multiple input sources:- Microphone: Live input for responsive visuals
- Demo audio: No permission needed, instant playback
- YouTube tab capture: Shared audio source from a separate tab
Input flexibility
Toys support multiple input methods:Touch-first affordances
Touch-first affordances
- Multi-touch gestures for pinch, rotate, and swipe
- Touch-action defaults to prevent accidental scrolling
- Control targets sized for reliable taps (minimum 44×44px)
Keyboard navigation
Keyboard navigation
Screen reader support
Screen reader support
- Semantic HTML with ARIA labels
- Status messages announced via
aria-liveregions - Control panel headings and landmarks
Performance panel controls
The performance panel provides granular control over rendering intensity:Particle budget
Scale particle counts:1.0 keeps default counts; lower values reduce motion intensity.
Sensory-friendly defaults
Stims prioritizes sensory-friendly defaults:Clear control surfaces
Clear control surfaces
- All settings exposed in the control panel
- No hidden keyboard shortcuts required to adjust intensity
- Persistent settings across toys (stored in
localStorage)
Fallback audio
Fallback audio
- Demo audio available immediately (no permission gate)
- Microphone errors surface with recovery guidance
- YouTube tab capture for shared listening
Short, contained sessions
Short, contained sessions
- Toys load fast (pooled renderer and audio services)
- No forced onboarding or first-time tutorials
- ← Back to library link always visible in top-left
Motion comfort notes
Motion comfort notes
The README includes this guidance:
Motion comfort: the system check and performance panel surface reduced-motion guidance and quality presets so you can dial in lower-intensity visuals.
System check readiness items
The system check panel tracks four readiness categories:| Signal | Description |
|---|---|
| 🖥️ Graphics | WebGL/WebGPU availability and fallback guidance |
| 🎙️ Mic | Permission state, browser support, and demo audio fallback |
| 🧭 Motion | Device orientation API for tilt controls |
| 🫧 Comfort | Reduced-motion preference and low-motion preset recommendation |
Next steps
Performance
Adjust quality presets and pixel ratio for smooth playback
Playing toys
Browse and launch toys from the library