Promise (initial support)Baseline · Widely available
A promise represents an asynchronous operation which eventually succeeds or fails.
Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Jul 29, 2015. Widely available since Jan 29, 2018.
Browser support
DesktopChrome
1–31Not supported
32+Supportedsince Jan 14, 2014
Current: 155Edge
12+Supportedsince Jul 29, 2015
Current: 154Firefox
1–28Not supported
29+Supportedsince Apr 29, 2014
Current: 157Safari
1–7Not supported
8+Supportedsince Oct 16, 2014
Current: 27MobileChrome Android
18–31Not supported
32+Supportedsince Jan 15, 2014
Current: 155Firefox Android
4–28Not supported
29+Supportedsince Apr 29, 2014
Current: 157Safari iOS
1–7Not supported
8+Supportedsince Sep 17, 2014
Current: 27How to use
This feature is Baseline widely available — use it freely, no fallback needed.
Example
Full syntax and examples are on MDN: Promise.
Feature detection
JS · check before using
if (typeof Promise !== "undefined") {
// Promise is available
}Documentation (MDN)
Specification
Usage share
Sub-features
Support for each part of the feature (10). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| Promise | 32 | 12 | 29 | 8 | 32 | 29 | 8 |
| Promise.@@species | 51 | 79 | 48 | 10 | 51 | 48 | 10 |
| Promise.Promise | 32 | 12 | 29 | 8 | 32 | 29 | 8 |
| Promise.all | 32 | 12 | 29 | 8 | 32 | 29 | 8 |
| Promise.catch | 32 | 12 | 29 | 8 | 32 | 29 | 8 |
| Promise.incumbent_settings_object_tracking | ✕ | ✕ | 50 | ✕ | ✕ | 50 | ✕ |
| Promise.race | 32 | 12 | 29 | 8 | 32 | 29 | 8 |
| Promise.reject | 32 | 12 | 29 | 8 | 32 | 29 | 8 |
| Promise.resolve | 32 | 12 | 29 | 8 | 32 | 29 | 8 |
| Promise.then | 32 | 12 | 29 | 8 | 32 | 29 | 8 |