Conversation
# Why update docs for jetpack-compose for sdk 55 # How try to align the doc style as swift-ui # Test Plan preview from upstack pr # 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). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why backport changes from #43401 to sdk 55 docs # How backport changes # Test Plan previews: - https://pr-43402.expo-docs.pages.dev/versions/unversioned/sdk/ui/jetpack-compose/ - https://pr-43402.expo-docs.pages.dev/versions/v55.0.0/sdk/ui/jetpack-compose/ # 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). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why fix prebuilt dev-plugin-webui doesn't work when fetching the wa-sqlite wasm # How - bump the plugin to sdk 55 and run `yarn bundle:webui` to bundle the dev-plugin-dist - publish all files under dev-plugin-dist
# Why update doc for sdk 55 new feature # How - update web setup for hosting - add inspector
# Why
This modifier is really useful in widgets.
# How
Like every other simple modifier.
# Test Plan
## Source
```tsx
import { Circle, HStack, VStack, ZStack } from '@expo/ui/swift-ui';
import { foregroundStyle, frame, luminanceToAlpha } from '@expo/ui/swift-ui/modifiers';
import { createWidget, WidgetBase } from 'expo-widgets';
type Props = {
state: string;
};
export const TestWidget = (p: WidgetBase<Props>) => {
'widget';
return (
<VStack>
<HStack>
<ZStack modifiers={[luminanceToAlpha()]}>
<Circle modifiers={[frame({ width: 80, height: 80 }), foregroundStyle('red')]} />
<Circle modifiers={[frame({ width: 60, height: 60 }), foregroundStyle('green')]} />
<Circle modifiers={[frame({ width: 40, height: 40 }), foregroundStyle('blue')]} />
</ZStack>
</HStack>
</VStack>
);
};
const widget = createWidget('Widget1', CalcWidget);
export default widget;
```
## Preview
<img width="250" alt="Pasted Graphic"
src="https://github.com/user-attachments/assets/af273a12-aa95-4468-b409-71b2f174c7d9"
/>
| Customization type | Without modifier | With modifier |
| --- | --- | --- |
| Clear | <img width="200" alt="Pasted Graphic 1"
src="https://github.com/user-attachments/assets/cd6c12fe-8033-4787-8813-ded874b5edbe"
/> | <img width="200" alt="Pasted Graphic 4"
src="https://github.com/user-attachments/assets/b297d446-a326-4914-baf6-9bd27ccdef1f"
/> |
| Tinted | <img width="200" alt="Pasted Graphic 2"
src="https://github.com/user-attachments/assets/7bcb75d2-80ce-4a80-94e9-295c581b37db"
/> | <img width="200" alt="Pasted Graphic 3"
src="https://github.com/user-attachments/assets/f885f0c3-e6d0-488a-84b8-7ce669516ada"
/> |
# 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).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why
Every time the props change, the entire widget is re-rendered which
results in unwanted transitions (_"blinking"_).
# How
For now, we've completely turned off the transitions as a workaround.
# Test Plan
```tsx
import { Button, Text, VStack } from '@expo/ui/swift-ui';
import { font, foregroundStyle } from '@expo/ui/swift-ui/modifiers';
import { createWidget, WidgetBase } from 'expo-widgets';
type Props = { count: number };
const CoffeeCounter = (p: WidgetBase<Props>) => {
'widget';
return (
<VStack spacing={8}>
<Text modifiers={[font({ size: 48 })]}>☕</Text>
<Text modifiers={[font({ size: 32, weight: 'bold' })]}>{p.count}</Text>
<Button
modifiers={[foregroundStyle('white')]}
label="+"
target="increment"
onPress={() => ({ count: p.count + 1 })}
/>
</VStack>
);
};
export default createWidget('CoffeeCounter', CoffeeCounter);
```
# 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).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
… no widgets (#43425) # Why If there are no widgets specified in `app.json`, config plugin does not generate `WidgetBundle` at all. # How Generate `WidgetBundle` for Live Activity. # Test Plan Run prebuild without specifying widgets field. # 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). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…oom transition (#43370) # Why When navigating from a preview to a screen with zoom transition, the zoom transition was not applied. This PR makes it a little less restrictive. 1. Allows for a transition from a preview to a modal screen with zoom transition. Transition to a standard screen does not work in UIKit, so we need to restrict it to modal only 2. Disables `usePreventZoomTransitionDismissal` hook inside modal - seems to be a native bug, but needs further investigation - adding a warning for now. # How 1. Remove strict condition which disabled zoom transition after preview navigation 2. Detect if navigation is from preview 3. If it is from preview and not modal then don't apply zoom transition 4. Detect if zoom transition is enabled from the `usePreventZoomTransitionDismissal`. If it is not or if the screen presentation is modal, then the hook noops. Additionally fixes minor bugs (e.g. direct imports from `.ios` files) # Test Plan 1. Unit tests 2. Manual testing # 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)
…ck-packages workflow (#43391) Co-authored-by: Łukasz Kosmaty <kosmatylukasz@gmail.com>
## IMPORTANT This PR should be rebased and merged after #43097 is merged # Why We currently implemented shared state only for Android and the API is meant to support both platforms. Additionally, the API requires certain improvements # How ## Main change Extended current shared state implementation with an implementation for iOS which functionality-wise matches current Android implementation ## Additional improvements (for both platforms): ### Updated the test screen Added test cases for validating supported data types and more advanced flows (especially revolving around state deletion and resetting) **Note:** this screen will be further updated in the (I hope) final PR with improvements - #43279 ### Added proper handling of state deletion (JS) Previously after deleting the state (either from JS or native) the JS part didn't know that the state object it listens to has been deleted, so when the object was recreated/reset in the native part the JS didn't receive the new value nor its updates as it was listening to non-existing object In the new implementation native side holds a set of keys that were deleted and notifies JS subscribers when it has been recreated, allowing them to update their state and reset the listeners ### Added proper handling of state deletion (Native) Previously listeners were stored directly in the shared object, but the subscription shouldn't end when the state is deleted, but when the remove/cancel method is explicitly called Moved the subscription management to `BrownfieldState` object allowing subscriptions to be persisted between state deletions # Test Plan Validated that the API works as on Android + that the improvements work # 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).
…docs (#43418) # Why 1. Some limitations were not listed in the split view docs 2. Support for `show` method was added in software-mansion/react-native-screens#3639 to SplitView, and we need to reflect this in our docs # How <!-- How did you build this feature or fix this bug and why? --> # 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) --------- Co-authored-by: Aman Mittal <amandeepmittal@live.com>
# Why Support for images in header submenus and actions was added in software-mansion/react-native-screens#3645. This PR adds it to expo-router. Follow-up task, after support is added in react-navigation: https://linear.app/expo/issue/ENG-19853/remove-custom-conversion-logic-for-icon-from-packagesexpo # How Pass icons in raw react-native-screens format. # Test Plan 1. Unit tests 2. Manual testing <img width="420" height="324" alt="Screenshot 2026-02-24 at 20 15 32" src="https://github.com/user-attachments/assets/935d7ff2-4945-4ce1-b849-8890d79728e5" /> # 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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 : )