Skip to content

Conversation

usrbowe
Copy link

@usrbowe usrbowe commented May 30, 2024

Description

If the estimatedSize is set to 0 (could be by accident or before the final value is calculated), the FlashList would throw

RangeError: Array size is not a small enough positive integer.

Root cause code:

const estimatedItemCount = Math.max(
3,
Math.round(
(this.props.horizontal
? renderWindowSize.width
: renderWindowSize.height) /
(this.props.estimatedItemSize ?? this.defaultEstimatedItemSize)
)
);

The error is due to the using ?? instead of ||, so the estimatedItemCount would divide the renderWindowSize with 0. Then the value of estimatedItemCount would be Infinity.

This value is later passed to new instance of AverageWindow as size as Infinity.

The actual error is thrown from this line:

export class AverageWindow {
private currentAverage: number;
private currentCount: number;
private inputValues: (number | undefined)[];
private nextIndex = 0;
constructor(size: number, startValue?: number) {
this.inputValues = new Array<number>(Math.max(1, size));

Creating new Array(Math.max(1, Infinity)) would throw the RangeError.

Reviewers’ hat-rack 🎩

  • [ ]

Screenshots or videos (if needed)

Checklist

@usrbowe
Copy link
Author

usrbowe commented May 30, 2024

I have signed the CLA!

@naqvitalha
Copy link
Collaborator

Hi! 👋 Thank you for your contribution to FlashList!

We're now focusing exclusively on FlashList v2 and React Native's New Architecture. As part of this transition, we're closing older pull requests to better focus our review efforts on v2-compatible changes.

If your changes are still relevant:

  • Please verify they work with FlashList v2
  • Rebase against the latest main branch
  • Open a new PR with v2 compatibility in mind
  • We'll be happy to review it!

Resources:

We truly appreciate your effort and contribution. Thank you for helping make FlashList better! 🙏

@naqvitalha naqvitalha closed this Aug 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants