🎉 hey, I shipped skillcraft.ai — it shows you which dev skills are in demand

Thought you might find it useful. See what's trending, what's fading, and which skills are getting people hired.

Published
3 min read

Error.isError(): A Better Way to Check Error Types in JavaScript

Why the new Error.isError() method solves important cross-realm issues and provides more reliable error identification than instanceof

JavaScript’s error handling system has long had a blind spot when dealing with errors across different execution contexts. The new Error.isError() method addresses this limitation, providing developers with a more reliable way to identify error objects.

The traditional approach to checking if a value is an Error has been using the instanceof operator.

JavaScript
try {
// Code that might throw
} catch (e) {
if (e instanceof Error) {
// Handle error
}
}

This approach has two significant limitations:

  1. Cross-realm errors aren’t correctly identified. When an error originates from another realm (like an iframe or VM module), instanceof Error returns false because each realm has its own Error constructor.

This can lead to situations where errors are not handled correctly, as the instanceof check fails.

  1. Fake errors can pass the test. Objects with Error.prototype in their prototype chain but lacking error characteristics will be incorrectly identified as errors.

These issues can lead to inconsistent error handling and difficult-to-diagnose bugs. The new Error.isError() method provides a solution:

Instead of checking the prototype chain, Error.isError() uses a simpler and more reliable approach. It looks for a special internal marker (like a hidden ID tag) that gets added to every genuine Error object when it’s created.

This method works better than instanceof for two reasons:

  1. It correctly identifies errors even when they come from different contexts (like iframes or modules)
  2. It rejects fake objects that try to pretend they’re errors by manipulating the prototype

Think of it like checking for a manufacturer’s watermark instead of just looking at the label - it’s much harder to fake.

Typing Error.isError()

Here’s one way you could type the Error.isError() method in TypeScript:


Found this article helpful? You might enjoy my free newsletter. I share dev tips and insights to help you grow your coding skills and advance your tech career.


Check out these related articles that might be useful for you. They cover similar topics and provide additional insights.

Javascript
3 min read

navigator.clipboard - The New Asynchronous Clipboard API in JavaScript

Copy and paste text, images, and files using the new navigator.clipboard API

Dec 7, 2024
Read article
Javascript
4 min read

Understanding Bitwise Shifts in JavaScript: << and >>

A practical guide to left and right shift operators in JavaScript

Nov 12, 2024
Read article
Javascript
5 min read

Working with JavaScript's Scheduler API

Learn how to prioritize and control task execution in JavaScript using the new Scheduler API for better performance and user experience

Nov 26, 2024
Read article
Javascript
6 min read

AggregateError in JavaScript

Handle multiple errors at once

Sep 2, 2024
Read article
Javascript
4 min read

The Only Widely Recognized JavaScript Feature Ever Deprecated

The 'with' statement is the only feature ever deprecated in JavaScript

Aug 22, 2024
Read article
Javascript
6 min read

setImmediate() vs setTimeout() in JavaScript

both setImmediate() and setTimeout() are used for scheduling tasks, but they work differently.

Sep 8, 2024
Read article
Javascript
9 min read

Exploring JavaScript Symbols

Deep dive into JavaScript Symbols - what they are, why they matter, and how to use them effectively

Nov 15, 2024
Read article
Javascript
4 min read

Promise.try: Unified Error Handling for Sync and Async JavaScript Code (ES2025)

Stop mixing try/catch with Promise chains - JavaScript's new Promise.try handles return values, Promises, and errors uniformly

Nov 10, 2024
Read article
Javascript
3 min read

JavaScript's ??= Operator: Default Values Made Simple

A guide to using ??= in JavaScript to handle null and undefined values elegantly

Nov 5, 2024
Read article

This article was originally published on https://www.trevorlasn.com/blog/error-iserror-javascript. It was written by a human and polished using grammar tools for clarity.