fix: map equality treats missing keys as equal when mapped value is null
Open
- Dominant language
- Kotlin
- Stars
- 7.8k
- Forks
- 768
- PR merge metrics
- No merged PRs in 30d
Description
## Description
`areMapsEqual` compares values via `next[key]` without verifying key presence. If `prev` has `{a: null}` and `next` has `{b: null}` (same size, different keys), `next[a]` returns `null`, the value comparison passes, and the method incorrectly returns `true`. This can cause silent diffing errors (e.g., skipping updates when maps actually changed), leading to stale UI/state.
**Severity**: `high`
**File**: `litho-core/src/main/java/com/facebook/litho/utils/MapDiffUtils.kt`
## Expected Behavior
The code should handle this case properly to avoid unexpected errors or degraded quality.
Contributor guide
Assessment
This issue has not been assessed yet.