I need to keep this short due to wife so I probably won't be able to get my full opinion across. From my experience, I believe that the additional layer of abstraction provides a faster and easier development experience upfront, but generally (not always) comes with an additional layer of bugs, troubleshooting, updates, etc. I read an article on here the other day about whether Xamarin was worth learning. I loved a comment that one user name eonil left:
What you have to deal with;
Xcode = iOS bugs + UIKit bugs
Xamarin = iOS bugs + UIKit bugs + different runtime, language, memory model abstractions + .NET bugs + P/Invoke bugs & overheads + GC inter-op bugs & overheads + C# bugs + slow followup of platform updates
Xamarin Forms = iOS bugs + UIKit bugs + different runtime, language, memory model abstractions + .NET bugs + P/Invoke bugs & overheads + GC inter-op bugs & overheads + C# bugs + slow followup of platform updates + extra UI abstraction layers + lack of fine level controls & features
https://news.ycombinator.com/item?id=12948611
While I know this is specific to Xamarin and is only an opinion, I tend to think similarly about layers of abstraction over a language. Clearly there is abstraction all over the place that I couldn’t go without, but maybe I’m not just not yet ready to accept another one.