Conditional Visibility Changes?

Did Webflow change how it handles conditional visibility?

It was my understanding that Webflow only serves the HTML of a page that is set to be visible. Meaning, elements which use conditional visibility to be hidden shouldn’t be served.

I use conditional visibility to serve a user different layouts and elements depending on toggles and settings in the CMS.

I notice that when I view my pages in dev tools there is now a class called “w-condition-invisible” and it’s setting that element to display none. Meaning it’s serving the full page and using display none to hide after the fact.

This would seem to be bad from a page loading speed perspective as well as from an SEO perspective.

I don’t remember ever seeing this? Is this a recent change?

Nope. This is how they have been doing it as far back as I can remember. You have to take this into consideration when building pages where SEO is important.

1 Like

Bummer, that’s not at all how I was hoping it would be handled. Definitely tempers my enthusiasm for the feature. Thanks for the clarification.

[EDIT/SOLVED - JUST REALISED THAT THIS WAS BECAUSE I WAS USING CONDITIONAL VISIBILITY ON THE ELEMENT, NOT A FILTER ON THE CMS ITEM]

Just came across this.

3 questions:

  1. This doesn’t appear to be true in every case. For example, I have this page: view-source:English Podcasts with Free Transcripts and Subtitles

It has 2 CMS collections. A collection of podcasts (where only FREE = TRUE is selected) and in the footer, a group of blog items (where SHOW IN FOOTER = TRUE). The blog items are all in the page, but the ones where SHOW IN FOOTER = FALSE have the condition w-condition-invisible.

Do you know why this is @webdev?

  1. @maxjoles have you managed to find a way around it?

  2. @maxjoles do you have an understanding of the impact this has on SEO? I wanted to link to my highest intent blogs from the homepage, and assume that webflow handling hiding CMS items like this now splits the link juice along every one of them

Meh, I also remembered no element in the DOM.