Skip to content

Conversation

@obenland
Copy link
Member

@obenland obenland commented Nov 21, 2025

Summary

Fixes two critical bugs in the infinite scroll implementation for the social-web feed while eliminating an infinite update loop.

Changes

  • Fix unclickable items during loading: Removed isLoadingMore from DataViews isLoading prop so items on page 1 remain clickable while page 2+ is loading
  • Fix page reload behavior: Don't persist paged URL parameter when infinite scroll is enabled, ensuring reloads always start from page 1 (standard infinite scroll UX)
  • Fix selection cleanup: Check allLoadedRecords instead of feed to prevent premature selection clearing during page transitions
  • Remove infinite loop: Removed actor switching effect that was causing infinite update loop due to normalizedView creating new object references on every render

Known Issue

The actor switching state cleanup (Bug 1) has been removed to prevent the infinite loop. This will need to be addressed next with a different approach that doesn't trigger the loop.

Test Plan

  • Verify no "Maximum update depth exceeded" error in console
  • Verify items on page 1 remain clickable while scrolling to load page 2
  • Verify page reload on page 3 returns to page 1
  • Test user switching behavior (known to have issues)

obenland and others added 30 commits October 29, 2025 10:37
Various dependencies have been updated to their latest versions in package-lock.json, including @InQuirer, @radix-ui, @types/node, @WordPress, and axios packages. This ensures compatibility, security, and access to new features and bug fixes.
pfefferle and others added 11 commits November 25, 2025 16:59
- Remove excerptField from imports and fields array
- Remove unused enforceContentExcerptMutualExclusion import
- Content remains in default view fields
- Delete src/social-web/components/fields/excerpt/ directory
- Remove excerpt export from fields index
- Keep excerpt data in types and hooks for content field fallback logic
This reverts commit bc94c72, reversing
changes made to 4d7eb21.
Resolved merge conflicts:
- includes/functions.php: Added Mention type handling from trunk
- includes/rest/class-inbox-controller.php: Updated get_local_recipients to use Following::get_follower_ids for public activities
- package.json: Merged dependency updates from trunk with Reader UI deps
- package-lock.json: Regenerated with npm install
Replaces usage of '_activitypub_followers' with '_activitypub_followed_by' in test cases to match updated follower tracking. Also improves the test for activities with no recipients to ensure only followers receive public activities, and adds setup/cleanup for actor mode and remote actor mocking.
@pfefferle pfefferle marked this pull request as ready for review December 8, 2025 16:59
@pfefferle pfefferle marked this pull request as draft December 8, 2025 16:59
@pfefferle pfefferle force-pushed the fix/infinite-scroll-bugs branch 2 times, most recently from 07e38f3 to da0ffbe Compare December 9, 2025 14:46
- Remove isLoadingMore from isLoading prop so items remain clickable while loading more
- Don't persist paged URL parameter when infinite scroll is enabled
- Check allLoadedRecords instead of feed for selection cleanup
- Remove actor switch effect that causes infinite update loop
@obenland
Copy link
Member Author

obenland commented Dec 9, 2025

@pfefferle I think I'd just close this and create a new one based on tanstack router

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