Skip to content

chore: post-1.0 upstream reproducibility audit backlog #2

Description

@sokaluis

Summary

After publishing @cyberlz/react-date-range@1.0.0, we audited upstream PRs/issues against the current fork codebase to avoid assuming old upstream bugs still reproduce after the modernization work.

This issue tracks the post-1.0 reproducibility classification:

  • Reproducible bug → candidate for 1.0.1+
  • Verified resolved / not reproducible → no immediate action
  • Nice-to-have / feature → backlog only, requires separate proposal or design decision

Related index issue: #1


Reproducible bugs in current code

Upstream Classification Current evidence Recommended action
hypeserver/react-date-range#523 Reproducible bug src/defaultRanges.js computes startOfWeek(new Date()) / endOfWeek(new Date()) at module load without weekStartsOn; DefinedRange static ranges therefore ignore runtime weekStartsOn. Create 1.0.1 bugfix candidate. Refactor default ranges to accept week options or generate ranges from props.
hypeserver/react-date-range#353 / #504 / #575 Reproducible bug src/utils.js::findNextRangeIndex(ranges, ...) calls ranges.findIndex(...) without guarding ranges; undefined, null, or non-array values crash. High-priority low-risk fix. Add Array.isArray(ranges) guard and regression tests.
hypeserver/react-date-range#360 + hypeserver/react-date-range#402 Reproducible bug src/components/DayCell/index.jsx marks days in range with `(!startDate

Not reproducible / verified resolved

Upstream Classification Evidence
hypeserver/react-date-range#614 Not reproducible No getAttribute calls exist in current src/ or dist/; keyboard navigation uses element.dataset.date.
hypeserver/react-date-range#454 Verified resolved showMonthAndYearPickers?: boolean exists in src/index.d.ts; Calendar supports it; npm run type-check passes.
hypeserver/react-date-range#625 Verified resolved Equivalent callback exists as onShownDateChange, typed and called in Calendar scroll/date navigation paths.
hypeserver/react-date-range#632 Verified resolved Current scroll options are typed and implemented through virtualized scrolling config.
hypeserver/react-date-range#516 Verified resolved Equivalent behavior exists as preventSnapRefocus, typed and implemented in Calendar focus logic.
hypeserver/react-date-range#443 Verified resolved Disabled dates block interaction through MonthDayCell disabled propagation and DayCell.handleMouseEvent early return.
hypeserver/react-date-range#587 Not reproducible as reported Current code uses startOfDay(endDate) in DayCell, not endOfDay; upstream report does not match current behavior. May still deserve a separate range-boundary semantics review later.

Nice-to-have / requires proposal

Upstream Classification Notes
hypeserver/react-date-range#526 Nice-to-have accessibility CSS suppresses focus outlines for nav/select/day controls without restoring visible focus rings. Keyboard behavior exists, but visual focus styling needs an a11y polish pass.
hypeserver/react-date-range#530 Needs investigation / feature Current DefinedRange only gives color styling for selected static ranges. No explicit human-readable selected range label exists. Requires UX decision on placement/format.

Proposed follow-up slices

  1. 1.0.1 bugfix batch

    • findNextRangeIndex array guard (#353/#504/#575)
    • null range visual selection guard (#360/#402)
    • weekStartsOn propagation into DefinedRange static ranges (#523)
  2. A11y polish backlog

    • visible focus rings for nav arrows, month/year selects, and day buttons (#526)
  3. UX proposal backlog

    • selected range label behavior (#530)
    • optional separate review of single-day range boundary semantics (#587), because current behavior differs from the upstream report

Verification performed during audit

  • Current tests: 159 passing
  • npm run type-check: passing
  • npm run build: passing
  • Source review of src/utils.js, src/defaultRanges.js, src/components/DayCell/index.jsx, src/components/Calendar/index.jsx, src/index.d.ts, and theme CSS

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions