Duplication checkpoints
Components that repeat each other: the same props, the same tokens, the same structure, or near copies in different feature modules.
Each checkpoint reports pass, warning, fail or skipped. A finding for a checkpoint links its section on this page.
Prop fingerprints
No identical prop signatures
duplication.prop_fingerprint.no_identical
Components whose props, names and values, are exactly the same, in groups of at least the minimum group size (2 by default, set with minGroupSize). The score is the share of components not in such a group.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or fewer than 2 components. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Merge components with identical props into one component with presets.
Low prop overlap
duplication.prop_fingerprint.overlap_ratio
Pairs of components whose prop names overlap by at least the similarity threshold (80% by default, set with similarityThreshold). The score is the share of pairs below it.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or fewer than 2 components. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Review the high-overlap pairs for consolidation.
Unique prop signatures
duplication.prop_fingerprint.unique_coverage
The number of distinct prop signatures divided by the number of components.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or no components. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Differentiate components that share a prop signature, or merge them.
Style similarity
No identical token sets
duplication.style_similarity.no_duplicate_tokens
Components, among those that use tokens, that apply exactly the same set of tokens, in groups of at least the minimum group size (2 by default, set with minGroupSize). The score is the share not in such a group.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or fewer than 2 components use tokens. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Extract shared token sets into reusable style presets.
Unique token combinations
duplication.style_similarity.token_uniqueness
The number of distinct token sets divided by the number of components that use tokens.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or no component uses tokens. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Differentiate component styling, or merge components that look the same.
Style variants are distinct
duplication.style_similarity.variant_differentiation
Pairs of components whose token sets are alike by at least the similarity threshold (80% by default). The score is the share of pairs below it.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or fewer than 2 components use tokens. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Give each variant a distinct combination of tokens.
Structural similarity
No structurally identical components
duplication.structural.no_identical
Components with structure data whose ordered child structure is exactly the same, in groups of at least the minimum group size (2 by default, set with minGroupSize). The score is the share not in such a group.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or fewer than 2 components have structure data. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Merge structurally identical components into one component with variants.
Unique structures
duplication.structural.fingerprint_uniqueness
The number of distinct structures divided by the number of components with structure data.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or no component has structure data. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Differentiate the compositions of components that share a structure, or merge them.
Names reflect structure
duplication.structural.naming_reflects_structure
Pairs of components that are structurally similar (at least the threshold, 80% by default) but whose names are less than 30% similar: often the same component built twice under different names. The score is the share of pairs not flagged.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or fewer than 2 components have structure data. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Rename or merge them so shared structure shows in the names.
Cross-module
No duplicates across modules
duplication.cross_module.no_duplicate_intent
Pairs of components in different feature modules whose combined similarity, across props, tokens and structure, reaches the threshold (80% by default). The score is the share of cross-module pairs below it.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or there are fewer than 2 modules. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Move shared components into a common module.
Module-level deduplication
duplication.cross_module.deduplication
The share of components, among those assigned to a module, that have no near duplicate in another module: no component there with a combined similarity (props, tokens and structure) at or above the threshold, 80% by default.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or there are fewer than 2 modules. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Move duplicated components to a shared package or module.
Shared extraction opportunities
duplication.cross_module.shared_extraction
Clusters of components whose combined similarity reaches the threshold (80% by default) and that span more than one module, so they could be extracted into a shared library. The score is the share of components not in such a cluster.
| Result | When |
|---|---|
| Pass | A score of 80 or more, or fewer than 2 components are assigned to a module. |
| Warning | Between 50 and 80. |
| Fail | Below 50. |
| Skipped | Not reported by this checkpoint. |
How to improve. Extract each cluster into a common library.