A letra "é" pode chegar como U+00E9 ou como U+0065 seguido de U+0301. O texto pode ter a mesma aparência, mas as sequências diferem. Se uma tabela usa comparação binária, armazenar as duas entradas sem normalizar pode permitir duas chaves para o que o produto considera o mesmo nome.
const composed = "\u00e9"
const decomposed = "e\u0301"
console.log(composed === decomposed) // false
console.log(composed === decomposed.normalize("NFC")) // true
console.log("①".normalize("NFKC")) // "1"
NFC faz decomposição canônica seguida de composição. NFKC também aplica decomposição de compatibilidade, por isso um algarismo circulado pode virar o algarismo comum. Se o produto precisa conservar essa distinção, usar NFKC na chave altera a regra de identidade.
Escolha a fronteira
Aplique a mesma forma de normalização na escrita e na busca. Se já existem chaves armazenadas, liste colisões antes de migrar. Preserve o valor original quando a apresentação exige fidelidade. Normalização também é uma operação diferente de ignorar maiúsculas, remover acentos ou detectar caracteres visualmente parecidos. Faça testes separados para as equivalências que o produto realmente aceita.