Skip to content

[pull] main from expo:main#977

Merged
pull[bot] merged 9 commits into
code:mainfrom
expo:main
Jun 18, 2026
Merged

[pull] main from expo:main#977
pull[bot] merged 9 commits into
code:mainfrom
expo:main

Conversation

@pull

@pull pull Bot commented Jun 18, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

jakex7 and others added 9 commits June 18, 2026 12:09
# Why

Android needs own JavaScript runtime (Hermes) equivalent to the existing iOS JSC runtime so widgets can render registered layouts with props and environment values.

# How

- Added a native `WidgetsHermesRuntime` backed by Hermes

# Test Plan

- Verified on the stack.

# Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why

This PR adds the Android components layer for Expo Widgets, it uses the `@expo/ui/jetpack-compose` js layer with custom native components from Jetpack Glance.

# How

Adds a basic rendering layer that maps widget layout output to Android Glance components, reusing shared Expo UI props and modifier data where possible.

# Test Plan

- Build an Android app using `expo-widgets`.
- Verify basic widget layouts render correctly on Android.

# Checklist

- [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…47019)

Fixes #47016 

# Why?

Here's a minimal repro to test it in browser console.

```
https://github.com/expo/expo/blob/9be13fd21712607e1d6b6031c4df7b2dbc258952/packages/%40expo/dom-webview/src/DomWebView.tsx#L44
a = JSON.stringify({ font: '"Inter"' });  

// https://github.com/expo/expo/blob/9be13fd21712607e1d6b6031c4df7b2dbc258952/packages/%40expo/dom-webview/ios/DomWebView.swift#L228
b = new Function('return `' + source + '`;');    

// https://github.com/expo/expo/blob/9be13fd21712607e1d6b6031c4df7b2dbc258952/packages/%40expo/cli/src/start/server/middleware/DomComponentsMiddleware.ts#L122
JSON.parse(b())
// throws error
```


## How?

Add `JSON.stringify` to function returned object so it stays compatible
with `JSON.parse`.


## Test Plan

Tested the original user repro.
# Why

To test crashes which happen before JS had time to load.

# How

Add config plugin which produces native crashes during init

# Test Plan

<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
@pull pull Bot locked and limited conversation to collaborators Jun 18, 2026
@pull pull Bot added the ⤵️ pull label Jun 18, 2026
@pull pull Bot merged commit 9ac29eb into code:main Jun 18, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants