facebook / facebook/litho

fix: map equality treats missing keys as equal when mapped value is null

Open
#1,079 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.