Yes, that's a type of "feature". As a workaround you can use c:if tags that won't create components if they're not necessary. Please reply if this is acceptable for you or not.
Thank you for the reply and the suggestion. I tried it and that does solve my problem.
That does seem like a bug more than a feature though. Maybe I'm misunderstanding the intent of the render flag, but it seems to me that's the entire reason for having it - don't include this component (and any related JS or CSS) when creating output for the client request.
Thanks again for your help!
This is HTML-specific feature. Sometimes even not possible to append additional styles and scripts after page have been loaded. For example, document.write method dos not work after page loading, frameworks like jQuery requires "onload" event and so on. Since early ajax4jsf we collect all resources required by components even though component itself does not rendered.
Really, content-depended design with a lot of conditions omit base MVC pattern. For these tasks much better to create different pages for a different agent types and switch them from one controller. In this case you can use even different render kit implementations to adopt your site design for an any type of client.