If the style arrives before the map's initial `style.load`,
`componentDidUpdate` skips `setStyle` because `state.map` is still null.
The `setState` on `style.load` is then blocked by
`shouldComponentUpdate`, because `JSON.stringify` throws on the MapLibre
`Map` in state, so the style is only applied after a later prop change,
e.g. moving the map.
Fix: `shouldComponentUpdate` compares state fields by reference instead
of stringifying them. `zoom` is excluded: it changes on every zoom frame
but is only read when a layer popup opens.
## Launch Checklist
- [x] Briefly describe the changes in this PR.
- [ ] ~~Link to related issues.~~
- [ ] ~~Include before/after visuals or gifs if this PR includes visual
changes.~~
- [ ] ~~Write tests for all new functionality.~~ (removed per review)
- [x] Add an entry to `CHANGELOG.md` under the `## main` section.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01WDkBFXcoMv8K4QSHA6P3Fg
---
_Generated by [Claude Code](https://claude.ai/code)_
---------
Co-authored-by: Claude <noreply@anthropic.com>