I have been developing in ionic for a while now and I recently switched to react native. Following are the pros and cons of using Ionic over other mobile app development framework in 2018 IMO:
TTM (time to market):
Development in ionic is really fast. It is by far the fasted tool I have personally used to create a mobile app and get it out there. Ionic team have done a great job in providing most used ready made components. You will hardly find yourself looking for UI component or icons that has already not been bundled in the framework.
Real Cross Platform development:
Since ionic apps are nothing but html/css/js running inside a webview, you really have to code your app just once. Unlike React Native; you don't have to worry about platform specific details. If you code your app in Ionic it is guaranteed to run on all the platforms.
Cordova Plugins:
Great community around cordova. Ionic provides what they call Ionic native, which is essentially a wrapped around thousands of available cordova plugins. If you develop for ionic, you can use all the existing cordova plugins out there.
Great tooling and support:
Ionic team have developed great tools around framework. Cli, debugger, ionic pro (similar to expo) etc..
Performance, Performance, Performance
This was my main (and probably the only) reason to switch to RN. Since Ionic apps are essentially web apps running inside a webview; there is limit on how much performance they can extract out of the platform. Once your app grows and you start realizing the lags and frame drops as you navigate across the apps. Even the end user would start noticing that they are actually browsing a web app rather then a native app. This could drive your users away.
So, as you guessed it's basically a trade off at the end of the day. If your app is more static and doesn't do much dynamic things like making a network call to fetch 500 items from wire and re-render them based on user input then go with Ionic. If, however your app will need do intensive computation and will need more cpu/gpu then go with RN.
time to make ionic apps for ios+ android = t code sharing = 100% performance 50%
time to make native for ios+android = 2t code sharing = 0% performance = 100%
time to make react native for ios+android =1.5t code sharing = 50% performance = upto 90%