Bird
Raised Fist0
Expressframework~8 mins

Status code conventions in Express - Performance & Optimization

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: Status code conventions
MEDIUM IMPACT
This affects how quickly browsers and clients understand server responses, impacting perceived responsiveness and error handling.
Sending appropriate HTTP status codes for API responses
Express
app.get('/data', (req, res) => {
  res.status(404).send({ error: 'Not found' });
});
Using 404 status clearly signals the resource is missing, so clients can handle it immediately without retries.
📈 Performance GainReduces unnecessary client retries and improves interaction responsiveness (INP).
Sending appropriate HTTP status codes for API responses
Express
app.get('/data', (req, res) => {
  res.status(200).send({ error: 'Not found' });
});
Always sending 200 OK even when there is an error confuses clients and causes extra processing or retries.
📉 Performance CostIncreases client processing time and may cause repeated requests, indirectly increasing server load.
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Incorrect status codes (e.g., 200 on error)No direct DOM impactNo reflowsNo paint cost[!] OK but causes client delays
Correct status codes (e.g., 404, 500)No direct DOM impactNo reflowsNo paint cost[OK] Improves client handling and responsiveness
Rendering Pipeline
Status codes are part of the HTTP response header and affect how browsers and clients process the response before rendering or further requests.
Network
Client Processing
Rendering
⚠️ BottleneckClient Processing stage, where incorrect status codes cause extra retries or delayed error handling.
Core Web Vital Affected
INP
This affects how quickly browsers and clients understand server responses, impacting perceived responsiveness and error handling.
Optimization Tips
1Always use the correct HTTP status code to reflect the response meaning.
2Avoid sending 200 OK for error conditions to prevent client confusion.
3Proper status codes improve client responsiveness and reduce unnecessary retries.
Performance Quiz - 3 Questions
Test your performance knowledge
Why is it important to send a 404 status code when a resource is not found?
AIt makes the server faster at processing requests.
BIt tells the client immediately the resource is missing, avoiding unnecessary retries.
CIt reduces the size of the response body.
DIt improves the visual layout of the page.
DevTools: Network
How to check: Open DevTools, go to Network tab, reload the page or API call, click the request, and check the Status Code in the headers section.
What to look for: Verify the status code matches the response context (e.g., 404 for missing resource, 500 for server error). Incorrect codes indicate potential performance or UX issues.

Practice

(1/5)
1. In Express, which status code is conventionally used to indicate a successful GET request?
easy
A. 301 Moved Permanently
B. 404 Not Found
C. 500 Internal Server Error
D. 200 OK

Solution

  1. Step 1: Understand HTTP status codes for success

    The status code 200 means the request was successful and the server returned the requested data.
  2. Step 2: Match the code to the GET request success

    For a successful GET request, 200 OK is the standard code to indicate success.
  3. Final Answer:

    200 OK -> Option D
  4. Quick Check:

    Success code for GET = 200 OK [OK]
Hint: 200 means success, use it for successful GET requests [OK]
Common Mistakes:
  • Using 404 for success
  • Using 500 for client errors
  • Confusing 301 with success
2. Which of the following is the correct way to set a 404 status code in Express?
easy
A. res.statusCode = 404; res.send('Not Found')
B. res.sendStatus(200)
C. res.status(404).send('Not Found')
D. res.code(404).send('Not Found')

Solution

  1. Step 1: Recall Express method to set status code

    Express uses res.status(code) to set the HTTP status code before sending a response.
  2. Step 2: Verify correct syntax for 404

    res.status(404).send('Not Found') correctly sets status 404 and sends the message.
  3. Final Answer:

    res.status(404).send('Not Found') -> Option C
  4. Quick Check:

    Use res.status(code) to set status [OK]
Hint: Use res.status(code) before send() to set status [OK]
Common Mistakes:
  • Using res.code() which doesn't exist
  • Setting res.statusCode directly without chaining
  • Using sendStatus(200) for 404
3. What status code will the following Express code send to the client?
app.get('/data', (req, res) => {
  res.status(201).send('Created');
});
medium
A. 201 Created
B. 404 Not Found
C. 200 OK
D. 500 Internal Server Error

Solution

  1. Step 1: Identify the status code set in the code

    The code uses res.status(201) which sets the HTTP status code to 201.
  2. Step 2: Understand the meaning of 201

    Status 201 means the request was successful and a new resource was created.
  3. Final Answer:

    201 Created -> Option A
  4. Quick Check:

    res.status(201) sends 201 Created [OK]
Hint: res.status(201) means resource created successfully [OK]
Common Mistakes:
  • Assuming default 200 status
  • Confusing 201 with 404
  • Ignoring the status() call
4. You wrote this Express code but clients always get status 200 instead of 400:
app.post('/submit', (req, res) => {
  if (!req.body.name) {
    res.status(400);
    res.send('Name is required');
  }
});

What is the main problem?
medium
A. res.send() must come before res.status()
B. res.status(400) must be followed by return to stop execution
C. 400 is not a valid status code
D. res.status() does not set the status code

Solution

  1. Step 1: Analyze the code flow after setting status 400

    res.status(400) sets the status but code continues to run after sending response.
  2. Step 2: Understand Express response behavior

    Without return, Express may continue and send default 200 later or cause errors.
  3. Final Answer:

    res.status(400) must be followed by return to stop execution -> Option B
  4. Quick Check:

    Use return after res.status().send() to stop further processing [OK]
Hint: Add return after res.status().send() to prevent default 200 [OK]
Common Mistakes:
  • Not returning after sending response
  • Calling res.send() before res.status()
  • Thinking 400 is invalid
5. You want to send a 204 No Content status after deleting a resource in Express. Which code snippet correctly does this?
hard
A. res.status(204).send()
B. res.sendStatus(204).send('Deleted')
C. res.status(204).send('Deleted')
D. res.send(204)

Solution

  1. Step 1: Understand 204 No Content meaning

    204 means success but no response body should be sent.
  2. Step 2: Choose code that sends 204 without content

    res.status(204).send() sends status 204 with empty body, which is correct.
  3. Step 3: Identify incorrect options

    res.sendStatus(204).send('Deleted') tries to chain send() after sendStatus(), which is invalid. res.status(204).send('Deleted') sends a body with 204, which breaks the rule. res.send(204) sends 204 as body, not status.
  4. Final Answer:

    res.status(204).send() -> Option A
  5. Quick Check:

    204 means no content, so send empty response [OK]
Hint: Use res.status(204).send() to send no content response [OK]
Common Mistakes:
  • Sending body with 204 status
  • Using sendStatus(204).send()
  • Sending status code as body