You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Honest comparison of every Pulse feature across every framework wrapper. Last detailed pass: v3.0.0-alpha.11. React Native column note (v3.0.0-alpha.22): the RN renderer shipped in alpha.22 — audioPlayback, themes, ambientEq, pulsoHeartbeat, fabBasic flip from 🛡 to ✅; fftVisualisation and backdropFilter are ⚠️ pseudo-bar / unstyled; fabDrag and prefersReducedMotion are ⏳ in subsequent patches. See packages/react-native/README.md §"What ships in rc.1" (the runtime setup playbook is archived at docs/_archive/REACT_NATIVE_RUNTIME_SETUP.md — the sprint shipped in alpha.22).
Legend
Symbol
Meaning
✅
Implemented and tested
⚠️
Implemented but with a documented caveat (substituted API, partial parity)
FAB radial menu (show-menu: palette + Pulso + Fullscreen)
✅
✅
✅
✅
✅
🛡
✅
Fullscreen API
✅
✅
✅
✅
✅
❌ (mobile native — fullscreen is the default)
✅
prefers-reduced-motion guard
✅
✅
✅
✅
✅
🛡 (AccessibilityInfo)
✅
Architecture
Feature
Vue
React
Svelte
Angular
Web Components
React Native
Vanilla HTML
Backed by @pulse-music/core audio engine
✅ (via wrapping, alpha.10+ soft)
✅
✅
✅
✅
🛡
✅
Singleton engine across all instances
✅ (Pinia)
✅
✅
✅
✅
🛡
✅
Framework-native hook / store / service
✅ useAudioStore
✅ usePulseAudio
✅ usePulseAudio
✅ getSharedEngine
—
🛡
✅ getSharedEngine
Shadow DOM isolation
— (Vue SFC)
—
—
—
✅
—
✅
Side-effect Custom Element registration
—
✅ (via @pulse-music/web-component)
✅
✅
✅
—
✅
Library / out-of-scope features
Feature
Vue
React
Svelte
Angular
Web Components
React Native
Vanilla HTML
Guided demo tour
✅ (in App.vue consumer, NOT library)
—
—
—
—
—
—
The guided demo tour is a property of the App.vue demo page at the repo root. It's deliberately not part of the @pulse-music/* library surface because:
It coordinates layout-specific scroll positions, fullscreen, and useDemoTour composable — assumptions a generic library can't bake in
Every consumer's tour requirements differ — a fixed tour API would constrain too much
The composable (src/composables/useDemoTour.ts) is still consultable as a reference if someone wants to build their own
Consumers who want a "watch demo" feature should fork the composable and tailor it to their layout.
Tests count per package
Package
Test count
Coverage type
pulse-player (root, Vue v2.3.4)
33
Pinia store + useDemoTour composable
@pulse-music/core
27
PulseEngine class
@pulse-music/tokens
11
Contract: variants, base, RGB triplets pinned
@pulse-music/web-component
22
Lit element lifecycle + 13 attribute behaviour tests