# The Web APIs React and Angular Apps Need From a Browser

> Which Web APIs React and Angular apps need from a browser: the DOM, events, microtasks, timers, fetch, history and observers, the bar a new engine must clear.

Canonical: https://monok.io/blog/web-apis-react-angular-need.md

[Web Platform](https://monok.io/blog/category/web-platform)

Nemo · October 27, 2026 · 3 min read

A framework like React or Angular doesn’t need the whole web platform. It needs a solid core: the DOM, events, a correct event loop with timers and microtasks, networking, routing through the History API, storage, and a handful of observers and layout queries. Every major engine (Blink, WebKit, Gecko) has all of it, which is why Monok v1, built on the Mac’s WebKit, runs these apps the way Safari does. For a new engine, the same list is the bar to clear before any real app works, and it is the bar Monok’s paused own engine would have to meet.

## What does a React app call?

React’s DOM renderer creates and updates elements directly, so the first requirement is a fast, correct DOM:

- **Tree changes:** `document.createElement`, `createTextNode`, `appendChild`, `insertBefore`, `removeChild`, `textContent`.
- **Attributes and properties:** `setAttribute`, `removeAttribute`, element properties like `value`, `checked` and `className`, and `style` for inline styles.
- **Events:** `addEventListener` on the root container. React attaches listeners at the root and dispatches its own synthetic events from there, so event bubbling, capture and `stopPropagation` must follow the spec exactly.
- **Scheduling:** React’s scheduler uses `MessageChannel` when it exists and falls back to `setTimeout`. Promises and `queueMicrotask` must run in the right order relative to timers.

## What about Angular?

Angular uses the same DOM and events, plus two things worth calling out:

- **Change detection triggers.** Traditionally Angular relies on zone.js, which patches async APIs such as `setTimeout`, `Promise`, `addEventListener` and `XMLHttpRequest` to know when to check for changes. Newer Angular versions can also run without zone.js, using signals. An engine should support both, which mostly means its async APIs must be ordinary, patchable JavaScript functions.
- **Forms and templates.** Template-driven and reactive forms lean on input events, `focus` and `blur`, and form element properties.

## Which Web APIs do most apps use?

| API | Why apps need it | Without it |
|---|---|---|
| DOM Core and HTML elements | Rendering everything | Nothing renders |
| DOM events, `addEventListener` | Clicks, input, keyboard | Nothing responds |
| Promises, `queueMicrotask`, `setTimeout`, `setInterval` | The event loop | Updates run out of order |
| `requestAnimationFrame` | Smooth updates, animations | Janky or frozen UI |
| `MessageChannel` | React’s scheduler | React falls back to slower timers |
| `fetch`, `XMLHttpRequest`, `URL`, `URLSearchParams` | Talking to APIs | No data |
| `history.pushState`, `popstate`, `location` | Client-side routing | Links reload the page or break |
| `localStorage`, `sessionStorage`, cookies | Sessions and settings | Sign-in doesn’t stick |
| `getComputedStyle`, `getBoundingClientRect` | Measuring, popovers, tooltips | Popovers land in the wrong place |
| `MutationObserver`, `ResizeObserver`, `IntersectionObserver` | Component libraries, lazy loading | Images and lists never load |
| `TextEncoder`, `TextDecoder`, `crypto.getRandomValues`, `structuredClone` | Libraries and ids | Libraries throw at startup |
| `Intl` (dates, numbers) | Formatting | Dates and prices print wrong |

## Why did Monok v1 choose WebKit instead?

Because this list is only the start. Real apps also lean on media, canvas, workers, IndexedDB and dozens of smaller APIs, and each one an independent engine adds takes months. Building on WebKit means a React or Angular app you open in Monok gets the same engine as in Safari, while the browser’s own work goes into the interface. The trade-offs are in [why v1 runs on WebKit](https://monok.io/blog/browser-engine-without-chromium-or-webkit), and the paused engine’s plan is in the [architecture post](https://monok.io/blog/building-a-browser-engine-in-rust).

## FAQ

### Does React need a JIT-compiled JavaScript engine?

No. React runs on any engine that implements modern JavaScript correctly. A JIT makes heavy computation faster, but typical UI updates are dominated by DOM work.

### Will my React or Angular app work in Monok?

It runs on WebKit, the engine behind Safari, so an app that works in Safari should behave the same way. Monok has no developer tools or extensions of its own in v1.

### Can I keep my dev server next to the app?

Yes. A [terminal pane](https://monok.io/blog/browser-with-built-in-terminal) can sit under the page in the same tab. Get the [download](https://monok.io/download) and try it with your own app.

Early preview · macOS

Monok is a small Mac browser with a native terminal and a file manager.

Magic Bar, tmux-style panes, your own shell and ad blocking built in. Free while in preview.

 [Go to the download](https://monok.io/download)

**About this article.** Written by Nemo, who is building Monok. Performance numbers here are v1 targets unless a post says they were measured, and on what. Spotted something wrong or out of date? [Tell us](mailto:support@monok.io).

More in Web Platform

[Files](https://monok.io/blog/category/files) Oct 28, 2026 · 4 min

## [How to Show Hidden Files on Mac: Finder and Terminal](https://monok.io/blog/show-hidden-files-mac)

How to show hidden files on a Mac: the Finder shortcut Cmd+Shift+Period, the Terminal command that keeps them visible, and how to reach the Library folder.

[Terminal](https://monok.io/blog/category/terminal) Oct 27, 2026 · 5 min

## [tmux Cheat Sheet: Sessions, Windows and Split Panes](https://monok.io/blog/tmux-cheat-sheet)

A tmux cheat sheet with the default keys for sessions, windows, split panes, copy mode and config, plus how the same pane habits work in Monok on a Mac.

[Guides](https://monok.io/blog/category/guides) Oct 27, 2026 · 4 min

## [Safari Ad Blocker: How Content Blockers Work on a Mac](https://monok.io/blog/safari-ad-blocker)

How a Safari ad blocker works on a Mac: content blockers from the App Store, the privacy settings to turn on, and a WebKit browser with blocking built in.
