Skip to content

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

@Nam0101

Description

@Nam0101

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions