In meteor, all subscriptions on the client require a publication on the server with the same name. There’s only one way you can get away without publications is by using (or not removing from an empty project)
autopublish which publishes all your data to all your clients without setting up any publications or subscriptions.
You may have either accidentally copied over some publication code or have included the autopublish package in your blaze-based version.
Now about the messagelist array length vs published counts; as I’ve tried to explain in my (rather long) previous post, your client will only have the amount of data that it has subscribed to (and published by the server) and unless all data is published you will have a limited set of it, hence the misleading array length, which repreents the length of the data that had been published at the time.
Publishing all the data might make sense for apps that don’t contain too much data for the client and the network, but reasons like performance, capacity, security and such, you end up publishing only a subset of the database that is relevant for that client at that point in time. To mitigate for the lack of possibility to use “implicit” lookups like length of an array, you then need to create more “explicit” calculation and publication of the count.
Now within the meteor context, keeping track of counts and publishing them to the client require tapping into some low level primitives of the publication mechanism. That’s the reason you need to use the observe methods. But, like I’ve also pointed out in my previous post, there are packages (libraries) on atmosphere that make it easy to publish counts from your server collections.
And once again, I’d like to ensure you that non of this is relevant to blaze vs react vs vue vs angular vs whatever ui library/framework you fancy. This is all about meteor’s data system and its client/server data synchronization/delivery mechanisms which are “publication/subscription” and “meteor methods”. You can of course still use more traditional http rest endpoints or a more modern graphql approach if you want to.