NS-010
observedhidden-by-default
Reveal-on-scroll renders a blank page when the observer never fires
- reads as
- A page loads blank in an embedded or scripted context. Conclusion drawn: a rendering failure.
- actually
- Elements start at opacity 0 and are revealed by an IntersectionObserver callback. Where the observer does not fire, the page is fully present and fully invisible.
- blind because
- The DOM is complete and correct. Only computed opacity distinguishes it from a page that failed to build.
- the check
- Compare element count against visible count: document.querySelectorAll('.reveal').length versus those with computed opacity above zero.
- cost of missing
- A working page is diagnosed as broken. Worse, the reverse: a genuinely blank page is dismissed as this.
- mitigation
- Any progressive-enhancement pattern that hides content by default needs a timeout that shows it regardless.
- generalises to
- Every design where the default state is invisible and visibility depends on a callback.