Skip to content

Conversation

@nbudin
Copy link
Contributor

@nbudin nbudin commented Jan 30, 2026

Summary

Fixes a browser crash that occurred when viewing the signup rounds admin page with a signup round that has a null start date.

Problem

The browser tab would completely crash when navigating to /signup_rounds, making the page completely inaccessible. This was reproducible on alarpfestival2026 development environment.

Root Cause

The crash was caused by an infinite re-render loop in the ScheduledValuePreview calendar component. When a signup round has start: null, the calendar preview would calculate that both earliestChange and latestChange were the same timestamp (the only finish date in the data). This caused the component to continuously re-render, eventually crashing the browser tab.

Additionally, MaximumEventSignupsPreview wasn't passing timezoneName to parseSignupRounds, which could cause timezone inconsistencies.

Changes

  1. MaximumEventSignupsPreview.tsx: Pass timezoneName to parseSignupRounds and include it in useMemo dependencies
  2. ScheduledValuePreview.tsx: Add guard to skip calendar rendering when earliestChange === latestChange (single point in time rather than a range)

Test Plan

  • Tested with Playwright on the affected convention
  • Verified the page now loads successfully without crashing
  • Confirmed calendar preview is skipped when there's only a single timestamp
  • Page displays signup rounds correctly with the preview section showing appropriately

🤖 Generated with Claude Code

Fixes a browser crash that occurred when viewing the signup rounds admin
page with a signup round that has a null start date.

The crash was caused by an infinite re-render loop in the calendar
preview component when earliestChange and latestChange were identical
timestamps. This happened because:

1. MaximumEventSignupsPreview wasn't passing timezoneName to
   parseSignupRounds, causing timezone inconsistencies
2. ScheduledValuePreview didn't handle the case where there's only a
   single change point (not a time range)

Changes:
- MaximumEventSignupsPreview: Pass timezoneName to parseSignupRounds
  and include it in useMemo dependencies
- ScheduledValuePreview: Add guard to skip calendar rendering when
  earliestChange === latestChange

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@nbudin nbudin added bug patch Bumps the patch version number on release labels Jan 30, 2026
@github-actions
Copy link
Contributor

Code Coverage Report: Only Changed Files listed

Package Coverage
Overall Coverage 🟢 56.5%

Minimum allowed coverage is 0%, this run produced 56.5%

@nbudin nbudin merged commit 3015b9c into main Jan 30, 2026
18 checks passed
@nbudin nbudin deleted the fix-signup-rounds-crash branch January 30, 2026 19:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug patch Bumps the patch version number on release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants