fix(attribute-breakdowns): Store breakdown pagination in URL#118233
Merged
nsdeschenes merged 12 commits intoJun 25, 2026
Merged
fix(attribute-breakdowns): Store breakdown pagination in URL#118233nsdeschenes merged 12 commits into
nsdeschenes merged 12 commits into
Conversation
Move attribute breakdown search and cursor state into nuqs so pagination can be linked and reset from page-level filters. Keep the debounced search hook for request updates while clearing the cursor when the search changes. Refs EXP-1018 Co-Authored-By: Codex <noreply@openai.com>
Assert that attribute breakdown pagination writes the cursor to the URL and that changing the search clears it while updating the breakdown query parameter. Refs EXP-1018 Co-Authored-By: Codex <noreply@openai.com>
Clear the URL-backed breakdown cursor when the Explore spans query, page filters, or debounced breakdown search changes. Also reset the same cursor from the spans search submit path so API pagination cannot reuse a cursor from the previous cohort query. Refs EXP-1018 Co-Authored-By: Codex <noreply@openai.com>
Route breakdown cursor and search state through the spans query param context so cohort query changes and page filters clear stale breakdown pagination in the same path as the table cursors. Refs EXP-1018 Co-Authored-By: Codex <noreply@openai.com>
Clear the breakdown cursor when the previous pagination link points back to the first page so returning from page two reuses the uncursored first-page query. Refs EXP-1018 Co-Authored-By: Codex <noreply@openai.com>
Contributor
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit af53c69. Configure here.
Read ranked attributes and cohort totals from the API response json payload so issue detail attribute comparison renders the returned charts again. Refs EXP-1018 Co-Authored-By: Codex <noreply@openai.com>
Leave breakdown cursor and search values undefined when their URL params are absent so non-breakdown pages do not synthesize breakdown state. Refs EXP-1018 Co-Authored-By: Codex <noreply@openai.com>
Abdkhan14
approved these changes
Jun 25, 2026
Abdkhan14
left a comment
Contributor
There was a problem hiding this comment.
@nsdeschenes thanks for this. I'd verify two things:
- box persistence on refresh
- back btn navigation to prev box state
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

This PR updates attribute breakdowns to only request the visible page size and use API cursors directly instead of keeping local pages.
Migrate search and pagination state to live in nuqs-backed URL params, and page-level filters reset the breakdown cursor so filter/search changes return to the first page.
Also, migrating the comparison breakdown query hook now uses
apiOptions/selectJsonWithHeadersso both body and headers stay available consistently, and regression coverage asserts limit, cursor navigation, and search reset behavior.Closes EXP-1018