File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -208,8 +208,18 @@ const RecyclerViewComponent = <T,>(
208208 return { index, dimensions : layout } ;
209209 } ) ;
210210
211+ const hasExceededMaxRendersWithoutCommit =
212+ renderTimeTracker . hasExceededMaxRendersWithoutCommit ( ) ;
213+
214+ if ( hasExceededMaxRendersWithoutCommit ) {
215+ console . warn (
216+ "FlashList: Exceeded max renders without commit, check for duplicate keys or parent being a ScrollView"
217+ ) ;
218+ }
219+
211220 if (
212- recyclerViewManager . modifyChildrenLayout ( layoutInfo , data ?. length ?? 0 )
221+ recyclerViewManager . modifyChildrenLayout ( layoutInfo , data ?. length ?? 0 ) &&
222+ ! hasExceededMaxRendersWithoutCommit
213223 ) {
214224 // Trigger re-render if layout modifications were made
215225 setRenderId ( ( prev ) => prev + 1 ) ;
Original file line number Diff line number Diff line change @@ -6,8 +6,11 @@ export class RenderTimeTracker {
66 private lastTimerStartedAt = - 1 ;
77 private maxRenderTime = 32 ; // TODO: Improve this even more
88 private defaultRenderTime = 16 ;
9+ private rendersWithoutCommit = 0 ;
10+ private maxRendersWithoutCommit = 40 ;
911
1012 startTracking ( ) {
13+ this . rendersWithoutCommit ++ ;
1114 if ( ! PlatformConfig . trackAverageRenderTimeForOffsetProjection ) {
1215 return ;
1316 }
@@ -17,6 +20,7 @@ export class RenderTimeTracker {
1720 }
1821
1922 markRenderComplete ( ) {
23+ this . rendersWithoutCommit = 0 ;
2024 if ( ! PlatformConfig . trackAverageRenderTimeForOffsetProjection ) {
2125 return ;
2226 }
@@ -26,6 +30,10 @@ export class RenderTimeTracker {
2630 }
2731 }
2832
33+ hasExceededMaxRendersWithoutCommit ( ) {
34+ return this . rendersWithoutCommit >= this . maxRendersWithoutCommit ;
35+ }
36+
2937 getRawValue ( ) {
3038 return this . renderTimeAvgWindow . currentValue ;
3139 }
You can’t perform that action at this time.
0 commit comments