Minimum Good Browser Javascript List 2025
Current modern browsers have a standard of performance for javascript — a working baseline. What is the oldest browser that still upholds today’s working essence without losing or breaking or failing too much?
Great question. If by “today’s working essence” you mean: ES2015+ syntax, native ES modules (<script type="module">
), async/await, fetch, and (ideally) dynamic import()
for code-splitting—then the oldest “still fine” browsers are roughly these:
Oldest versions that still feel modern (no polyfills/build hacks)
- Chrome ≥ 63 (Dec 2017) – async/await (55), modules (61), dynamic import() (63), fetch (42). (Can I use, MDN Web Docs)
- Firefox ≥ 67 (May 2019) – modules (60), dynamic import() (67), async/await (52), fetch (39). (Can I use, MDN Web Docs)
- Safari ≥ 11.1 (Mar 2018) – modules (11), dynamic import() (11.1), async/await (11), fetch (10.1). On iOS, that’s iOS 11+. (Can I use, MDN Web Docs)
- Edge ≥ 79 (Jan 2020, Chromium Edge) – older EdgeHTML 16–18 had modules, but dynamic import() only arrives with Chromium (79). (Can I use)
That set gives you the language + loader features most modern stacks assume without “breaking too much.”
Why these cut-offs?
- Modules: broadly usable starting 2017–2018 (Chrome 61, Edge 16–18, Safari 11, Firefox 60). (Can I use)
- async/await: lands 2016–2017 across majors (Chrome 55, Firefox 52, Edge 15, Safari 11). (Can I use)
- fetch: mid-2010s (Chrome 42, Edge 14, Firefox 39, Safari 10.1). (MDN Web Docs)
- dynamic
import()
(for code-splitting and many build outputs): Chrome 63, Firefox 67, Safari 11.1; not in legacy EdgeHTML. (Can I use)
If you need top-level await
in modules, raise the floor to Chrome/Edge 89, Firefox 89, Safari 15.x (Safari is later and quirky). (Can I use)
A practical “oldest we support” Browserslist
If you must declare a hard minimum while keeping things mostly painless:
"browserslist": [
"Chrome >= 63",
"Firefox >= 67",
"Safari >= 11.1",
"iOS >= 11",
"Edge >= 79"
]
That mirrors the table above and lines up with what many “modern build” outputs expect in 2025. For broader reach, you can always transpile further—but this is the oldest set that still feels like the current web without major shims.
Footnote: IE 11 and pre-Chromium Edge (≤18) are below this bar; expect significant breakage unless you transpile/polyfill aggressively. For the language as a whole, ES2015 is widely supported now, but “modules + async/await + fetch + dynamic import” is the combo that makes the web feel modern. (Can I use)
