Choose Flutter when
You need iOS and Android with largely shared features, one delivery team, and shared maintenance without unacceptable functional trade-offs.
Choose native when
The product needs very deep platform integrations, materially different iOS and Android experiences, or technical constraints that justify separate codebases.
Decide after discovery
A framework name is not enough. Review devices, capabilities, integrations, team plan, budget, and maintenance before deciding.
Do not reduce the decision to build speed
Compare the required product on real devices. Check camera, Bluetooth, background services, and notifications, then test interface responsiveness and memory use. Flutter may still fit with a small amount of platform code; native may fit better for deep integration or an existing specialist team.
Long-term cost
Account for updates, testing, platform changes, and developer availability—not only the first release. Prototype the riskiest technical capability before committing to an architecture.
