Bird
Raised Fist0
Denoframework~10 mins

Islands architecture in Fresh in Deno - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the Island component correctly in Fresh.

Deno
import [1] from "./components/Counter.tsx";
Drag options to blanks, or click blank then click option'
Aisland
BIsland
CComponent
Dcounter
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase names for component imports.
Importing with a different name than exported.
2fill in blank
medium

Complete the code to mark the component as an Island in Fresh.

Deno
export default [1](Counter);
Drag options to blanks, or click blank then click option'
AwithIsland
BwithIslandClient
CwithIslandServer
DwithIslandClientOnly
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect wrapper functions like withIslandClient or withIslandServer.
Not wrapping the component at all.
3fill in blank
hard

Fix the error in the Island component usage by completing the attribute to hydrate the Island.

Deno
<Counter [1] />
Drag options to blanks, or click blank then click option'
Aclient:media
Bclient:idle
Cclient:load
Dclient:visible
Attempts:
3 left
💡 Hint
Common Mistakes
Using client:idle or client:visible which delay hydration.
Forgetting to add any client hydration attribute.
4fill in blank
hard

Fill both blanks to create a simple Island component with state and event handler.

Deno
const [count, [1]] = useState(0);

<button onClick=[2](() => setCount(count + 1))>Click</button>
Drag options to blanks, or click blank then click option'
AsetCount
BuseCallback
CuseEffect
Dincrement
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong function names for state updater.
Not wrapping the event handler with useCallback.
5fill in blank
hard

Fill all three blanks to complete the Island component export with client hydration and import.

Deno
import [1] from "preact/hooks";
import Counter from "./Counter.tsx";

export default [2](Counter, { [3]: true });
Drag options to blanks, or click blank then click option'
AuseState
BwithIsland
Cclient:load
DuseEffect
Attempts:
3 left
💡 Hint
Common Mistakes
Importing wrong hooks.
Not using withIsland to export.
Missing client hydration option.

Practice

(1/5)
1. What is the main purpose of the Islands architecture in Fresh?
easy
A. To split pages into static and interactive parts for better performance
B. To make all parts of the page fully interactive
C. To load the entire page on the client side only
D. To disable JavaScript on the page

Solution

  1. Step 1: Understand Islands architecture concept

    Islands architecture divides a web page into static parts and small interactive components called islands.
  2. Step 2: Identify the main benefit

    This split improves page speed and maintainability by only hydrating interactive parts.
  3. Final Answer:

    To split pages into static and interactive parts for better performance -> Option A
  4. Quick Check:

    Islands architecture = split static + interactive [OK]
Hint: Islands means splitting page into static and interactive parts [OK]
Common Mistakes:
  • Thinking all page parts are interactive
  • Believing Islands disables JavaScript
  • Assuming full client-side rendering
2. Which syntax correctly marks an interactive island component in Fresh?
easy
A. <ISLAND>MyComponent</ISLAND>
B. <Island>MyComponent</Island>
C. <island>MyComponent</island>
D. <ISLAND />

Solution

  1. Step 1: Recall correct tag casing

    Fresh uses uppercase ISLAND tag to mark interactive components.
  2. Step 2: Check tag usage

    The ISLAND tag wraps the component, so it needs opening and closing tags.
  3. Final Answer:

    <ISLAND>MyComponent</ISLAND> -> Option A
  4. Quick Check:

    Correct tag is uppercase ISLAND with open/close [OK]
Hint: Use uppercase <ISLAND> tags to mark interactive parts [OK]
Common Mistakes:
  • Using lowercase or mixed case tags
  • Using self-closing without children
  • Confusing with other component tags
3. Given this Fresh page snippet, what will be interactive on the rendered page?
export default function Page() {
  return (
    <main>
      <h1>Welcome</h1>
      <ISLAND><Counter /></ISLAND>
      <p>Static text</p>
    </main>
  );
}
medium
A. Nothing is interactive because ISLAND is not a valid tag
B. The entire page including the heading and paragraph is interactive
C. Only the Counter component inside the ISLAND tag is interactive
D. Only the heading is interactive

Solution

  1. Step 1: Identify ISLAND usage

    The Counter component is wrapped inside the ISLAND tag, marking it interactive.
  2. Step 2: Understand static vs interactive parts

    The heading and paragraph are outside ISLAND, so they remain static and non-interactive.
  3. Final Answer:

    Only the Counter component inside the ISLAND tag is interactive -> Option C
  4. Quick Check:

    ISLAND wraps interactive parts only [OK]
Hint: Only components inside <ISLAND> are interactive [OK]
Common Mistakes:
  • Assuming whole page is interactive
  • Thinking ISLAND tag is invalid
  • Believing static parts become interactive
4. What is wrong with this Fresh island component usage?
export default function Page() {
  return (
    <main>
      <ISLAND><Button /></ISLAND>
      <ISLAND><Button /></ISLAND>
    </main>
  );
}
medium
A. ISLAND tags must be self-closing
B. Using multiple ISLAND tags with the same component can cause duplicate hydration issues
C. Button component cannot be used inside ISLAND
D. ISLAND tags must wrap only one element, not components

Solution

  1. Step 1: Analyze multiple ISLAND usage

    Using the same interactive component multiple times inside separate ISLAND tags can cause hydration conflicts if keys are missing.
  2. Step 2: Understand hydration uniqueness

    Each island needs a unique key or identifier to avoid duplicate hydration errors.
  3. Final Answer:

    Using multiple ISLAND tags with the same component can cause duplicate hydration issues -> Option B
  4. Quick Check:

    Duplicate islands need unique keys to avoid errors [OK]
Hint: Multiple identical islands need unique keys to avoid errors [OK]
Common Mistakes:
  • Thinking ISLAND tags must be self-closing
  • Believing components can't be inside ISLAND
  • Assuming ISLAND wraps only HTML elements
5. You want to optimize a Fresh page with many interactive buttons. Which approach best uses Islands architecture to improve performance?
hard
A. Use <ISLAND> tags only on static content to reduce JavaScript
B. Wrap all buttons together in a single <ISLAND> to hydrate them all at once
C. Do not use <ISLAND> tags and hydrate the entire page client-side
D. Wrap each button in its own <ISLAND> with unique keys to hydrate only needed parts

Solution

  1. Step 1: Understand hydration granularity

    Wrapping each button in its own ISLAND allows independent hydration, improving performance by loading only needed parts.
  2. Step 2: Importance of unique keys

    Assigning unique keys to each island prevents hydration conflicts and ensures smooth interactivity.
  3. Final Answer:

    Wrap each button in its own <ISLAND> with unique keys to hydrate only needed parts -> Option D
  4. Quick Check:

    Separate islands with keys = better performance [OK]
Hint: Use separate islands with unique keys for many interactive parts [OK]
Common Mistakes:
  • Grouping all buttons in one island causing unnecessary hydration
  • Not using ISLAND tags and hydrating whole page
  • Misusing ISLAND on static content
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