I don’t believe developers can judge whether the strings that their software is dealing with is the Basic Multilingual Plane subset of Unicode or Unicode. I see so much broken string handling, even in apps that claim to be Unicode savvy. Either you are dealing with a Unicode string or you are using a different encoding standard entirely.
It’s easy to pretend the Basic Multilingual Plane is enough and you can have a simpler API than String while still supporting the world’s languages. But the complexity is real and it does not go away. Supporting this subset is not supporting Unicode and it offloads the complexity to the end users who now have to deal with string encoding instead of the developer.