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
26 changes: 0 additions & 26 deletions .github/workflows/docs-pr-destroy.yml

This file was deleted.

71 changes: 0 additions & 71 deletions .github/workflows/docs-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,10 @@ on:
push:
paths:
- '.github/workflows/docs-pr.yml'
- '.github/workflows/docs-pr-destroy.yml'
pull_request:
paths:
- 'docs/**'
- '.github/workflows/docs-pr.yml'
- '.github/workflows/docs-pr-destroy.yml'
types:
- opened
- labeled
Expand Down Expand Up @@ -61,75 +59,6 @@ jobs:
fail_on_error: true
# Override bundled reviewdog (0.17.0) to avoid 300-file diff limit
reviewdog_url: https://github.com/reviewdog/reviewdog/releases/download/v0.21.0/reviewdog_0.21.0_Linux_x86_64.tar.gz
- name: 🏗️ Build Docs website
run: yarn export-preview
timeout-minutes: 20
env:
AWS_BUCKET: 'docs.expo.dev-pr-${{ github.event.pull_request.number }}'
# NOTE(@krystofwoldrich): Missing token won't fail the build
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
- name: 🔗 Lint pages links
working-directory: docs
run: yarn lint-links --quiet
- name: 🪣 Set up docs preview bucket
if: contains(github.event.pull_request.labels.*.name, 'preview')
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: 'us-east-1'
run: |
# Create bucket
aws s3api create-bucket --bucket docs.expo.dev-pr-${{ github.event.pull_request.number }}

# Set "block public access" to off
aws s3api put-public-access-block --bucket docs.expo.dev-pr-${{ github.event.pull_request.number }} --public-access-block-configuration "BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=false,RestrictPublicBuckets=false"

# Set bucket policy to public
aws s3api put-bucket-policy --bucket docs.expo.dev-pr-${{ github.event.pull_request.number }} --policy "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:GetObject\",\"Resource\":\"arn:aws:s3:::docs.expo.dev-pr-${{ github.event.pull_request.number }}/*\"}]}"

# Tag bucket to tell compliance monitoring that it is intended to be public
aws s3api put-bucket-tagging --bucket docs.expo.dev-pr-${{ github.event.pull_request.number }} --tagging "{\"TagSet\":[{\"Key\":\"DrataExclude\",\"Value\":\"This is a test instance of our public docs page and is intended to be public.\"}]}"

# Set up static website hosting
aws s3 website s3://docs.expo.dev-pr-${{ github.event.pull_request.number }}/ --index-document index.html
- name: 🚀 Deploy Docs website
if: contains(github.event.pull_request.labels.*.name, 'preview')
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: 'us-east-1'
AWS_BUCKET: docs.expo.dev-pr-${{ github.event.pull_request.number }}
run: ./deploy.sh
- name: 🔍 Find old comment if it exists
if: contains(github.event.pull_request.labels.*.name, 'preview')
uses: peter-evans/find-comment@v3
id: old_comment
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'expo-bot'
body-includes: 📘 Your docs
- name: 💬 Add comment with preview URL
if: contains(github.event.pull_request.labels.*.name, 'preview') && steps.old_comment.outputs.comment-id == ''
uses: actions/github-script@v7
with:
github-token: ${{ secrets.EXPO_BOT_GITHUB_TOKEN }}
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '📘 Your docs [preview website](http://docs.expo.dev-pr-${{ github.event.pull_request.number }}.s3-website-us-east-1.amazonaws.com/) is ready!'
});
- name: 💬 Update comment with preview URL
if: contains(github.event.pull_request.labels.*.name, 'preview') && steps.old_comment.outputs.comment-id != ''
uses: actions/github-script@v7
with:
github-token: ${{ secrets.EXPO_BOT_GITHUB_TOKEN }}
script: |
github.rest.issues.updateComment({
issue_number: context.issue.number,
comment_id: '${{ steps.old_comment.outputs.comment-id }}',
owner: context.repo.owner,
repo: context.repo.repo,
body: '📘 Your docs [preview website](http://docs.expo.dev-pr-${{ github.event.pull_request.number }}.s3-website-us-east-1.amazonaws.com/) is ready!'
});
4 changes: 2 additions & 2 deletions .github/workflows/ios-static-frameworks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ jobs:
uses: actions/checkout@v4
with:
submodules: true
- name: 🔨 Switch to Xcode 26.0
run: sudo xcode-select --switch /Applications/Xcode_26.0.app
- name: 🔨 Switch to Xcode 26.2
run: sudo xcode-select --switch /Applications/Xcode_26.2.app
- name: ➕ Add `bin` to GITHUB_PATH
run: echo "$(pwd)/bin" >> $GITHUB_PATH
- name: 💎 Setup Ruby
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ios-unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ jobs:
uses: actions/checkout@v4
with:
submodules: true
- name: 🔨 Switch to Xcode 26.0
run: sudo xcode-select --switch /Applications/Xcode_26.0.app
- name: 🔨 Switch to Xcode 26.2
run: sudo xcode-select --switch /Applications/Xcode_26.2.app
- name: ➕ Add `bin` to GITHUB_PATH
run: echo "$(pwd)/bin" >> $GITHUB_PATH
- name: 💎 Setup Ruby and install gems
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test-react-native-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ jobs:
steps:
- name: 👀 Checkout
uses: actions/checkout@v5
- name: 🔨 Switch to Xcode 26.0
run: sudo xcode-select --switch /Applications/Xcode_26.0.app
- name: 🔨 Switch to Xcode 26.2
run: sudo xcode-select --switch /Applications/Xcode_26.2.app
- name: 🍺 Install required tools
run: |
brew install watchman || true
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test-suite-brownfield.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ jobs:
uses: actions/checkout@v4
with:
submodules: true
- name: 🔨 Switch to Xcode 26.0
run: sudo xcode-select --switch /Applications/Xcode_26.0.app
- name: 🔨 Switch to Xcode 26.2
run: sudo xcode-select --switch /Applications/Xcode_26.2.app
- name: ➕ Add `bin` to GITHUB_PATH
run: echo "$(pwd)/bin" >> $GITHUB_PATH
- name: 💎 Setup Ruby and install gems
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test-suite-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ jobs:
uses: actions/checkout@v4
with:
submodules: true
- name: 🔨 Switch to Xcode 26.0
run: sudo xcode-select --switch /Applications/Xcode_26.0.app
- name: 🔨 Switch to Xcode 26.2
run: sudo xcode-select --switch /Applications/Xcode_26.2.app
- name: 🍺 Install required tools
run: |
brew install watchman || true
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/test-suite-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ jobs:
# Version `1.x` fails due to https://github.com/oven-sh/setup-bun/issues/37
# TODO(cedric): swap `latest` back once the issue is resolved
bun-version: latest
- name: 🔨 Switch to Xcode 26.0
run: sudo xcode-select --switch /Applications/Xcode_26.0.app
- name: 🔨 Switch to Xcode 26.2
run: sudo xcode-select --switch /Applications/Xcode_26.2.app
- name: 🍺 Install required tools
run: |
brew install watchman || true
Expand Down Expand Up @@ -93,8 +93,8 @@ jobs:
# Version `1.x` fails due to https://github.com/oven-sh/setup-bun/issues/37
# TODO(cedric): swap `latest` back once the issue is resolved
bun-version: latest
- name: 🔨 Switch to Xcode 26.0
run: sudo xcode-select --switch /Applications/Xcode_26.0.app
- name: 🔨 Switch to Xcode 26.2
run: sudo xcode-select --switch /Applications/Xcode_26.2.app
- name: ➕ Add `bin` to GITHUB_PATH
run: echo "$(pwd)/bin" >> $GITHUB_PATH
- name: 🌠 Download builds
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/test-suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ jobs:
# Version `1.x` fails due to https://github.com/oven-sh/setup-bun/issues/37
# TODO(cedric): swap `latest` back once the issue is resolved
bun-version: latest
- name: 🔨 Switch to Xcode 26.0
run: sudo xcode-select --switch /Applications/Xcode_26.0.app
- name: 🔨 Switch to Xcode 26.2
run: sudo xcode-select --switch /Applications/Xcode_26.2.app
- name: 🍺 Install required tools
run: |
brew install watchman || true
Expand Down Expand Up @@ -161,8 +161,8 @@ jobs:
# Version `1.x` fails due to https://github.com/oven-sh/setup-bun/issues/37
# TODO(cedric): swap `latest` back once the issue is resolved
bun-version: latest
- name: 🔨 Switch to Xcode 26.0
run: sudo xcode-select --switch /Applications/Xcode_26.0.app
- name: 🔨 Switch to Xcode 26.2
run: sudo xcode-select --switch /Applications/Xcode_26.2.app
- name: ➕ Add `bin` to GITHUB_PATH
run: echo "$(pwd)/bin" >> $GITHUB_PATH
- name: 🌠 Download builds
Expand Down
3 changes: 3 additions & 0 deletions apps/expo-workflow-testing/.eas/workflows/tv-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ on:
- packages/expo-updates/e2e/setup/project.ts
- templates/expo-template-bare-minimum/**
- packages/expo-application/ios/**
- packages/expo-dev-client/ios/**
- packages/expo-dev-launcher/ios/**
- packages/expo-dev-menu/ios/**
- packages/expo-device/ios/**
- packages/expo-eas-client/ios/**
- packages/expo-file-system/ios/**
Expand Down
13 changes: 1 addition & 12 deletions apps/router-e2e/__e2e__/native-navigation/app/toolbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ export default function ToolbarScreen() {
const [showMenu, setShowMenu] = useState(!!params.menu);
const [showFixedSpacer, setShowFixedSpacer] = useState(false);
const [fixedSpacerShareBackground, setFixedSpacerShareBackground] = useState(false);
const [fixedSpacerHideSharedBackground, setFixedSpacerHideSharedBackground] = useState(false);
const [fixedSpacerWidth, setFixedSpacerWidth] = useState(20);

// State for search functionality
Expand Down Expand Up @@ -216,15 +215,6 @@ export default function ToolbarScreen() {
/>
</View>

<View style={styles.switchRow}>
<Text style={styles.label}>Fixed Spacer Hides Shared Background</Text>
<Switch
testID="toggle-fixed-spacer-hide-shared-background"
value={fixedSpacerHideSharedBackground}
onValueChange={setFixedSpacerHideSharedBackground}
/>
</View>

<View style={styles.switchRow}>
<Text style={styles.label}>Fixed Spacer Width (pt)</Text>
<TextInput
Expand Down Expand Up @@ -276,7 +266,7 @@ export default function ToolbarScreen() {
{/* Search bar */}
<Stack.Toolbar.SearchBarSlot
hidden={!showSearchBar}
sharesBackground={sharesBackgroundSearchBar}
separateBackground={!sharesBackgroundSearchBar}
hidesSharedBackground={hidesSharedBackgroundSearchBar}
/>

Expand All @@ -297,7 +287,6 @@ export default function ToolbarScreen() {
<Stack.Toolbar.Spacer
// hidden={!showFixedSpacer}
sharesBackground={fixedSpacerShareBackground}
hidesSharedBackground={fixedSpacerHideSharedBackground}
width={fixedSpacerWidth}
/>
)}
Expand Down
21 changes: 18 additions & 3 deletions apps/router-e2e/__e2e__/server-loader/app/index.tsx
Original file line number Diff line number Diff line change
@@ -1,34 +1,49 @@
import { useLocalSearchParams, usePathname } from 'expo-router';
import { useLoaderData, useLocalSearchParams, usePathname } from 'expo-router';
import { Suspense } from 'react';

import { Loading } from '../components/Loading';
import { Table, TableRow } from '../components/Table';
import { SiteLinks, SiteLink } from '../components/SiteLink';

export async function loader() {
return Promise.resolve({
data: 'root-index',
});
}

export default function IndexRoute() {
return (<IndexScreen />)
return (
<Suspense fallback={<Loading />}>
<IndexScreen />
</Suspense>
);
}

const IndexScreen = () => {
const pathname = usePathname();
const localParams = useLocalSearchParams();
const data = useLoaderData<typeof loader>();

return (
<>
<Table>
<TableRow label="Pathname" value={pathname} testID="pathname-result" />
<TableRow label="Local Params" value={localParams} testID="localparams-result" />
<TableRow label="Loader Data" value={data} testID="loader-result" />
</Table>

<SiteLinks>
<SiteLink href="/second">Go to Second</SiteLink>
<SiteLink href="/env">Go to Env</SiteLink>
<SiteLink href="/request">Go to Request</SiteLink>
<SiteLink href="/response">Go to Response</SiteLink>
<SiteLink href="/nested/">Go to Nested Index</SiteLink>
<SiteLink href="/posts/static-post-1">Go to static Post 1</SiteLink>
<SiteLink href="/posts/static-post-2">Go to static Post 2</SiteLink>
<SiteLink href="/error">Go to Error</SiteLink>
</SiteLinks>
</>
);
}
};


41 changes: 41 additions & 0 deletions apps/router-e2e/__e2e__/server-loader/app/nested/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { useLoaderData, useLocalSearchParams, usePathname } from 'expo-router';
import { Suspense } from 'react';

import { Loading } from '../../components/Loading';
import { SiteLinks, SiteLink } from '../../components/SiteLink';
import { Table, TableRow } from '../../components/Table';

export async function loader() {
return Promise.resolve({
data: 'nested-index',
});
}

export default function NestedIndexRoute() {
return (
<Suspense fallback={<Loading />}>
<NestedIndexScreen />
</Suspense>
);
}

const NestedIndexScreen = () => {
const pathname = usePathname();
const localParams = useLocalSearchParams();
const data = useLoaderData<typeof loader>();

return (
<>
<Table>
<TableRow label="Pathname" value={pathname} testID="pathname-result" />
<TableRow label="Local Params" value={localParams} testID="localparams-result" />
<TableRow label="Loader Data" value={data} testID="loader-result" />
</Table>

<SiteLinks>
<SiteLink href="/">Go to Index</SiteLink>
<SiteLink href="/second">Go to Second</SiteLink>
</SiteLinks>
</>
);
};
28 changes: 28 additions & 0 deletions apps/router-e2e/__e2e__/server-loader/app/no-loader.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { useLocalSearchParams, usePathname } from 'expo-router';

import { Table, TableRow } from '../components/Table';
import { SiteLinks, SiteLink } from '../components/SiteLink';

export default function NoLoaderRoute() {
return (<NoLoaderScreen />)
}

const NoLoaderScreen = () => {
const pathname = usePathname();
const localParams = useLocalSearchParams();

return (
<>
<Table>
<TableRow label="Pathname" value={pathname} testID="pathname-result" />
<TableRow label="Local Params" value={localParams} testID="localparams-result" />
</Table>

<SiteLinks>
<SiteLink href="/">Go to Index</SiteLink>
</SiteLinks>
</>
);
}


Loading
Loading