TL;DR if you don’t need your mobile app to look exactly like a native app then Cordova/React/Material-UI allows you to build both a decent mobile app and web app from the same UI code base.
We’ve been developing our app for 1.5 years. We are in private beta https://clozer.ai/ Our app is a B2B sales app that integrates with Salesforce.com and is built on machine intelligence and our requirements are to have the app run on iOS, Android and web browser. We are generally less concerned with our app looking or feeling like a native app, but instead more concerned that our app behaves the same across platforms, especially from mobile to web. We also wanted to be able to share as much business logic, and ui code if possible, across the various platforms.
We initially started with Meteor 1.1/IronRouter/Cordova/Blaze/Meteoric for the mobile apps. However, this did not give us a good solution for web, and even though Meteoric generally worked, it was orphaned with no long term development and not real path forward.
When Meteor 1.3 came out we did a complete refactor of our app to ES2015 import/export structure along with a complete re-write of our client code to React/Material-UI. You can get more info on our we structure our app here.
We like the clean aspects of Material Design, but did consider pretty strongly React Bootstrap and the aforementioned Reactionic project. Reactionic had the same issues as Meteoric and as I mentioned we liked Material Design better than Bootstrap. We also considered the React Toolbox, which seems like a good alternative to Material-UI (MUI), but MUI won out for various reasons including it is supported by a real company using it versus just some consultants. There were other technical reasons as well.
MUI does not have much out of the box support for mobile layouts and the components are not really designed to responsive, but they are adding more support for this in their Next branch along with a better styling option using JSS, which we think is an elegant solution for styling long term. We were able to achieve our needs for different layouts on mobile and web by writing some layout components that use MUI’s withWidth utility and some other simple tricks so that we can build/run on web and mobile from the same code base. I’ve attached a couple of screenshots so you get the idea.
We also considered React Native, but did not feel the performance or native feel was worth the difference in development process and having a completely different code base for mobile. We have not ruled this out long term though.