Confusion re: String vs. NSString: is there performance overhead calling NSString methods on String?

It seems a lot of String's methods are from NSString. For example, when I click "Jump to Definition" on something like String.range, Xcode shows a huge list of imports, no code. I had to go into NSString to see range, localizedStandardContains etc. Is there any overhead when calling theseNSString methods?

Methods like range returns NSRange in source code. But in my code, it returns Range, is this because some automatic conversion? Again, is there overhead in this?

Is there any documentation on String and its relationship to NSString?

String's default storage is utf8, while NSString uses utf16. The conversion back and forth is a potential performance issue.

How about Range vs. NSRange: does that incur conversion overhead?

Fory my simple need of looking for substring, case and diacritic insensitive, I can't find any method to do this on String, only there such on String?

So is it going back and forth between Swift and ObjC? Is there anyway to avoid this and stay in Swift?