Bird
Raised Fist0
Svelteframework~8 mins

Declaring props with export let in Svelte - Performance & Optimization

Choose your learning style10 modes available
Performance: Declaring props with export let
MEDIUM IMPACT
This affects the initial rendering speed and update responsiveness of Svelte components by controlling how data is passed and tracked.
Passing data to child components efficiently
Svelte
<script>
  export let data;
</script>
<!-- Parent passes data directly as prop -->
<Child {data} />
Direct prop passing with export let allows Svelte to track changes and update only affected parts efficiently.
📈 Performance GainSingle reflow per update, minimal paint, and faster interaction response
Passing data to child components efficiently
Svelte
<script>
  let data;
  let childRef;
</script>
<!-- Parent manually updates child via DOM or events -->
<Child bind:this={childRef} />

<!-- Parent updates child by calling methods or manipulating DOM directly -->
By not using export let, data passing is indirect and causes extra DOM manipulation or event overhead, leading to slower updates.
📉 Performance CostTriggers multiple reflows and repaints due to manual DOM changes and event handling
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Manual DOM updates or event calls for passing dataHigh - multiple direct DOM manipulationsMultiple reflows per updateHigh paint cost due to many changes[X] Bad
Using export let props for data passingLow - reactive updates onlySingle reflow per updateLow paint cost with minimal changes[OK] Good
Rendering Pipeline
When a prop is declared with export let, Svelte compiles the component to accept that prop and track its changes. On update, only the affected DOM nodes are updated, minimizing layout recalculations and paints.
→Style Calculation
→Layout
→Paint
⚠️ BottleneckLayout stage can be expensive if props cause large DOM changes
Core Web Vital Affected
INP
This affects the initial rendering speed and update responsiveness of Svelte components by controlling how data is passed and tracked.
Optimization Tips
1Always declare props with export let to enable Svelte's reactive updates.
2Avoid manual DOM manipulation for passing data to child components.
3Efficient prop declaration reduces reflows and improves interaction responsiveness.
Performance Quiz - 3 Questions
Test your performance knowledge
What is the main performance benefit of declaring props with export let in Svelte?
AIt enables Svelte to track prop changes and update DOM efficiently
BIt increases bundle size significantly
CIt disables reactive updates
DIt forces full page reload on prop change
DevTools: Performance
How to check: Record a performance profile while interacting with the component. Look for layout and paint events triggered by prop updates.
What to look for: Fewer layout recalculations and paint events indicate efficient prop usage with export let.

Practice

(1/5)
1. What does export let do inside a Svelte component's <script> block?
easy
A. It creates a local variable that cannot be changed.
B. It imports a module from another file.
C. It declares a prop that can be set from outside the component.
D. It defines a function inside the component.

Solution

  1. Step 1: Understand the role of export let

    In Svelte, export let declares a property (prop) that the parent component can pass in.
  2. Step 2: Differentiate from other uses

    Unlike local variables or imports, export let specifically exposes variables as props for customization.
  3. Final Answer:

    It declares a prop that can be set from outside the component. -> Option C
  4. Quick Check:

    Props = export let [OK]
Hint: Remember: export let means external prop [OK]
Common Mistakes:
  • Confusing export let with import statements
  • Thinking export let creates constants
  • Assuming export let defines functions
2. Which of the following is the correct syntax to declare a prop named title with a default value of "Hello" in Svelte?
easy
A. export let title = "Hello";
B. let export title = "Hello";
C. export const title = "Hello";
D. let title = export "Hello";

Solution

  1. Step 1: Recall correct syntax for props

    In Svelte, props are declared with export let followed by the variable name and optional default value.
  2. Step 2: Check each option

    export let title = "Hello"; matches the correct syntax: export let title = "Hello";. Others have wrong order or keywords.
  3. Final Answer:

    export let title = "Hello"; -> Option A
  4. Quick Check:

    export let + name + = default [OK]
Hint: Use 'export let' before variable name for props [OK]
Common Mistakes:
  • Swapping 'let' and 'export' keywords
  • Using 'const' instead of 'let' for props
  • Placing export after variable name
3. Given this Svelte component code:
<script>
  export let count = 5;
</script>

<p>Count is {count}</p>

What will be displayed if the component is used as <MyComponent count={10} />?
medium
A. Count is 5
B. Count is 10
C. Count is undefined
D. Syntax error

Solution

  1. Step 1: Understand default and passed props

    The component sets a default count of 5, but the parent passes 10, which overrides the default.
  2. Step 2: Determine rendered output

    The displayed text uses the passed value 10, so it shows "Count is 10".
  3. Final Answer:

    Count is 10 -> Option B
  4. Quick Check:

    Passed prop overrides default [OK]
Hint: Passed props override defaults [OK]
Common Mistakes:
  • Assuming default always shows ignoring passed value
  • Thinking undefined appears if prop is passed
  • Confusing syntax error with valid code
4. Identify the error in this Svelte component code:
<script>
  export let name;
  name = "John";
</script>

<p>Hello {name}</p>
medium
A. You cannot assign a value to a prop inside the component after declaration.
B. Missing default value for the prop name.
C. The export keyword should be after let.
D. The <p> tag cannot use curly braces.

Solution

  1. Step 1: Understand prop assignment rules

    Props declared with export let should not be reassigned inside the component; they come from outside.
  2. Step 2: Check the code

    The code tries to assign name = "John" after declaration, which is not allowed and causes an error.
  3. Final Answer:

    You cannot assign a value to a prop inside the component after declaration. -> Option A
  4. Quick Check:

    Props are read-only inside component [OK]
Hint: Don't reassign props inside component [OK]
Common Mistakes:
  • Trying to set default by assignment after export let
  • Confusing export let order
  • Misunderstanding template syntax
5. You want to create a Svelte component that accepts a prop items which is an array, but if no prop is passed, it should default to an empty array. Which code correctly declares this prop?
hard
A. export const items = [];
B. export let items;
if (!items) items = [];
C. let items = [];
D. export let items = [];

Solution

  1. Step 1: Set default value in prop declaration

    In Svelte, you can assign a default value directly when declaring a prop with export let.
  2. Step 2: Evaluate options

    export let items = []; correctly declares items with default empty array. export let items;
    if (!items) items = []; tries to assign after declaration, which is not allowed. let items = []; is local variable, not prop. export const items = []; uses const which is incorrect for props.
  3. Final Answer:

    export let items = []; -> Option D
  4. Quick Check:

    Default values go in export let declaration [OK]
Hint: Assign default value in export let line [OK]
Common Mistakes:
  • Assigning default after declaration
  • Using const instead of let for props
  • Not exporting the variable
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