Releases: tristanmanchester/react-native-dotgrid
Releases · tristanmanchester/react-native-dotgrid
v0.3.2
Changelog
0.3.2
Fixed
- Fixed non-looping animations so they freeze on the final frame instead of wrapping back to frame
0. - Corrected VU meter rendering so columns fill bottom-up consistently in both the runtime generator and the
vu()preset helper. - Fixed invalid hex palette parsing so malformed colors fall back to the default active tint instead of producing
NaNchannels in the Skia renderer. - Hardened matrix dimension handling so non-finite
rowsorcolsdegrade safely instead of hanging layout generation. - Ignored stale
onFramecallbacks that were queued before an animation pause/reset. - Limited
announceForAccessibilityto initial mount to avoid repeated screen-reader announcements on dynamic label changes. - Corrected malformed digit glyph presets for
0,1,3,6, and9. - Normalized the
normaliseFramesfallback path so it respects requestedrowsandcolslike the other code paths.
0.3.1
Fixed
- Simplified the published package README to plain markdown so npm can render it reliably on the package page.
0.3.0
Changed
- Rebuilt the library as a Skia-first renderer instead of the previous SVG + Reanimated-only implementation.
- Added an optional SVG fallback path rather than making SVG the primary rendering backend.
- Refactored the repo into a workspace layout with the published library under
packages/react-native-dotgridand the Expo app underexample. - Split animation state management from renderer drawing so Skia and SVG share the same packed-frame and shared-value pipeline.
- Tightened npm packaging so the ESM build is explicitly marked as ESM, tests are excluded from published type declarations, and the tarball only ships built artifacts and docs.
Fixed
- Fixed the native iOS startup crash caused by calling non-worklet helpers from UI-thread rendering paths in the new Skia implementation.
- Removed worklet-unsafe helper usage from both the Skia path and the SVG fallback.
- Stopped publishing test declaration files and raw source files in the npm package.
Added
- Added dedicated worklet-safe renderer helpers and regression tests covering renderer import boundaries and worklet helper behavior.
- Added packed-artifact smoke testing for the published package against a temporary Expo app.
0.2.0
Added
- Pre-generated preset constants for web API parity:
waveFrames,loaderFrames,pulseFrames,snakeFrames,rippleFrameschevronLeftFrame,chevronRightFrame
- New presets:
generatePulseFrames()/pulse()– global brightness pulse animationgenerateSnakeFrames()/snake()– snake traversal with fading tailgenerateRippleFrames()/ripple()– concentric wave effectchevronLeft(),chevronRight()– directional indicator framesvu()helper function – create static VU meter patterns from levels array
- Matrix component tests – comprehensive test suite covering all props and modes
pausedprop for controlled animation playbackpresetLabelprop for additional accessibility labeling
Changed
- BREAKING: Default
sizechanged from 12 to 10 (matches web template.md) - Documentation improvements:
- Added examples for both pre-generated constants and dynamic generators
- Documented VU meter modes (live vs static)
- Added comprehensive preset reference with options
- Example app now includes ripple demo and 3x3 showcase grid
Fixed
- Static patterns now render without Reanimated overhead
- Frame normalization handles mismatched dimensions correctly
0.1.0
Added
- Initial release with SVG + Reanimated Matrix component
- Core presets: digits, wave generator, loader, empty
- TypeScript types and utilities
- VU meter mode with live level updates
- Jest + ESLint setup
- Example Expo app skeleton
v0.3.1
Fixed
- Simplified the published package README to plain markdown so npm can render it more reliably on the package page.
- Kept the package artifact layout unchanged; this patch only adjusts the published README formatting and metadata version bump.
Notes
- This README issue predates ; earlier published versions of showed the same npm README behavior.
v0.3.0
0.3.0
Changed
- Rebuilt the library as a Skia-first renderer instead of the previous SVG + Reanimated-only implementation.
- Added an optional SVG fallback path rather than making SVG the primary rendering backend.
- Refactored the repo into a workspace layout with the published library under
packages/react-native-dotgridand the Expo app underexample. - Split animation state management from renderer drawing so Skia and SVG share the same packed-frame and shared-value pipeline.
- Tightened npm packaging so the ESM build is explicitly marked as ESM, tests are excluded from published type declarations, and the tarball only ships built artifacts and docs.
Fixed
- Fixed the native iOS startup crash caused by calling non-worklet helpers from UI-thread rendering paths in the new Skia implementation.
- Removed worklet-unsafe helper usage from both the Skia path and the SVG fallback.
- Stopped publishing test declaration files and raw source files in the npm package.
Added
- Added dedicated worklet-safe renderer helpers and regression tests covering renderer import boundaries and worklet helper behavior.
- Added packed-artifact smoke testing for the published package against a temporary Expo app.
v0.2.0 - Full Feature Parity with Web Matrix Component
🎉 Major Release: v0.2.0
This release brings full feature parity with the web Matrix component from ElevenLabs UI, plus additional React Native-specific enhancements!
✨ Highlights
- 🎯 Complete template.md implementation - All features from the web spec
- 🧪 Comprehensive test suite - 37 tests covering all functionality
- 🌐 Web platform support - Works on iOS, Android, and Web
- 📦 Pre-generated animations - Drop-in animated presets at 7×7
- 🎨 New animations - Pulse, snake, ripple, and chevron patterns
- 📸 WebP demo generation - Programmatic animation creation
🆕 New Features
Pre-generated Preset Constants (7×7)
waveFrames- 24-frame sine wave animationloaderFrames- Perimeter spinner animationpulseFrames- 16-frame brightness pulsesnakeFrames- 49-frame snake with fading tailrippleFrames- 24-frame concentric ripple effectchevronLeftFrame/chevronRightFrame- Static directional indicators
New Generator Functions
generatePulseFrames()/pulse()- Global brightness animationgenerateSnakeFrames()/snake()- Snake traversal with fading tailgenerateRippleFrames()/ripple()- Concentric wave effectchevronLeft()/chevronRight()- Directional indicatorsvu()helper - Create static VU meter patterns from levels array
Component Enhancements
pausedprop for controlled animation playbackpresetLabelprop for additional accessibility- Static patterns render without Reanimated overhead
- Frame normalization handles mismatched dimensions
🔄 Breaking Changes
- Default
sizechanged from 12 to 10 - Matches web template.md spec
📦 Installation
```bash
npm install react-native-dotgrid react-native-svg react-native-reanimated
```
🚀 Quick Start
```tsx
import { Matrix, waveFrames, digits } from 'react-native-dotgrid';
// Static digit
// Animated wave
```
📚 Documentation
See the README for comprehensive documentation with animated examples!
🙏 Acknowledgments
Inspired by the Matrix component from ElevenLabs UI.
Full Changelog: https://github.com/tristanmanchester/react-native-dotgrid/commits/v0.2.0
Full Changelog: https://github.com/tristanmanchester/react-native-dotgrid/commits/v0.2.0