Hey,
I think the way in-view is implemented isn't that great at the moment. But I'm not too sure how reliable the old setup is.
Take for instance I'm on a mobile device that stops javascript on scroll - I have some large padding on the bottom of a text component. The component's top is visible but the bottom element isn't. But all the text is visible - I scroll down the page quickly on my device and miss the bottom element being inview. I've read the text but because the bottom element wasn't in-view it wasn't set to complete.
Although this can happen in rare cases where styling is different - I'm not sure having it setup to fail because a theme looks different is the right approach.
Have we thought about not allowing any component to be set to ready until after the page is ready. This way you don't get page level progress updating before elements are visible. I also think the component should be responsible for setting how it should be set to in-view. Would be nice if a component could set the element - which would normally be the .component-widget. This way it's more flexible and not tied down into core code.
There's also an approach of having all the elements in a page set to _isVisible:false as a default. The way Adapt is now setup stops any component being set to complete if it's not visible. This would stop components being set to complete even if they are not shown but before the page is ready
On another point - I think each page element needs to trigger an in-view event. This would mean we can build plugins around whether certain elements are in-view and when they go out of view. I can see the power of this already with playing videos in the background based upon if an article is in-view.
Also, there's some great plugins that enable effective inview triggers
Scrollspy - used by bootstrap
viewport - looks good for all types of viewports
inview - the updated version has some great new features
Thanks,
Daryl