Skip to content

Releases: tristanmanchester/react-native-dotgrid

v0.3.2

13 Apr 12:08

Choose a tag to compare

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 NaN channels in the Skia renderer.
  • Hardened matrix dimension handling so non-finite rows or cols degrade safely instead of hanging layout generation.
  • Ignored stale onFrame callbacks that were queued before an animation pause/reset.
  • Limited announceForAccessibility to initial mount to avoid repeated screen-reader announcements on dynamic label changes.
  • Corrected malformed digit glyph presets for 0, 1, 3, 6, and 9.
  • Normalized the normaliseFrames fallback path so it respects requested rows and cols like 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-dotgrid and the Expo app under example.
  • 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, rippleFrames
    • chevronLeftFrame, chevronRightFrame
  • New presets:
    • generatePulseFrames() / pulse() – global brightness pulse animation
    • generateSnakeFrames() / snake() – snake traversal with fading tail
    • generateRippleFrames() / ripple() – concentric wave effect
    • chevronLeft(), chevronRight() – directional indicator frames
    • vu() helper function – create static VU meter patterns from levels array
  • Matrix component tests – comprehensive test suite covering all props and modes
  • paused prop for controlled animation playback
  • presetLabel prop for additional accessibility labeling

Changed

  • BREAKING: Default size changed 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

31 Mar 15:44

Choose a tag to compare

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

31 Mar 15:08

Choose a tag to compare

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-dotgrid and the Expo app under example.
  • 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

05 Nov 14:24

Choose a tag to compare

🎉 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 animation
  • loaderFrames - Perimeter spinner animation
  • pulseFrames - 16-frame brightness pulse
  • snakeFrames - 49-frame snake with fading tail
  • rippleFrames - 24-frame concentric ripple effect
  • chevronLeftFrame / chevronRightFrame - Static directional indicators

New Generator Functions

  • generatePulseFrames() / pulse() - Global brightness animation
  • generateSnakeFrames() / snake() - Snake traversal with fading tail
  • generateRippleFrames() / ripple() - Concentric wave effect
  • chevronLeft() / chevronRight() - Directional indicators
  • vu() helper - Create static VU meter patterns from levels array

Component Enhancements

  • paused prop for controlled animation playback
  • presetLabel prop for additional accessibility
  • Static patterns render without Reanimated overhead
  • Frame normalization handles mismatched dimensions

🔄 Breaking Changes

  • Default size changed 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