What changed in React Chrono from 2 to 3

9 releases numbered after 2.9.1 up to and including 3.3.3, stable releases only. 2.9.1 and 3.3.3 are the newest stable releases of 2 and 3 we track; this page follows them as new ones ship.

53 changes across 9 releases

Added 18

3.3.1

  • Add collapsible demo sidebar

3.3.0

  • Add read more/expand functionality to ContentDisplay component with overflow detection
  • Add theme and line width customization for horizontal timeline

3.2.2

  • Add comprehensive examples to Storybook

3.2.0

  • Add fine-grained control over card content alignment with horizontal and vertical options
  • Add auto card height feature to automatically size cards based on content

3.1.0

  • Expanded test coverage and documentation

3.0.0

  • Add type-safe design tokens system with sprinkles utilities for consistent styling across components
  • Add Stylelint configuration and enhanced ESLint rules
  • Introduce grouped configuration API with 9 prop categories: layout, interaction, content, display, media, animation, style, accessibility, and i18n
  • Add dynamic Google Fonts integration with automatic optimization, caching, and granular control over font families, weights, and styles per element
  • Add comprehensive internationalization with 40+ configurable text elements across 11 categories and template string support for dynamic text interpolation
  • Add fullscreen mode with cross-browser support, keyboard shortcuts, and proper portal container management
  • Expand dark mode with 25+ theme properties including button states, shadows, glows, and search highlighting, with runtime theme switching via onThemeChange callback
  • Add sticky toolbar option with configurable placement
  • Add customizable search with configurable input widths and toolbar positioning
  • Add borderless card variant design
  • Add text density control with dynamic card remeasurement when switching between compact and detailed views
Changed 23

3.3.3

  • Enhanced the Timeline card component

3.3.2

  • Migrate from pnpm to Bun

3.3.1

  • Optimize images

3.3.0

  • Enhance dynamic item updates with improved state preservation and scroll position tracking
  • Improve dark mode synchronization in TimelineContextProvider
  • Refactor design token system to consolidate semantic tokens and deprecate legacy imports
  • Improve focus behavior in timeline component with better initial render handling
  • Update CSS styles for media details expanded and minimized states
  • Enhance timeline card styles and nested timeline layout
  • Optimize component re-renders with memoization and useCallback

3.2.1

  • Modified useTimelineItemNavigation to allow scrolling to trigger regardless of slideshow state, ensuring items are properly centered when navigating during slideshow mode

3.1.0

  • Enhanced keyboard navigation across all timeline modes
  • Improved focus management and event handling
  • Refined focus ring styling on timeline items

3.0.0

  • Migrate styling system from styled-components to Vanilla Extract CSS for zero-runtime CSS-in-TypeScript and improved performance
  • Consolidate multiple context providers into a single optimized TimelineContextProvider with unified useTimelineContext() hook
  • Implement smart memoization strategies with separated static config, dynamic state, and computed values for optimized re-renders
  • Update Vite configuration with enhanced tree-shaking and bundle optimization
  • Improve TypeScript strict mode compliance across all components
  • Maintain backward compatibility with all v2.x props through automatic mapping to new API
  • Improve keyboard navigation with better focus management and visual feedback
  • Implement context-aware popover positioning with fullscreen awareness
  • Refine slideshow transitions with improved card animations and progress indicators
Fixed 11

3.3.2

  • Auto-select first timeline card in horizontal mode

3.3.1

  • Fix gaps between timeline blocks when there are few timeline items

3.3.0

  • Fix custom elements in left content
  • Fix item update handling to differentiate between appends and replacements

3.2.2

  • Configure vanilla-extract for Storybook production builds
  • Improve focus behavior and cleanup code

3.2.1

  • Enable scrolling during slideshow for proper timeline item centering

3.2.0

  • Fix links, buttons, and form inputs not working inside timeline cards
  • Fix array mutation bug causing items to be skipped during dynamic loading
  • Fix timeline not updating correctly when using Array.map() to render children dynamically
  • Verify hash-based comparison prevents circular structure errors with React components in content
Removed 1

3.3.3

  • Removed ladle and sonar dependencies

Original release notes, newest first

The list above is our reading of these notes; the originals from Prabhu Murthy are here, one fold per release.

3.3.3
What's Changed

Full Changelog: https://github.com/prabhuignoto/react-chrono/compare/3.3.2...3.3.3

View originalPermalink

3.3.2
What's Changed

Full Changelog: https://github.com/prabhuignoto/react-chrono/compare/3.3.1...3.3.2

View originalPermalink

3.3.1
What's Changed

Full Changelog: https://github.com/prabhuignoto/react-chrono/compare/3.3.0...3.3.1

View originalPermalink

3.3.0
Features
  • Add read more/expand functionality to ContentDisplay component with overflow detection
  • Enhance dynamic item updates with improved state preservation and scroll position tracking
  • Add theme and line width customization for horizontal timeline
  • Improve dark mode synchronization in TimelineContextProvider
Improvements
  • Refactor design token system: consolidate semantic tokens, deprecate legacy imports
  • Improve focus behavior in timeline component with better initial render handling
  • Update CSS styles for media details expanded/minimized states
  • Enhance timeline card styles and nested timeline layout
  • Optimize component re-renders with memoization and useCallback
Bug Fixes
  • Fix custom elements in left content (Fixes #520)
  • Fix item update handling to differentiate between appends and replacements

View originalPermalink

3.2.2
What's Changed

Full Changelog: https://github.com/prabhuignoto/react-chrono/compare/3.2.1...3.2.2

View originalPermalink

3.2.1
  • Fix: Enable scrolling during slideshow for proper timeline item centering (#559)
  • Modified useTimelineItemNavigation.ts to allow scrolling to trigger regardless of slideshow state, ensuring items are properly centered when navigating during slideshow mode
  • Updated visual snapshot for timeline point styling
  • CI: Added Dependabot GitHub workflow configuration

View originalPermalink

3.2.0
🐛 Bug Fixes
Interactive Elements (#490)

Fixed links, buttons, and form inputs not working inside timeline cards. Interactive elements now function correctly without triggering card selection.

Content Alignment (#431)

Added fine-grained control over card content alignment:

content={{ alignment: { horizontal: 'center', vertical: 'center' }}}

Dynamic Loading (#135)

Fixed array mutation bug causing items to be skipped during dynamic loading. All items now load correctly.

Array.map() Pattern (#291)

Timeline now correctly updates when using Array.map() to render children dynamically.

Circular JSON (#463)

Verified hash-based comparison prevents circular structure errors with React components in content.

✨ New Features

Auto Card Height (#498)

Cards can now automatically size based on content: layout={{ cardHeight: 'auto' }}

View originalPermalink

3.1.0
  • Enhanced keyboard navigation across all timeline modes
  • Improved focus management and event handling
  • Refined focus ring styling on timeline items
  • Expanded test coverage and documentation

Full Changelog: https://github.com/prabhuignoto/react-chrono/compare/3.0.0...3.1.0

View originalPermalink

3.0.0
v3.0.0 - Major Release

🎉 A complete architectural evolution with powerful new features, improved performance, and enhanced developer experience


🏗️ Architecture & Performance
Styling System Migration
  • Migrated to Vanilla Extract CSS - Replaced styled-components with Vanilla Extract for zero-runtime CSS-in-TypeScript, resulting in significantly improved performance and type-safe styling
  • 🎨 Type-Safe Design Tokens - Comprehensive token system with sprinkles utilities for consistent styling across components
Context System Redesign
  • 🔄 Unified Context Provider - Consolidated multiple context providers into a single optimized TimelineContextProvider, reducing complexity and improving render performance
  • 🚀 Optimized Re-renders - Smart memoization strategies with separated static config, dynamic state, and computed values
  • 💡 Enhanced Developer Experience - Simpler API with useTimelineContext() hook replacing multiple context hooks
Build & Tooling Improvements
  • 🛠️ Modern Build Pipeline - Updated Vite configuration with enhanced tree-shaking and bundle optimization
  • 📊 Code Quality - Added Stylelint configuration, enhanced ESLint rules, and improved TypeScript strict mode compliance

New Features
Grouped Configuration API
<Chrono
  layout={{ cardWidth: 450, responsive: { enabled: true } }}
  interaction={{ keyboardNavigation: true, autoScroll: true }}
  display={{ borderless: false, toolbar: { sticky: true } }}
  animation={{ slideshow: { enabled: true, duration: 4000 } }}
/>
  • 📋 Logical Organization - Props grouped into 9 intuitive categories: layout, interaction, content, display, media, animation, style, accessibility, i18n
  • 🔄 Backward Compatible - All v2.x props continue to work with automatic mapping to new API
  • 💡 Better Autocomplete - Improved IDE support with structured prop hierarchy
Google Fonts Integration
  • 🔤 Dynamic Font Loading - Seamless Google Fonts integration with automatic optimization and caching
  • 🎯 Granular Control - Configure font families, weights, and styles per element (titles, subtitles, card text)
  • Performance Optimized - Intelligent font preloading and fallback strategies
Comprehensive Internationalization
  • 🌍 40+ Configurable Text Elements - Complete i18n coverage across 11 categories (navigation, search, toolbar, media, accessibility, etc.)
  • 📝 Template String Support - Dynamic text interpolation with variables (e.g., "Page {current} of {total}")
  • 🔀 Smart Fallbacks - Intelligent default text resolution with only-override-what-you-need approach
Fullscreen Mode
  • 🖥️ Cross-Browser Support - Full-screen timeline experience with vendor prefix handling for all major browsers
  • ⌨️ Keyboard Shortcuts - ESC to exit, consistent behavior across all modes
  • 🎯 Portal Optimization - Proper portal container management for fullscreen-aware components
Enhanced Dark Mode
  • 🌙 25+ Theme Properties - Comprehensive dark mode support including button states, shadows, glows, and search highlighting
  • 🎨 Automatic Color Adaptation - Intelligent contrast handling for readability
  • 🔄 Runtime Theme Switching - Seamless dark/light mode transitions with onThemeChange callback
Advanced UI Controls
  • 📌 Sticky Toolbar - Optional sticky positioning for toolbar with configurable placement
  • 🔍 Customizable Search - Configurable search input widths and toolbar positioning
  • 🎴 Borderless Card Variant - Clean, minimal card design for modern interfaces
  • 📏 Text Density Control - Dynamic card remeasurement when switching between compact/detailed views

🎨 UX Improvements
Navigation & Interaction
  • ⌨️ Enhanced Keyboard Navigation - Improved focus management with better visual feedback
  • 🎯 Smart Popover Positioning - Context-aware popover placement with fullscreen awareness
  • 🔄 Smooth Slideshow Transitions - Refined card animations and progress indicators
  • 🖱️ Better Touch Support - Optimized touch targets and gesture handling for mobile devices
Visual Refinements
  • 🎬 Polished Animations - Smoother card reveals and transitions with respect for prefers-reduced-motion
  • 🎨 Improved Icon System - Modernized icon components with consistent sizing (16x16px standard)
  • 📐 Layout Enhancements - Better responsive breakpoint behavior and continuous timeline line in vertical mode
  • Text Overlay Improvements - Minimize/maximize controls for text-heavy content
Media Handling
  • 📷 Optimized Image Loading - Intersection observer-based lazy loading for better performance
  • 🎥 Video Player Controls - Enhanced video playback with proper state management
  • 🖼️ Responsive Media Sizing - Automatic media adaptation to card dimensions

🧪 Testing & Quality
Test Infrastructure
  • 👁️ Visual Regression - Comprehensive visual testing for UI consistency
  • 📊 Improved Coverage - Expanded test suite with integration tests for build output and demo app
Code Quality
  • TypeScript Strict Mode - Enhanced type safety with strict mode compliance across all components
  • 🔍 Comprehensive Validation - Theme property validation with edge case coverage
  • 📈 Performance Testing - Added performance benchmarks for large datasets

📚 Documentation & Developer Experience
Documentation
  • 📖 Enhanced README - Comprehensive documentation with use cases, examples, and migration guides
  • 📋 Props Reference - Complete props documentation with type definitions and examples (PROPS-REFERENCE.md)
  • 🗺️ Migration Guide - Detailed v2 to v3 migration guide with code examples
Developer Tools
  • 🎨 Redesigned Demo Site - Modern demo experience with full-width layouts and interactive examples
  • 🔧 Development Commands - Comprehensive pnpm scripts for building, testing, and linting
  • 📦 Package Management - Updated to pnpm 10.15.1 for faster installs and better dependency management

🔧 Breaking Changes

⚠️ While all v2.x props remain supported, some internal APIs have changed

  • Styled Components Removal - Internal styled-components have been replaced with Vanilla Extract (no impact on public API)
  • Context Structure - Internal context structure changed from multiple providers to unified provider (no impact if using public hooks)
  • Node.js Requirement - Minimum Node.js version updated to 18+
  • TypeScript - Enhanced type definitions may require TypeScript 4.0+ for full support

🐛 Bug Fixes
Navigation & Scrolling
  • Fixed slideshow media deadlock preventing smooth transitions
  • Resolved keyboard navigation issues with proper focus management
  • Fixed auto-scroll behavior in slideshow mode to properly scroll cards into view
  • Improved slideshow link-style "read more" button UX
Layout & Rendering
  • Fixed kitchen sink page layout inconsistencies
  • Resolved nested timeline rendering and icon positioning issues
  • Fixed responsive breakpoint behavior for vertical alternating mode
  • Corrected popover positioning issues in fullscreen mode
Theme & Styling
  • Fixed dark mode text color inconsistencies across components
  • Resolved CSS variable fallback issues in text overlay mode
  • Fixed timeline card point colors not respecting theme overrides
  • Improved contrast and readability in dark mode
Search & Focus
  • Fixed search focus management issues
  • Resolved search highlight color in dark mode
  • Improved search "no results" state handling

🔄 Migration Guide
Seamless Upgrade Path

All existing v2.x code continues to work without changes:

// ✅ v2.x syntax still works
<Chrono
  cardWidth={400}
  disableNavOnKey={false}
  borderLessCards={true}
/>

// 🚀 v3.x grouped API (recommended)
<Chrono
  layout={{ cardWidth: 400 }}
  interaction={{ keyboardNavigation: true }}
  display={{ borderless: true }}
/>
Recommended Actions
  1. ✅ Update React to 18.2+ if not already
  2. ✅ Review new grouped API for cleaner code organization
  3. ✅ Explore new features: Google Fonts, i18n, fullscreen mode
  4. ✅ Test dark mode with new theme properties
  5. ✅ Update TypeScript definitions if using custom types

📦 Dependencies
Major Updates
  • ⬆️ Upgraded all packages to latest stable versions
  • ⬆️ React 18+ and React 19 compatibility
  • ⬆️ Vite 7.x for improved build performance
  • ⬆️ Tailwind CSS 4.x (demo site)
Removed Dependencies
  • ❌ Removed unused dependencies for cleaner dependency tree
  • ❌ Removed styled-components as peer dependency (still supported for backward compatibility)
  • ❌ Removed Cypress and related testing dependencies. we will be moving to playwright pretty soon

🙏 Acknowledgments

Special thanks to all contributors who helped make v3.0 possible through bug reports, feature requests!


🔗 Resources
  • 📖 Full Documentation
  • 📋 Props Reference
  • 🎨 Migration Guide

View originalPermalink