Before we talk about which way is the best or to be precise which is better for you let's talk about what is Native and Cross-Platform App development.
Native Development refers to building applications specific to a platform by using platform-specific tools & programming languages. When it comes to mobile development we have mainly two platforms Android & IOS, for android we have Java & Kotlin as the primary programming languages, and for IOS we have Objective-C & Swift.
Since these technologies are developed by the same companies that developed the OS you will get better compatibility and performance overall.
Support is another big thing since these tools exist as long as the operating systems exist there will be lots of information and how-to guides available for the technology which is a lifesaver exceptionally if you are a beginner.
Control over the whole application flow which process has to be executed in which thread and all the granular control over the app.
The main con of native app is that it's very costly and time-consuming to maintain different apps for different platforms.
Keeping the apps look & feel the same across the platforms can also be tricky if you are working on a really big project with multiple teams.
It's very cost-effective to maintain and develop a cross-platform as you don't have to spend money on developing and maintaining two different code bases for two different teams.
The development of the product will be a lot faster if there is a single codebase.
Cross-Platform apps are generally slower than Native apps even though the difference is not prominently visible unless you do some performance benchmarks there certainly is some difference in performance.
Limited Functionality is another major disadvantage of cross-platform apps as there are many limitations when it comes to accessing device hardware like Bluetooth, GPS, and other device sensors.
Well, there is no specific answer to which type of development you should choose it mainly depends on your application and your target audiences. If your app is mainly based on using API calls and displaying that data to users or if your app doesn't do much processing of data locally it just has to work well with the backend then cross-platform is for you since you want your app to look and behave the same across the platforms. But if your app has anything to do with different sensors then native development is the way to go.