The behavior of evalAsync differ between platforms. In order for things to work cross platform you need to wrap your call in an IIFE and make sure to skip the final semicolon.
webView.evalAsync('(function(){ return { some: "object" }; })()', function (res) {
var obj = res && JSON.parse(res);
});
Todo
[x] Return JSON strings on iOS (instead of just freaking out for non string values)
[ ] Handle calls that are not wrapped in functions on Android
[ ] Be tolerant of syntax stuff (i.e. trailing semicolons)
Background
The behavior of evalAsync differ between platforms. In order for things to work cross platform you need to wrap your call in an IIFE and make sure to skip the final semicolon.
Todo