Native xG Player Surface
Player Underlying Stats
Compare skaters and goalies through one shared filter contract. This route is the landing surface for the sortable player table and the entry point for player drill-down pages.
Primary Controls
These dropdowns now drive the canonical landing filter state for season span, season type, strength, score state, stat mode, and display mode. The page now also round-trips that state through the canonical URL contract for reloads and shared links, and the table now fetches through a dedicated server route. Position filtering is aligned to canonical roster codes rather than UI labels.
Loading landing rows
Preparing player underlying stats filters...
Primary controls now drive the canonical landing filter state. Mode and display changes reset the default sort for the newly active table family.
Expandable filters cover team context, venue, position, TOI threshold, mutually exclusive scope windows, and combine or split traded-player rows.
On-Ice Counts · default sort xgfPctThe landing table now requests data through /api/v1/underlying-stats/players using canonical filter, sort, and pagination params. Native row aggregation is the remaining step.