Skip to content

[pull] main from expo:main#749

Merged
pull[bot] merged 6 commits intocode:mainfrom
expo:main
Apr 6, 2026
Merged

[pull] main from expo:main#749
pull[bot] merged 6 commits intocode:mainfrom
expo:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Apr 6, 2026

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 : )

hassankhan and others added 6 commits April 6, 2026 17:19
# Why

The `generate` package script in `@expo/config-types` was broken after
#44057 was merged.

# How

Added missing `devDependencies` to `@expo/config-types`'s
`package.json`.

# Test Plan

Tested by running the `generate` package script.

# Checklist

- [ ] 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

Synchronizes the JSON schema from `expo/universe` with the types here in
`@expo/config-types`

# How

`pnpm generate --path
../../../universe/server/www/xdl-schemas/UNVERSIONED-schema.json` in
`packages/config-types`.

# Test Plan

- CI

# Checklist

- [ ] 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)
…43955)

## Why

Split from the larger scroll position tracking PR per
@intergalacticspacehighway feedback. Scroll position state and callbacks
(`onScrollPositionChange`, `scrollToID`, `id()`) are deferred pending
worklet callback support (#44214).

`scrollTargetLayout` was converted from a VStack/HStack prop to a
modifier, matching SwiftUI's API surface.

## What

- `scrollTargetBehavior()` modifier: `paging` or `viewAligned` scroll
snapping
- `scrollTargetLayout()` modifier: marks a stack as a scroll target
layout
- `ScrollTargetBehaviorModifier.swift`,
`ScrollTargetLayoutModifier.swift` registered in `ViewModifierRegistry`
- TS exports in `modifiers/index.ts` with `BuiltInModifier` union
entries

```tsx
<ScrollView modifiers={[scrollTargetBehavior('paging')]}>
  <VStack modifiers={[scrollTargetLayout()]}>
    {items.map(item => (
      <Text key={item.id}>{item.text}</Text>
    ))}
  </VStack>
</ScrollView>
```

## Test plan

- `yarn build` passes
- `npx tsc --noEmit` passes
- `yarn test` passes (42/42)
- `yarn lint --fix` passes (0 errors, 0 warnings)
- Swift compiles (ExpoUI target)
- Both modifiers have `#available(iOS 17.0, tvOS 17.0, macOS 14.0, *)`
guards
…patibility (#44510)

# Why

The README says the library supports JSON Schema Draft 06, but the
`JSONSchema` TypeScript interface is still Draft 04 in two places:

- `id` — Draft 06 renamed this to `$id`
- `exclusiveMinimum`/`exclusiveMaximum` — Draft 04 used a boolean
alongside `minimum`/`maximum`; Draft 06 changed these to standalone
numeric bounds

Writing a valid Draft 06 schema like `{ "$id": "...",
"exclusiveMinimum": 0 }` gives TypeScript errors even though the runtime
validator already handles both forms correctly (see `validate.ts` lines
198–230).

Closes #44348.

# How

Added `$id?: string` alongside `id` (marked `id` as `@deprecated`).
Widened `exclusiveMinimum` and `exclusiveMaximum` from `boolean` to
`boolean | number`. Added JSDoc to clarify which value corresponds to
which draft. No changes to runtime logic.

# Test Plan

- `CI=1 pnpm test` — all 57 tests pass
- `pnpm build` — clean

# 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)
- [ ] 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

The options for `@config-plugins/react-native-branch` should be set in
the config plugin as opposed to the main Expo config.

Closes #28084

# How

Ran the `generate` package script in `@expo/config-types`.

# Test Plan

- CI

# Checklist

- [ ] 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

Add the new context feature from #44361 to the README.
@pull pull bot locked and limited conversation to collaborators Apr 6, 2026
@pull pull bot added the ⤵️ pull label Apr 6, 2026
@pull pull bot merged commit 986657d into code:main Apr 6, 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.

4 participants