Bird
Raised Fist0
Astroframework~20 mins

client:visible for viewport-based loading in Astro - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Astro Viewport Loading Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What happens when using client:visible in Astro?
Consider an Astro component with client:visible directive. What is the behavior of this component in the browser?
Astro
<MyComponent client:visible />
AThe component loads and runs its client-side JavaScript only when it enters the viewport.
BThe component loads and runs its client-side JavaScript immediately on page load.
CThe component never loads its client-side JavaScript, only static HTML is rendered.
DThe component loads client-side JavaScript after a fixed delay regardless of viewport.
Attempts:
2 left
💡 Hint
Think about when the browser detects the component is visible on screen.
📝 Syntax
intermediate
1:30remaining
Which is the correct syntax to use client:visible in Astro?
You want to load a component only when it becomes visible in the viewport. Which of the following is the correct way to write this in Astro?
A<MyComponent client:visible />
B<MyComponent client:visible={true} />
C<MyComponent client:visible='true' />
D<MyComponent clientVisible />
Attempts:
2 left
💡 Hint
Astro directives use colon syntax without values for boolean flags.
🔧 Debug
advanced
2:00remaining
Why does client:visible not trigger loading when component is already visible on page load?
You added client:visible to a component that is visible immediately on page load, but its client-side JavaScript does not run. What is the most likely cause?
Astro
<MyComponent client:visible />
AThe <code>client:visible</code> directive only works after scrolling, not on initial viewport.
BThe component is inside a container with CSS <code>display: none</code> or <code>visibility: hidden</code> on load.
CAstro does not support <code>client:visible</code> for components above the fold.
DThe component must have an explicit <code>id</code> attribute for <code>client:visible</code> to work.
Attempts:
2 left
💡 Hint
Check if CSS hides the component initially.
❓ state_output
advanced
2:00remaining
What is the state of a client:visible component before it enters the viewport?
Before a component with client:visible loads its client-side JavaScript, what is rendered and what state does it have?
Astro
<MyComponent client:visible />
AThe component is fully interactive but hidden with CSS until visible.
BThe component runs client-side JavaScript but does not render anything until visible.
COnly the static HTML from the server is rendered; no client-side interactivity or state is active.
DThe component is replaced with a loading spinner until it becomes visible.
Attempts:
2 left
💡 Hint
Think about what the browser receives before JavaScript loads.
🧠 Conceptual
expert
2:30remaining
Why choose client:visible over client:load in Astro?
Which of the following best explains the advantage of using client:visible instead of client:load for loading components?
A<code>client:visible</code> disables client-side JavaScript entirely, making the component static.
B<code>client:visible</code> loads the component immediately but delays rendering until visible, improving SEO.
C<code>client:visible</code> preloads the component's JavaScript before page load to avoid delays when scrolling.
D<code>client:visible</code> delays JavaScript loading until the component is actually seen, improving initial page load performance and reducing unused code execution.
Attempts:
2 left
💡 Hint
Consider when the JavaScript actually downloads and runs.

Practice

(1/5)
1. What does the client:visible directive do in Astro?
easy
A. It loads a component only when it appears in the user's viewport.
B. It loads a component immediately when the page loads.
C. It prevents a component from ever loading.
D. It loads a component only on server side.

Solution

  1. Step 1: Understand the purpose of client:visible

    This directive delays loading until the component is visible on screen, saving resources.
  2. Step 2: Compare options with this behavior

    Only It loads a component only when it appears in the user's viewport. matches this behavior; others describe immediate or no loading.
  3. Final Answer:

    It loads a component only when it appears in the user's viewport. -> Option A
  4. Quick Check:

    client:visible = loads on viewport [OK]
Hint: Remember: client:visible means load when visible on screen [OK]
Common Mistakes:
  • Thinking it loads immediately on page load
  • Confusing with server-side loading
  • Assuming it never loads the component
2. Which of the following is the correct syntax to load a component only when visible using Astro?
easy
A.
B.
C.
D.

Solution

  1. Step 1: Recall Astro client directives

    Astro uses client:visible to load components on visibility.
  2. Step 2: Match syntax with directive

    Only uses client:visible correctly in JSX-like syntax.
  3. Final Answer:

    <Component client:visible /> -> Option B
  4. Quick Check:

    Correct directive syntax = [OK]
Hint: Use client:visible exactly as attribute on component [OK]
Common Mistakes:
  • Using client:load instead of client:visible
  • Confusing with client:idle or client:only
  • Missing the colon in client:visible
3. Given this Astro code snippet, what will happen when the page loads?
<Image src="photo.jpg" alt="Photo" client:visible />
medium
A. The image never loads.
B. The image loads immediately when the page loads.
C. The image loads only when it scrolls into the viewport.
D. The image loads only after a user clicks it.

Solution

  1. Step 1: Understand client:visible effect on image

    The image will not load immediately but waits until visible on screen.
  2. Step 2: Analyze options for loading behavior

    The image loads only when it scrolls into the viewport. correctly states loading on scroll into viewport; others are incorrect.
  3. Final Answer:

    The image loads only when it scrolls into the viewport. -> Option C
  4. Quick Check:

    client:visible delays load until visible [OK]
Hint: client:visible delays loading until visible on screen [OK]
Common Mistakes:
  • Assuming image loads immediately
  • Thinking it loads on click
  • Believing it never loads
4. Identify the error in this Astro component usage:
<Video src="movie.mp4" client-visible />
medium
A. The src attribute is missing.
B. The directive client-visible is correct syntax.
C. The component tag should be self-closing with a slash at the end.
D. The directive should be client:visible with a colon, not a dash.

Solution

  1. Step 1: Check directive syntax

    Astro directives use colon, so client:visible is correct, not client-visible.
  2. Step 2: Verify other attributes and syntax

    The src attribute is present, and self-closing slash is optional in JSX-like syntax.
  3. Final Answer:

    The directive should be client:visible with a colon, not a dash. -> Option D
  4. Quick Check:

    Directive syntax requires colon, not dash [OK]
Hint: Use colon in client:visible, not dash [OK]
Common Mistakes:
  • Using dash instead of colon in directive
  • Thinking self-closing slash is mandatory
  • Missing src attribute (which is present here)
5. You want to optimize a page with many interactive widgets using client:visible. Which approach best improves performance without hurting user experience?
hard
A. Apply client:visible only to widgets below the fold, load above-the-fold normally.
B. Apply client:visible to all widgets, including those visible on initial load.
C. Avoid using client:visible and load all widgets immediately.
D. Use client:visible only on images, not interactive widgets.

Solution

  1. Step 1: Consider user experience for above-the-fold content

    Widgets visible immediately should load right away for smooth interaction.
  2. Step 2: Use client:visible for below-the-fold widgets

    Delaying load for widgets off-screen saves data and speeds initial load.
  3. Step 3: Evaluate options

    Apply client:visible only to widgets below the fold, load above-the-fold normally. balances performance and experience; others either delay too much or avoid optimization.
  4. Final Answer:

    Apply client:visible only to widgets below the fold, load above-the-fold normally. -> Option A
  5. Quick Check:

    Optimize below fold with client:visible, load above fold immediately [OK]
Hint: Use client:visible only for off-screen widgets to keep UX smooth [OK]
Common Mistakes:
  • Applying client:visible to all widgets including visible ones
  • Not using client:visible at all
  • Limiting client:visible only to images
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard