However, there's one thing keeping me from using Dart more professionally, and that's how surprisingly difficult it is to work with JSON out of the box. For a language that compiles to JS I would expect JSON interop to be as easy as "Json.Serialize" and "Json.Deserialize", but instead you need to fiddle with mirrors, add properties and metadata to classes, extend other classes, monkey around with maps and keys, add build steps, etc. This is a big showstopper when you work with web apps, and I'm slightly disappointed to not read any improvements on this front in Dart 2.0, unless I've missed something.
(Shameless plug, I wrote a very brief summary of my thoughts on Dart -- 1.2, not 2.0 -- after trying it for the first time: https://nozzlegear.com/blog/quick-thoughts-on-the-dart-langu... )