So, is native app programming dead? To answer this question, let's list some pros and cons for both. Interestingly, the pros for one language are the con of another and vice versa.
While React Native allows you to create custom code for both platforms, it can become quite tedious as the same element on one platform and behave completely different on the other. Trying to pinpoint each one of those differences and coding them differently in different folders can create confusion. In some cases, it might be easier to develop them separately to keep a smooth workflow.
When coding for a platform natively, developers can take full advantage of a phone's technology and features. In many cases, platforms and devices vary in this respect.
The biggest struggle of developing an app is following platform guidelines. When coding in React Native, you can keep all the same back-end of an app and change the front-end design to accommodate guidelines. Instead of having two sets of code like with Native development.
Often overlooked is the hassle of explaining to an elderly relative how to use an app over the phone. Throw in different UX designs, and it gets worst. When developing with React Native, you can code to follow iOS standards and still deploy to the Google Play Store. Perhaps this is intentional to create user envy and drive conversion, but all in all, it's sometimes annoying.
I know that I am starting to sound like a broken record. Still, the natural appeal to using React Native or similar program languages is that these languages attempt to take away the hassle of developing an application twice. By having a single source code, developers can release new versions promptly and consistently.
All in all, both programming languages have their appeal. I prefer React Native for both front-end and back-end development and only run into trouble when an android device decides to render my design differently. With that said, you have to find what works best for you and your project.