Jasonette is 100% native. It's not easy to explain why a native approach doesn't "feel 100% native" and I know this probably won't make sense, but let me try to explain: First of all, the instagram and twitter examples I wrote are not at all optimized for performance. One way to optimize them would be if I set the dimensions manually or fix the width and height so we can get away from all the layout headaches.
Another thing is, if you built something like those demo apps (that utilize components with variable dimensions) with native, you would run into the same performance issues and you will need to optimize for performance. Basically, the layout problem is something that every native developers run into. Just look at this google search https://www.google.com/search?q=autolayout+ios&oq=autolayout+ios&aqs=chrome..69i57j0l5.2294j0j7&sourceid=chrome&ie=UTF-8#q=ios+scroll+jerky The difference is if you developed in native (with objective-c or swift or java) you can actually "write program" to do all these custom optimizations depending on what you app you're building. But as you can see from the google search results this is not a trivial task and involves some serious optimization tactics.
The whole point of Jasonette is to come up with an abstraction that can handle these things in a reusable manner so that you as a user don't have to do all this complicated programming and optimization. The framework tries its best to handle a lot of cases and it works fine for most cases when you optimize the markup, but we still have room for optimization here and there.
For example the horizontal scrolling section is not optimized enough (the last time I worked on the performance issue it was for vertically scrolling items since this was the most frequently used pattern) so that you can see some jerkiness when you scroll if you have a horizontal scrolling section in the view. This is one thing that needs improvement in the future. Anyone is welcome to take a stab and send a PR if they would like to, or otherwise I will get to it when I finish other higher priority issues.
Also as @dr42 pointed out, you can get around a lot of this by setting the dimensions of each component so we don't have to rely on autolayout. That said I do have some ideas on improving this. Here's the github issue I just created https://github.com/Jasonette/documentation/issues/62 I think I will try to carve some time out to try this
ratio approach, since i feel like it's something that doesn't require too much work to distract me far away from finishing what I'm currently working on, yet still can potentially improve the performance a lot.
Lastly, it's important to point out that a lot of these performance issue comes not from the framework itself but because of an incorrect usage of the API (like calling the
$reload action more than necessary, which is one of the most frequent mistakes I've seen from even the experienced users), which brings to my second point: even the "performance" problem in most cases stems from the fact that there's no easy way to visualize and debug what's going on underneath. And that's why we desperately need web based tools, and that's what I'm working on right now.