Skip to content

perf(INP/map): country-choropleth GeoJsonLayers tessellate all countries when active — candidate for viewport-cull (#4561 U3 audit finding) #4601

Description

@koala73

Surfaced by the #4561 (PR #4600) heavy-layer audit (U3). The conflict-zone GeoJsonLayer was the primary unbounded tessellation and is now viewport-culled. A secondary unbounded-tessellation surface remains: the country-choropleth GeoJsonLayers render the full this.countriesGeoJsonData (every country polygon) when their overlay mode is active:

  • src/components/DeckGLMap.ts — the happiness / CII / resilience / sanctions / affected-countries choropleths (data: this.countriesGeoJsonData, ~lines 4395 / 4428 / 4449 / 4469 / 4488).

Each tessellates all country polygons on build. Unlike the conflict zones, these are only active when the specific data-overlay is toggled, so they weren't the field-INP p75 driver — but they're the same class of unbounded tessellation and a natural next target for the #4561 viewport-cull pattern (conflict-zone-cull.ts helpers are reusable).

Measure-first (KTD4): confirm via the #4558 U1 DEV timing breakdown that a choropleth build is a heavy-frame contributor before culling — this was left out of #4561's conflict-zones-primary scope deliberately. If the 07-03 re-pull or the DEV breakdown implicates a choropleth toggle, apply cullToViewport + the bbox-keyed cache to these layers.

Part of #4537 / #4487.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Standard priority, backlog or low urgency workarea:frontendFrontend components, layout, visual encodingclaudeGenerated with Claude CodeperformancePerformance optimization

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions