<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/safari-27-brings-top-level-await-and-webassembly-jspi-to-all-browsers-ajkb9qiuh" -->

---
title: Safari 27 brings top-level await and WebAssembly JSPI to...
description: Safari 27 completes cross-browser support for two long-awaited web platform features. Top-level await, part of ES2022, now works across all major browsers...
canonical: https://daily.dev/posts/safari-27-brings-top-level-await-and-webassembly-jspi-to-all-browsers-ajkb9qiuh
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Safari 27 brings top-level await and WebAssembly JSPI to all browsers | daily.dev
og:description: Safari 27 completes cross-browser support for two long-awaited web platform features. Top-level await, part of ES2022, now works across all major browsers...
og:url: https://daily.dev/posts/safari-27-brings-top-level-await-and-webassembly-jspi-to-all-browsers-ajkb9qiuh
og:image: https://api.daily.dev/og/posts/aJkB9QIuh.png
og:image:alt: Safari 27 brings top-level await and WebAssembly JSPI to all browsers
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Safari 27 brings top-level await and WebAssembly JSPI to all browsers

**[Collections](https://daily.dev/sources/collections)** · 2 min read · 2 upvotes · 0 comments

## Summary

Safari 27 completes cross-browser support for two long-awaited web platform features. Top-level await, part of ES2022, now works across all major browsers after uneven support made it unreliable to use. JSPI (JavaScript Promise Integration) for WebAssembly also lands, letting synchronous native code suspend on an async Promise. Vercel's Guillermo Rauch noted that libfx already uses JSPI to make fetch calls from native WebAssembly code, which matters more as logic increasingly moves into WebAssembly.

## Content

Safari 27 is out, and it's one of the bigger releases in recent memory - the release notes grew from 58 to 83 features since the June beta, alongside 844 bug fixes.

Here's what's worth paying attention to:

## Built-in MCP server

Safari now ships a native MCP (Model Context Protocol) server, letting coding agents like Claude Code and Codex control the browser directly. That means inspecting the DOM, watching network requests, taking screenshots, and reading console output - all without browser extensions or manual setup. It's a meaningful shift in how AI-assisted development can interact with a live browser environment.

## Top-level await, finally cross-browser

Safari 27 ships a rewritten ES module loader that properly supports top-level await. This is ES2022 syntax, and with this release it works consistently across all major browsers. It's been a long time coming.

## WebAssembly JSPI

JSPI (JavaScript Promise Integration) lets synchronous native code suspend on an async Promise. In practice, this means WebAssembly modules can use browser APIs like `fetch` without requiring the surrounding code to be rewritten as async. As more logic moves into native/Wasm layers, this kind of interop matters a lot.

## CSS and layout

- **Scroll Anchoring** - stops the page from jumping when content loads above the viewport
- **Customizable Select** - native `<select>` dropdowns can now be fully restyled using new pseudo-elements
- **Anchor positioning improvements**, the `stretch` keyword, `alpha()`, multi-color `color-mix()`, and the new `:heading` pseudo-class
- `revert-rule` for cascading control

## HTML model element and immersive environments

The `<model>` element arrives on iOS, iPadOS, and macOS, with new immersive environment support for visionOS websites.

## Other additions

- BigInt Math functions
- ReadableStream improvements
- Extensive Web Inspector, accessibility, SVG, and networking fixes

The JSPI and top-level await pieces in particular feel like infrastructure that quietly unblocks a lot of things people have been working around for years.

## Questions this post answers

### Does top-level await work in all major browsers now?

Yes, top-level await now works across all major browsers as of Safari 27, which was the last major browser holding out on full support. Top-level await was introduced in ES2022 but had uneven browser support until Safari caught up, making it previously awkward to rely on in production code.

_Developers relying on top-level await across browsers can track platform support updates like this on daily.dev._

### What is WebAssembly JSPI and why does it matter?

JSPI (JavaScript Promise Integration) lets synchronous native WebAssembly code suspend execution on an async JavaScript Promise, bridging sync native code with async browser APIs like fetch. Safari 27 completed cross-browser support for it. Vercel's Guillermo Rauch noted that libfx already uses JSPI to make API calls through the browser's fetch stack from native code.

_Teams moving logic into WebAssembly can follow JSPI adoption news like this on daily.dev._

## Similar posts on daily.dev

- [News from WWDC26: WebKit in Safari 27 beta](https://daily.dev/posts/news-from-wwdc26-webkit-in-safari-27-beta-cz81svuy5) · WebKit · 12 upvotes · 1 comments
- [Apple just turned Safari into something AI agents can control](https://daily.dev/posts/apple-just-turned-safari-into-something-ai-agents-can-control-krh7gtuhy) · The New Stack · 2 upvotes · 0 comments
- [Introducing the Safari MCP server for web developers](https://daily.dev/posts/introducing-the-safari-mcp-server-for-web-developers-cxmmljumw) · WebKit · 9 upvotes · 1 comments

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#javascript](https://daily.dev/tags/javascript), [#webassembly](https://daily.dev/tags/webassembly), [#safari](https://daily.dev/tags/safari)

[View this post on daily.dev](https://daily.dev/posts/safari-27-brings-top-level-await-and-webassembly-jspi-to-all-browsers-ajkb9qiuh)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Safari 27 brings top-level await and WebAssembly JSPI to all browsers","url":"https://daily.dev/posts/safari-27-brings-top-level-await-and-webassembly-jspi-to-all-browsers-ajkb9qiuh","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/safari-27-brings-top-level-await-and-webassembly-jspi-to-all-browsers-ajkb9qiuh"},"datePublished":"2026-09-15T21:33:37.553Z","dateModified":"2026-09-18T01:45:45.319Z","description":"Safari 27 completes cross-browser support for two long-awaited web platform features. Top-level await, part of ES2022, now works across all major browsers...","isAccessibleForFree":true,"articleSection":"Collections","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/safari-27-brings-top-level-await-and-webassembly-jspi-to-all-browsers-ajkb9qiuh","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"webdev,javascript,webassembly,safari","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"Safari 27 brings top-level await and WebAssembly JSPI to all browsers"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/safari-27-brings-top-level-await-and-webassembly-jspi-to-all-browsers-ajkb9qiuh#faq","mainEntity":[{"@type":"Question","name":"Does top-level await work in all major browsers now?","acceptedAnswer":{"@type":"Answer","text":"Yes, top-level await now works across all major browsers as of Safari 27, which was the last major browser holding out on full support. Top-level await was introduced in ES2022 but had uneven browser support until Safari caught up, making it previously awkward to rely on in production code. Developers relying on top-level await across browsers can track platform support updates like this on daily.dev."}},{"@type":"Question","name":"What is WebAssembly JSPI and why does it matter?","acceptedAnswer":{"@type":"Answer","text":"JSPI (JavaScript Promise Integration) lets synchronous native WebAssembly code suspend execution on an async JavaScript Promise, bridging sync native code with async browser APIs like fetch. Safari 27 completed cross-browser support for it. Vercel's Guillermo Rauch noted that libfx already uses JSPI to make API calls through the browser's fetch stack from native code. Teams moving logic into WebAssembly can follow JSPI adoption news like this on daily.dev."}}]}
```

