Bird
Raised Fist0
Angularframework~8 mins

Why signals are introduced in Angular - Performance Evidence

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Performance: Why signals are introduced
HIGH IMPACT
Signals improve how Angular tracks changes, reducing unnecessary work during rendering and speeding up user interactions.
Updating UI reactively with minimal performance cost
Angular
import { signal } from '@angular/core';
class MyComponent {
  data = signal([]);
  updateData(newData) {
    this.data.set(newData);
    // Only updates dependents of this signal
  }
}
Only components or templates depending on the signal update, reducing unnecessary checks and re-renders.
📈 Performance GainReduces change detection work by up to 80%; improves INP by minimizing blocking during user input.
Updating UI reactively with minimal performance cost
Angular
class MyComponent {
  data = [];
  updateData(newData) {
    this.data = newData;
    // Angular runs full change detection on all bindings
  }
}
Triggers Angular's full change detection cycle, causing many checks and re-renders even if only small parts changed.
📉 Performance CostBlocks rendering for 10-50ms on complex components; causes slower INP due to heavy change detection.
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Full Angular Change DetectionMany nodes checkedMultiple reflows if many bindings updateHigh paint cost due to large updates[X] Bad
Using Angular SignalsOnly dependent nodes updatedSingle or minimal reflowsLower paint cost due to scoped updates[OK] Good
Rendering Pipeline
Signals allow Angular to track exactly which parts of the UI depend on which data, so only those parts update during rendering.
Change Detection
Layout
Paint
⚠️ BottleneckChange Detection stage is most expensive when many bindings update unnecessarily.
Core Web Vital Affected
INP
Signals improve how Angular tracks changes, reducing unnecessary work during rendering and speeding up user interactions.
Optimization Tips
1Use signals to scope UI updates only to affected components.
2Avoid full Angular change detection cycles on every data change.
3Signals improve input responsiveness by reducing blocking during updates.
Performance Quiz - 3 Questions
Test your performance knowledge
How do Angular signals improve rendering performance?
ABy updating only components that depend on changed data
BBy disabling change detection entirely
CBy forcing full page reloads on data change
DBy batching all updates into one large re-render
DevTools: Performance
How to check: Record a performance profile while interacting with the app. Look for long tasks during change detection phases.
What to look for: Shorter change detection times and fewer style/layout recalculations indicate better performance with signals.

Practice

(1/5)
1. Why were signals introduced in Angular?
easy
A. To make it easier to track and react to data changes
B. To replace all Angular directives
C. To remove the need for components
D. To simplify CSS styling

Solution

  1. Step 1: Understand the purpose of signals

    Signals help Angular track changes in data and update the UI efficiently.
  2. Step 2: Compare with other options

    Replacing directives, removing components, or simplifying CSS are unrelated to signals.
  3. Final Answer:

    To make it easier to track and react to data changes -> Option A
  4. Quick Check:

    Signals improve data tracking = C [OK]
Hint: Signals help track data changes easily [OK]
Common Mistakes:
  • Thinking signals replace Angular directives
  • Confusing signals with styling tools
  • Believing signals remove components
2. Which of the following is the correct way to create a signal in Angular?
easy
A. const count = createSignal(0);
B. const count = new Signal(0);
C. const count = signal(0);
D. const count = signal.create(0);

Solution

  1. Step 1: Recall Angular signal syntax

    The correct syntax uses the function signal() to create a signal.
  2. Step 2: Check other options

    Options B, C, and D use incorrect constructors or methods not in Angular's signal API.
  3. Final Answer:

    const count = signal(0); -> Option C
  4. Quick Check:

    Use signal() function to create signals = A [OK]
Hint: Use signal() function to create signals [OK]
Common Mistakes:
  • Using new keyword with Signal
  • Calling createSignal instead of signal
  • Using dot notation like signal.create
3. Given this Angular code snippet:
const count = signal(0);
count.set(5);
console.log(count());

What will be printed in the console?
medium
A. 5
B. undefined
C. signal(0)
D. 0

Solution

  1. Step 1: Understand signal creation and update

    The signal count starts at 0, then count.set(5) updates its value to 5.
  2. Step 2: Evaluate the console.log output

    Calling count() returns the current value, which is 5 after the update.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    Signal value after set(5) = 5 [OK]
Hint: Calling signal() returns current value [OK]
Common Mistakes:
  • Thinking count() returns the initial value
  • Confusing signal object with its value
  • Expecting undefined without set call
4. What is wrong with this Angular signal code?
const count = signal(0);
count = signal(5);
medium
A. signal() cannot hold numbers
B. signal() must be called with a string
C. count() should be used instead of count
D. Signals cannot be reassigned like this

Solution

  1. Step 1: Understand signal immutability

    Signals are constants; you cannot reassign the variable holding a signal.
  2. Step 2: Check other options

    signal() accepts numbers, and count() is for reading value, not reassignment.
  3. Final Answer:

    Signals cannot be reassigned like this -> Option D
  4. Quick Check:

    Signal variables are constant references = A [OK]
Hint: Signals are constants; don't reassign them [OK]
Common Mistakes:
  • Trying to reassign signal variables
  • Confusing signal creation with value reading
  • Thinking signal only accepts strings
5. How do signals improve Angular app performance compared to traditional change detection?
hard
A. By running change detection on the entire app every time
B. By updating only the parts of the UI that depend on changed data
C. By disabling all UI updates until manual refresh
D. By removing the need for templates

Solution

  1. Step 1: Understand traditional change detection

    Traditional Angular runs change detection on many components, which can be slow.
  2. Step 2: Understand signals' selective update

    Signals update only UI parts that depend on changed data, improving speed and efficiency.
  3. Step 3: Evaluate options

    By updating only the parts of the UI that depend on changed data correctly describes signals' selective update. By disabling all UI updates until manual refresh is incorrect because signals do not disable UI updates.
  4. Final Answer:

    By updating only the parts of the UI that depend on changed data -> Option B
  5. Quick Check:

    Signals update only needed UI parts = B [OK]
Hint: Signals update only affected UI parts [OK]
Common Mistakes:
  • Thinking signals disable UI updates
  • Believing change detection runs everywhere always
  • Assuming signals remove templates