I can go ahead and talk about Flutter as that’s what I’m familiar with (from my limited experience).
For some context, I’m the main maintainer for Thunder, which is built purely with Flutter/Dart. I can also only speak on behalf of iOS/Android as we’re only focusing on targeting those platforms at this time.
There will undoubtedly always be some compromises when using Flutter as compared to their native counterparts. However, if your app only ever deals with handling UI and logic that is platform agnostic, then I would say that Flutter is fairly good. It makes it really easy to support both platforms and removes the need to re-write logic for each supported platform. This means you can get everything to behave pretty much the same regardless of the platform.
The moment your app needs to tie into platform specific features, it’s a mixed bag. You can either find packages that suit your needs, or write your own logic to bridge that gap. When trying to find packages, you often need to check if it supports the platforms you’re supporting as not all of them will. You also have to see how well maintained they are since most packages are from third parties and not from the Flutter team themselves. I haven’t dealt with having to write custom logic to tie into platform specific features so I can’t comment too much on that.
Hope this helps!