Flutter and React Native are excellent, right up to the point where they are the wrong answer.
Shared codebases pay when the app is mostly forms, lists and network calls with a house design. They stop paying when you need heavy camera work, tight platform integrations, background behaviour that fights an OEM battery manager, or sixty frames a second on a complex canvas.
We will tell you which case you are in before the contract, not during the retrospective. Sometimes the honest answer is two native codebases and a shared API.