Skip to content

React Chrono v3.0 - #554

Merged
prabhuignoto merged 99 commits into
masterfrom
updates_31072025
Oct 15, 2025
Merged

React Chrono v3.0#554
prabhuignoto merged 99 commits into
masterfrom
updates_31072025

Conversation

@prabhuignoto

@prabhuignoto prabhuignoto commented Aug 3, 2025

Copy link
Copy Markdown
Owner

Description

React Chrono v3.0 🎉

Complete architectural evolution with powerful new features, improved performance, and enhanced developer experience


🏗️ Core Improvements

Architecture Overhaul

  • Vanilla Extract Migration - Zero-runtime CSS-in-TypeScript replacing styled-components for better performance and type
    safety
  • 🔄 Unified Context System - Single optimized provider replacing multiple contexts, reducing complexity and improving
    renders
  • 📦 Smaller Bundle Size - Eliminated runtime CSS-in-JS overhead

New Grouped API

<Chrono                                                                                                                           
  layout={{ cardWidth: 450, responsive: { enabled: true } }}                                                                      
  interaction={{ keyboardNavigation: true }}                                                                                      
  display={{ toolbar: { sticky: true } }}                                                                                         
  animation={{ slideshow: { enabled: true, duration: 4000 } }}                                                                    
/>                                                                                                                                
  • Props organized into 9 logical categories for better discoverability
  • Full backward compatibility with v2.x props
  • Enhanced IDE autocomplete and type safety

New Features

🔤 Google Fonts Integration - Dynamic loading with per-element weight/style control
🌍 Comprehensive i18n - 40+ configurable text elements across 11 categories
🖥️ Fullscreen Mode - Cross-browser support with keyboard shortcuts
🌙 Enhanced Dark Mode - 25+ theme properties including shadows, glows, and search highlights
📌 Sticky Toolbar - Optional sticky positioning with configurable placement
🎴 Borderless Cards - Clean, minimal card variant
🔍 Advanced Search Config - Customizable widths and positioning


🎨 UX Enhancements

  • ⌨️ Improved keyboard navigation with better focus management
  • 🎯 Smart popover positioning with fullscreen awareness
  • 🎬 Smoother animations respecting prefers-reduced-motion
  • 📐 Enhanced responsive breakpoint behavior
  • 📏 Dynamic card remeasurement on text density changes

🧪 Testing & Quality

  • 🎭 Migrated to Playwright - Modern E2E testing with cross-browser support (Chrome, Firefox, Safari, Edge)
  • ✅ TypeScript strict mode compliance across all components

🐛 Key Bug Fixes

  • Fixed slideshow media deadlock and navigation issues
  • Resolved nested timeline rendering and icon positioning
  • Fixed dark mode text color inconsistencies
  • Improved search focus management
  • Corrected popover positioning in fullscreen mode

📚 Documentation

  • 📖 Comprehensive README with migration guides
  • 📋 Complete props reference (PROPS-REFERENCE.md)
  • 🏗️ Architecture documentation (CLAUDE.md)
  • 🎉 v3.0 release blog post (BLOG_V3.md)

🔄 Migration

100% backward compatible - All v2.x props continue to work:

// ✅ Old syntax works                                                                                                             
<Chrono cardWidth={400} disableNavOnKey={false} />                                                                                
                                                                                                                                  
// 🚀 New grouped API recommended                                                                                                 
<Chrono layout={{ cardWidth: 400 }} interaction={{ keyboardNavigation: true }} />                                                 

📦 Stats

  • 1,040 files changed
  • 283,184 additions
  • 93,816 deletions
  • Upgraded all dependencies to latest stable versions
  • Node.js 22+ required

🔗 Resources

Related Issue(s)

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactor (non-breaking change that neither fixes a bug nor adds a feature)
  • Performance improvement
  • Styling (UI/UX changes)
  • Other (please describe):

How Has This Been Tested?

Screenshots / Screen Recordings (if applicable)

Checklist before requesting a review

  • I have read the Contributing Guidelines.
  • I have performed a self-review of my own code.
  • My code follows the style guidelines of this project.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have made corresponding changes to the documentation.
  • My changes generate no new warnings.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • Any dependent changes have been merged and published in downstream modules.
  • I have checked that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.

AI Tooling Disclosure (Optional)

Used claude-code throghout the development of this new release

  - Optimize 14 hooks with performance improvements (memoization, RAF throttling, stable callbacks)
  - Split large useTimelineNavigation into focused, composable hooks
  - Add comprehensive shared utilities for common hook patterns
  - Enhance useBackground with multi-format color support
  - Extend useEscapeKey to support multiple keys and modifiers
  - Generalize useMeasureHeight to measure any DOM property
  - Add device detection and viewport info to useWindowSize
  - Maintain backward compatibility throughout all changes
  - Fix all test failures and add comprehensive test coverage
  • Fix toolbar overflow by implementing logical control grouping (NavigationGroup, SearchGroup, ActionGroup)
  • Enhance button sizes and spacing - navigation buttons 28px → 36px, improved touch targets
  • Add proper flex-wrap behavior to prevent cutoff, controls wrap to next line intelligently
  • Improve accessibility with keyboard navigation, focus states, and ARIA labels
  • Fix search input colors for dark mode, remove unwanted hover backgrounds
  • Update popover buttons to match navigation button dimensions and styling
  • Add responsive design improvements with better mobile layout
  - Fix search input losing focus while typing by preventing aggressive refocus
  - Add smart auto-focus with 100ms delay for first search, 400ms for subsequent
  - Enhance dark mode text colors with proper theme detection fallbacks
  - Add blur prevention to maintain search focus during timeline navigation
  - Improve placeholder and autofill colors for better contrast in both themes
@vercel

vercel Bot commented Aug 3, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
react-chrono-uc7v Ready Ready Preview Comment Oct 15, 2025 8:22am

…UX improvements

  - Add fullscreen button component with proper theming and accessibility
  - Implement cross-browser fullscreen hook with comprehensive API support
  - Integrate fullscreen control into timeline toolbar
  - Fix button dimensions to match standard 36px toolbar buttons
  - Enhance search focus behavior and text color contrast in dark mode
  - Improve card content layout with better read-more functionality
  - Update popover styling and remove unnecessary margins
  - Add comprehensive test coverage for fullscreen components
…read more

  - Add vertical timeline scrolling during slideshow to keep cards visible
  - Centralize slideshow scroll logic in timeline.tsx for consistency
  - Convert read more button to link appearance (underlined text)
  - Remove button-style background, borders and shadows from read more
  - Fix slideshow card focus issues across all timeline modes
  - Replace Cypress with Playwright for improved cross-browser support
  - Add comprehensive test configurations for E2E and component testing
  - Implement advanced Playwright features (trace viewer, parallel execution)
  - Support WebKit browsers and mobile device emulation
  - Add GitHub Actions workflow with matrix builds and sharding
  - Update .gitignore to exclude Playwright test artifacts
  - Remove Cypress dependency and replace test scripts
  - Add TypeScript fixtures and helpers for test reusability
  - Add timeline-accessibility.spec.ts: keyboard navigation, ARIA attributes, screen reader support, focus
   management, color contrast, and motion accessibility
  - Add timeline-advanced-features.spec.ts: slideshow functionality, fullscreen controls, quick jump
  navigation, dark mode toggle, dynamic theme switching, responsive breakpoints, custom content, and
  dynamic loading
  - Add timeline-cardless-nested.spec.ts: cardless timeline modes, nested timeline structures, alternating
   nested layouts, and complex interaction handling
  - Add timeline-media.spec.ts: media-rich timelines, image/video content, YouTube integration, media
  loading states, error handling, and media settings configuration
  - Add timeline-navigation-controls.spec.ts: navigation buttons, timeline item selection, toolbar
  controls, scroll-based navigation, touch/mobile interactions, search filtering, and position navigation
  - Add timeline-performance.spec.ts: load performance testing, interaction responsiveness, memory usage
  monitoring, media loading optimization, animation performance, resource loading, stress testing, and
  performance monitoring
  - Add timeline-theme-responsive.spec.ts: theme switching, dynamic theme configuration, dark mode
  support, responsive design across viewports, breakpoint behavior, high DPI support, print media, and
  color scheme preferences
  - Enhance timeline-horizontal.spec.ts: add media content testing, slideshow functionality, and theme
  toggle support

  Covers all timeline modes (horizontal, vertical, alternating), advanced features, accessibility
  compliance, performance optimization, and responsive behavior across 3050+ lines of comprehensive test
  coverage.
│   - Test theme property validation, merging, consistency, and performance                                             │
│   - Add fullscreen control component tests with proper mocking                                                        │
│   - Create comprehensive toolbar interaction and accessibility tests                                                  │
│   - Fix styled-components prop filtering with transient props                                                         │
│   - Enhance hex color validation to support 3-character formats                                                       │
│   - Update theme utility tests with proper size assertions                                                            │
│   - Improve test reliability and maintainability
…history

- Implement complete dark mode theme with blue, amber, white color scheme
- Add all 15+ dark mode properties for comprehensive theme customization
- Update README with enhanced documentation:
  - Add fullscreen functionality section with cross-browser support details
  - Expand development commands with comprehensive pnpm script documentation
  - Update testing framework section with Playwright E2E and component testing
  - Enhance features list with search, fullscreen, and accessibility improvements
- Integrate new demo into navigation with featured highlighting
- Create adaptive theme that works seamlessly in both light and dark modes
- Include proper dark mode props (darkMode, enableDarkToggle, onThemeChange)
…figuration

  - Fix CSS selector mismatches in timeline tests by updating selectors to match actual DOM
  structure
    - Replace .rc-card-title with [data-class=""] or direct element searches
    - Replace .rc-card-subtitle with .card-sub-title
    - Replace .rc-card-text with .card-description
    - Remove unnecessary .timeline-card-content wrapper selectors

  - Optimize Playwright configuration for better performance:
    - Reduce browser matrix from 7 to 1 (chromium only for now, others commented)
    - Improve parallelization: 50% CPU cores locally, 2 workers on CI
    - Reduce total test executions from ~1,085 to ~155

  - Add split context architecture for performance optimization:
    - Create separate contexts for Navigation, Theme, Media, and Layout
    - Add MigrationContextProvider for backward compatibility
    - Update components to use split contexts while maintaining legacy support
    - Add useFocusManager hook for improved focus handling

  - Update test utilities:
    - Enhance customRender with TestWrapper integration
    - Add efficient comparison utilities for props
    - Fix timeline-card-content test setup
Comment thread .github/workflows/playwright.yml Fixed
Comment thread .github/workflows/playwright.yml Fixed
Comment thread .github/workflows/playwright.yml.disabled Fixed
…act CSS

  - Create comprehensive v3.0 blog post (BLOG_V3.md) documenting all new features
  - Add DarkModeConfig interface in TimelineConfig.ts for better type organization
  - Update integration tests to validate Vanilla Extract CSS bundling and application
  - Add CSS verification tests checking for design tokens and hash-based class names
  - Configure static CSS filename (style.css) for consistent imports
  - Add CSS export to package.json for proper module resolution
  - Update demo app to explicitly import Vanilla Extract styles
  - Enhance integration test documentation with Vanilla Extract specifics
  - Remove styled-components and related packages (fully migrated to Vanilla Extract)
  - Remove Husky, lint-staged, and git hook automation
  - Remove unused dev dependencies (c8, intersection-observer, semver, etc.)
  - Update package size limits (110KB -> 250KB)
  - Clean up stylelint and build configurations
  - Remove console.log debug statements from production code
  - Add ESLint rule for unused vars with underscore ignore pattern
@prabhuignoto prabhuignoto changed the title Updates_31072025 React Chrono v3.0 Oct 15, 2025
@prabhuignoto
prabhuignoto merged commit 2258405 into master Oct 15, 2025
10 checks passed
@kodiakhq
kodiakhq Bot deleted the updates_31072025 branch October 15, 2025 08:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants