Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion docs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,7 @@ public/llms-full.txt
public/llms-eas.txt
public/llms-sdk.txt
scripts/generate-llms/talks.js
public/llms-sdk-*.txt
public/llms-sdk-*.txt

# vale binary (installed by scripts/install-vale.sh)
.vale/bin/
10 changes: 10 additions & 0 deletions docs/.vale-version.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"version": "3.14.1",
"checksums": {
"macOS_arm64": "1a4a0923f59b293d691bd901300cc4da50a6bbfd962503239b5efe9563e0bd8e",
"macOS_64-bit": "98970ca11179b3166d7d7a10119d10121784cf6d4c40397ee065cbc1651d51d6",
"Linux_64-bit": "ff2b49ffaa9dcd246fd5008f03ff67746d2790b75bf4d3657e2fb9530fb96db3",
"Linux_arm64": "6a442a4ff1e67ff0beb08b608b039a38ab1f5bd6170afef903130a63831d1b2b",
"Windows_64-bit": "e75228aa7eec07dab8875830c039d7d1216514793d0c46d95740a96dc2f96ae1"
}
}
4 changes: 0 additions & 4 deletions docs/.vale.ini
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,6 @@ TokenIgnores = (\x60[^\n\x60]+\x60), ([^\n]+=[^\n]*), (\+[^\n]+\+), (http[^\n]+\
Vale = NO
BasedOnStyles =

[**/out/**]
Vale = NO
BasedOnStyles =

[**/pages/versions/latest/**]
Vale = NO
BasedOnStyles =
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ When you are done writing or editing docs, run the following script to lint your
yarn run lint-prose
```

We use [Vale](https://vale.sh/) to lint our docs.
We use [Vale](https://vale.sh/) to lint our docs. The Vale binary is auto-installed during `yarn install` via the `postinstall` script. To install or update it manually, run `yarn install-vale`.

#### Switch off Prose linter

Expand Down
6 changes: 3 additions & 3 deletions docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"format": "oxfmt --write .",
"lint": "NODE_OPTIONS='--no-warnings' node scripts/lint.js --max-warnings 0",
"lint-links": "remark -u validate-links ./pages",
"lint-prose": "yarn vale --config='.vale.ini' --glob='*.{md,mdx}' .",
"lint-prose": ".vale/bin/vale --config='.vale.ini' --glob='!{pages/versions/latest,pages/versions/latest/**,pages/internal,pages/internal/**}' pages scenes README.md",
"watch": "tsc --noEmit -w",
"test": "yarn generate-static-resources && yarn node --experimental-strip-types --experimental-vm-modules \"$(yarn bin jest)\"",
"remove-version": "node --unhandled-rejections=strict ./scripts/remove-version.js",
Expand All @@ -31,7 +31,8 @@
"eas-cli-sync": "node ./ui/components/EASCLIReference/eas-cli-rerference.js",
"expo-skills-sync": "node --experimental-strip-types ./ui/components/ExpoSkillsTable/sync-expo-skills.js",
"expo-mcp-sync": "node --experimental-strip-types --env-file=.env ./ui/components/ExpoMCPToolsTable/sync-expo-mcp-tools.js",
"postinstall": "yarn copy-latest && yarn generate-static-resources"
"install-vale": "node --experimental-strip-types scripts/install-vale.ts",
"postinstall": "yarn copy-latest && yarn generate-static-resources && yarn install-vale"
},
"packageManager": "yarn@4.9.1",
"dependencies": {
Expand Down Expand Up @@ -102,7 +103,6 @@
"@types/react-dom": "^19.2.3",
"@types/semver": "^7.7.1",
"@types/turndown": "^5.0.6",
"@vvago/vale": "3.12.0",
"acorn": "^8.16.0",
"cheerio": "^1.2.0",
"eslint": "^9.39.2",
Expand Down
2 changes: 1 addition & 1 deletion docs/pages/develop/app-navigation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { BoxLink } from '~/ui/components/BoxLink';

The core React Native library does not include a built-in navigation solution, so you can choose a navigation library that best fits your needs. For Expo and React Native apps, it is generally a choice between [React Navigation](https://reactnavigation.org/) or [Expo Router](/router/introduction/).

## Why React Native apps needs a navigation library
## Why React Native apps need a navigation library

React Native core includes basic UI components, touch handling, device APIs and networking, but excludes, among other things, storage, camera, maps, most device sensors, and **navigation**! These are intended to be covered by community libraries.

Expand Down
32 changes: 32 additions & 0 deletions docs/pages/eas/workflows/get-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,38 @@ on:
platform: ios
```

### Trigger workflows from App Store Connect events

You can also trigger workflows from App Store Connect events using [`on.app_store_connect`](/eas/workflows/syntax/#onapp_store_connect).

Before using App Store Connect triggers, configure your App Store Connect connection in EAS dashboard:

- Open EAS dashboard and select your project.
- Navigate to **[Project settings > General > Connections](https://expo.dev/accounts/[account]/projects/[project]/settings)**.
- Connect your App Store Connect app.

Example workflow:

```yaml .eas/workflows/app-store-connect-events.yml
name: React to App Store Connect events

# @info #
on:
app_store_connect:
app_version:
states:
- ready_for_review
- waiting_for_review
# @end #

jobs:
send_slack_notification:
type: slack
params:
webhook_url: ${{ env.SLACK_WEBHOOK_URL }}
message: 'App version is ready for review or waiting for review.'
```

### VS Code extension

Download the [Expo Tools VS Code extension](https://marketplace.visualstudio.com/items?itemName=expo.vscode-expo-tools) to get descriptions and autocompletions for your workflow files.
Expand Down
8 changes: 8 additions & 0 deletions docs/pages/eas/workflows/introduction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,14 @@ Run on a cron schedule (for example, nightly builds or weekly regression tests).

Run on-demand using `eas workflow:run` command. Supports parameterized inputs for flexible execution.

### App Store Connect workflows

Run when selected App Store Connect events occur (for example app version state changes, build upload states, external beta states, or beta feedback events).

To use App Store Connect triggers, configure an App Store Connect connection in the EAS dashboard: **[Project settings > General > Connections](https://expo.dev/accounts/[account]/projects/[project]/settings)**.

See [`on.app_store_connect` syntax reference](/eas/workflows/syntax/#onapp_store_connect) for configuration details and supported values.

## When to use EAS Workflows

| Scenario | Recommendation |
Expand Down
4 changes: 3 additions & 1 deletion docs/pages/eas/workflows/pre-packaged-jobs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -1665,6 +1665,8 @@ jobs:
repack_version: string # optional
```

> **Note:** If the build might still be in progress, use [`get-build`](#get-build) with `wait_for_in_progress: true`, then pass its `build_id` to `repack`.

### Common questions

<FAQ>
Expand All @@ -1674,7 +1676,7 @@ jobs:
Repack job is suitable for the following use cases:

- Reducing CI build times by reusing existing builds
- Trigging full native builds when required
- Triggering full native builds when required
- Delivering faster feedback loops to your team

Repack job is not suitable for the following use cases:
Expand Down
104 changes: 104 additions & 0 deletions docs/pages/eas/workflows/syntax.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,110 @@ on:
# other labels
```

### `on.app_store_connect`

Runs your workflow when one of the selected App Store Connect events occurs.

> **info** To use this trigger, configure your App Store Connect connection in the [EAS dashboard](https://expo.dev/accounts/[account]/projects/[project]/settings). For setup steps, see the [App Store Connect trigger setup](/eas/workflows/get-started/#trigger-workflows-from-app-store-connect-events) section.

When `on.app_store_connect` is present, you must specify at least one event domain (`app_version`, `build_upload`, `external_beta`, or `beta_feedback`). Within a configured event domain, you can specify which states should trigger your workflow.

#### `on.app_store_connect.app_version.states`

Filters app store app version state change events. Defaults to all supported app version states when not provided.

Supported values:

- `accepted`
- `developer_rejected`
- `in_review`
- `invalid_binary`
- `metadata_rejected`
- `pending_apple_release`
- `pending_developer_release`
- `prepare_for_submission`
- `processing_for_distribution`
- `ready_for_distribution`
- `ready_for_review`
- `rejected`
- `replaced_with_new_version`
- `waiting_for_export_compliance`
- `waiting_for_review`

#### `on.app_store_connect.build_upload.states`

Filters build upload events by state. Defaults to all supported build upload states when not provided.

Supported values:

- `complete`
- `failed`
- `processing`
- `awaiting_upload`

#### `on.app_store_connect.external_beta.states`

Filters external beta events by state. Defaults to all supported external beta states when not provided.

Supported values:

- `processing`
- `processing_exception`
- `missing_export_compliance`
- `ready_for_beta_testing`
- `in_beta_testing`
- `expired`
- `ready_for_beta_submission`
- `in_export_compliance_review`
- `waiting_for_beta_review`
- `in_beta_review`
- `beta_rejected`
- `beta_approved`

#### `on.app_store_connect.beta_feedback.types`

Filters beta feedback reported by testers by its type. Defaults to all supported beta feedback types when not provided.

Supported values:

- `crash`
- `screenshot`

All filter values must be lowercase and are case-sensitive.

```yaml
# Triggers when:
# - the app version enters review,
# - a build upload completes or fails,
# - an external beta build is ready for testing or approved,
# - a tester reports a crash via TestFlight.
on:
app_store_connect:
app_version:
states:
- ready_for_review
- waiting_for_review
build_upload:
states:
- complete
- failed
external_beta:
states:
- ready_for_beta_testing
- beta_approved
beta_feedback:
types:
- crash
```

```yaml
# Triggers on any app version or build upload state change.
on:
app_store_connect:
app_version: {}
build_upload: {}
```

### `on.schedule.cron`

Runs your workflow on a schedule using [unix-cron](https://www.ibm.com/docs/en/db2/11.5?topic=task-unix-cron-format) syntax. You can use [crontab guru](https://crontab.guru/) and their [examples](https://crontab.guru/examples.html) to generate cron strings.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export default function BasicDropdownMenuExample() {
<Host matchContents>
<DropdownMenu expanded={isExpanded} onDismissRequest={() => setIsExpanded(false)}>
<DropdownMenu.Trigger>
<Button variant="bordered" onPress={() => setIsExpanded(true)}>
<Button variant="bordered" onClick={() => setIsExpanded(true)}>
Show Menu
</Button>
</DropdownMenu.Trigger>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import { Host, Button } from '@expo/ui/jetpack-compose';
export default function MatchContents() {
return (
<Host matchContents>
<Button onPress={() => console.log('Pressed')}>Sized to content</Button>
<Button onClick={() => console.log('Pressed')}>Sized to content</Button>
</Host>
);
}
Expand All @@ -43,7 +43,7 @@ import { Host, Button } from '@expo/ui/jetpack-compose';
export default function HostWithStyle() {
return (
<Host style={{ padding: 16, backgroundColor: '#f0f0f0', borderRadius: 8 }}>
<Button onPress={() => console.log('Pressed')}>Styled host</Button>
<Button onClick={() => console.log('Pressed')}>Styled host</Button>
</Host>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import { Host, Button } from '@expo/ui/jetpack-compose';
export function SaveButton() {
return (
<Host matchContents>
<Button onPress={() => alert('Saved!')}>Save changes</Button>
<Button onClick={() => alert('Saved!')}>Save changes</Button>
</Host>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export default function BasicDropdownMenuExample() {
<Host matchContents>
<DropdownMenu expanded={isExpanded} onDismissRequest={() => setIsExpanded(false)}>
<DropdownMenu.Trigger>
<Button variant="bordered" onPress={() => setIsExpanded(true)}>
<Button variant="bordered" onClick={() => setIsExpanded(true)}>
Show Menu
</Button>
</DropdownMenu.Trigger>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ export default function ToolbarWithFABExample() {
return (
<Host matchContents>
<HorizontalFloatingToolbar>
<IconButton onPress={() => console.log('Edit pressed')}>
<IconButton onClick={() => console.log('Edit pressed')}>
<Icon source={require('./assets/edit.xml')} contentDescription="Edit" />
</IconButton>
<IconButton onPress={() => console.log('Share pressed')}>
<IconButton onClick={() => console.log('Share pressed')}>
<Icon source={require('./assets/share.xml')} contentDescription="Share" />
</IconButton>
<HorizontalFloatingToolbar.FloatingActionButton onPress={() => console.log('Add pressed')}>
Expand Down
4 changes: 2 additions & 2 deletions docs/pages/versions/v55.0.0/sdk/ui/jetpack-compose/host.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import { Host, Button } from '@expo/ui/jetpack-compose';
export default function MatchContents() {
return (
<Host matchContents>
<Button onPress={() => console.log('Pressed')}>Sized to content</Button>
<Button onClick={() => console.log('Pressed')}>Sized to content</Button>
</Host>
);
}
Expand All @@ -43,7 +43,7 @@ import { Host, Button } from '@expo/ui/jetpack-compose';
export default function HostWithStyle() {
return (
<Host style={{ padding: 16, backgroundColor: '#f0f0f0', borderRadius: 8 }}>
<Button onPress={() => console.log('Pressed')}>Styled host</Button>
<Button onClick={() => console.log('Pressed')}>Styled host</Button>
</Host>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import { Host, Button } from '@expo/ui/jetpack-compose';
export function SaveButton() {
return (
<Host matchContents>
<Button onPress={() => alert('Saved!')}>Save changes</Button>
<Button onClick={() => alert('Saved!')}>Save changes</Button>
</Host>
);
}
Expand Down
Loading
Loading