JavaScript strings are UTF-16 code units. A family emoji like π¨βπ©βπ§ is actually 11 code units glued together with zero-width joiners. The classic str.split('').reverse().join('') trick splits between every code unit and produces gibberish β combining marks attach to the wrong base character, surrogate pairs become unmatched halves.
This tool uses Intl.Segmenter with granularity: 'grapheme', which implements Unicode Standard Annex #29. The result is what users perceive as "characters" β and reversing those, instead of code units, gives correct output for every script.