990 Commits
Author SHA1 Message Date
2cc7a440b0 Add with-e2e: e2e tests on Expo Simulators and EAS Workflows (#715)
# Why

TesterArmy is adding Expo to the [e2e
showcase](https://e2e.tester.army/examples) and asked for an Expo
example that runs on Expo Simulators. This folder is that example. The
showcase lists it by folder URL, so it lives here and installs with `npx
create-expo --example with-e2e`.

# How

- One screen: a greeting form built with `@expo/ui` universal components
inside a `GlassView` from `expo-glass-effect`, with native tabs. A
second tab explains the tests.
- The five tests from TesterArmy's with-expo starter: three locator
tests and two agent tests that skip without `AI_GATEWAY_API_KEY`.
- `e2e.config.ts` has `ios`, `android`, and `web` targets. With
`E2E_IOS_BUILD_ID` or `E2E_ANDROID_BUILD_ID` set, the mobile targets run
on Expo Simulators through `@e2e-dev/eas`. Without them, they drive the
local simulator or emulator. The web target lets the runner pick a free
port.
- `eas.json` adds an `e2e` build profile. `.eas/workflows/e2e.yml`
builds both platforms and runs the suite on Expo Simulators from Linux
runners.
- `AGENTS.md` tells coding agents to install the Expo skills and which
skill to use for the screen, Expo Simulators, and the workflow.

# Test Plan

- [x] `tsc --noEmit` and `eslint .` pass.
- [x] Fresh install of the folder (from this branch, since `create-expo
--example` reads master), then the README steps: `npm run ios:release`
and `npm run test:e2e:ios` on an iPhone 17 simulator (iOS 26.5). Three
locator tests pass, the agent tests skip without a key.
- [x] `npm run test:e2e:web` in the fresh install: three pass.
- [x] `npm run android:release` and `npm run test:e2e:android` on a
Pixel 9 emulator (Android 16): three pass.
- [ ] The agent tests with a model key.
- [ ] A run on Expo Simulators with an `e2e` profile build
(`E2E_IOS_BUILD_ID`).
- [ ] `eas workflow:validate` and one workflow run. Both need the
project linked with `eas init`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5.1 <[email protected]>
Co-authored-by: Tori Expo <[email protected]>
2026-10-30 18:34:37 +00:00
Aman Mittal 10b801de07 [stickersmash] Upgrade to SDK 58 (#714)
## Why

Follow-up https://github.com/expo/expo/pull/50738

Update to SDK 58.

Fix ENG-27063


## How
- Move the code to `src/app` and `src/components`, with Expo UI buttons
in platform-specific files (`.android.tsx`, `.ios.tsx`) and a universal
`BottomSheet`.
- Save screenshots with `MediaLibrary.Asset.create()` on Android and
iOS, and download them with `react-native-view-shot` on web. Remove
`dom-to-image` and `types.d.ts`.
- Use React Native Gesture Handler 3 hooks and Reanimated
`get()`/`set()` for the sticker.
- Replace the placeholder photo and emoji (credits in
`assets/images/CREDITS.md`), and add Android adaptive icon layers.
- Update dependencies to SDK 58 (preview). A follow-up upgrades them to
the stable release.
2026-10-22 22:29:35 +05:30
Aman Mittal 76a1dd1297 [stickersmash] Upgrade to SDK 57 (#705)
# Why

Fix ENG-25515

Follow-up https://github.com/expo/expo/pull/48223/

# How

Update `package.json`.
2026-09-03 15:53:04 +05:30
Douglas Lowder 07d7d0cc3d chore: move TV examples to SDK 57 (#706)
- Move examples to SDK 57
- Clean up source code in `with-router-tv`
2026-08-17 02:46:29 -07:00
github-actions[bot]andamandeepmittal 0073f46826 Upgraded Expo SDK to expo@latest (#701)
This PR was automatically created by the [upgrade
workflow](./.github/workflows/upgrade.yml).

> ⚠️ Review the [job
logs](https://github.com/expo/examples/actions/runs/28587793003) before
merging

Co-authored-by: amandeepmittal <[email protected]>
2026-07-02 18:05:43 +05:30
Aman Mittal e70eac2c69 Skip stickersmash upgrade during automated script upgrades (#700)
## Why

We need to pin sticksmash example repo to SDK 54 for Expo tutorial.
2026-07-02 17:15:33 +05:30
João Palmeiro 5b38ede175 fix(docs): update broken links (#683)
Hi! 👋 

I am learning Expo and React Native, and while going through several of
the examples, I noticed broken links. This PR is to update them.

Thanks!
2026-07-02 16:44:01 +05:30
Chitraksh Tarun 24cc9d8aac feat: add with-app-integrity example (#699)
This PR implements a `with-app-integrity` example into the expo-examples
repository, creating an example with [App
Integrity](https://docs.expo.dev/versions/latest/sdk/app-integrity/) -
ensuring the backend resources are accessed only by legitimate
installations of an app running on genuine devices.

Demo:


https://github.com/user-attachments/assets/4968e98d-f6e2-49ff-b014-78f6573dfdd2
2026-07-02 12:19:37 +05:30
Nathan Schroeder 3aea0c4a34 Add delivery Live Activity to with-widgets example (#695) 2026-06-16 09:17:48 -04:00
Nathan Schroeder 2160e2a6d1 Update with-widgets to support clear and tinted system appearance (#694)
## Why

The iOS widget showed correctly in full-color but was **completely covered** in iOS 18+ tinted/clear modes. The full-bleed gradient `Rectangle` was drawn as
regular content (not the container background), so WidgetKit re-rendered it as an opaque monochrome block that buried the text.

## How

Gate the gradient behind the rendering mode (in `widgets/MyWidget.tsx`):

```ts
const isFullColor =
  environment.widgetRenderingMode == null || environment.widgetRenderingMode === 'fullColor';
```

In tinted/clear modes the gradient is skipped and the existing containerBackground shows through, so text stays readable. Full-color mode is unchanged.

## Example

![CleanShot 2026-06-15 at 10.08.51.png](https://app.graphite.com/user-attachments/assets/a9f6049b-8ef0-4f33-96b2-e8a8b05c1066.png)
2026-06-15 10:19:32 -04:00
Nathan Schroeder b8ec4ef500 Created expo-widgets example (#693)
# Add `with-widgets` example (expo-widgets)

## What

Adds a new `with-widgets` example demonstrating how to build an iOS home
screen widget with
[`expo-widgets`](https://docs.expo.dev/versions/latest/sdk/widgets/) and
update its data from the app.

## Highlights

- **`widgets/MyWidget.tsx`** — the widget UI, written entirely in
TypeScript using
[`@expo/ui`](https://docs.expo.dev/versions/latest/sdk/ui/) SwiftUI
primitives with the `'widget'` directive. The background layers a
`linearGradient`\-filled `Rectangle` with a grid image in a `ZStack`,
clipped with
`clipShape('containerRelativeShape')`.
- **`App.tsx`** — an app screen that pushes new data to the widget via
`updateSnapshot`. Includes an `ensureImageInSharedStorage` helper that
copies the logo/grid assets into `widgetsDirectory` (the shared app
group container), since widgets run in a separate process and can't read
the app's asset bundle.
- **`app.json`** — `expo-widgets` config plugin setup registering the
widget with `systemSmall`/`systemMedium` families.
- **README** with setup instructions and notes, including the "Launch
with Expo" badge.

## Notes

- Targets SDK 56 (`expo@^56.0.4`, `expo-widgets@~56.0.17`).
- iOS only — requires a development build (not supported in Expo Go)

## How to test

1. `cd with-widgets && yarn`
2. `yarn ios`
3. Add **My Widget** to the home screen, then tap the button in the app
and watch the widget update.
2026-06-11 11:19:37 -04:00
Aman Mittal 5f14c04484 [stickersmash] Revert it to SDK 54 (#691) 2026-06-04 22:13:32 +05:30
Evan Bacon 954d35d5b8 Create LICENSE 2026-05-31 10:23:18 -07:00
Cedric van Putten 63e5a80993 chore: upgrade to latest Expo SDK 56 (#688)
Ran the following scripts locally, left `with-router-tv` and `with-tv`
as-is, @douglowder already took care of that in #686.

```bash
export EXPO_PACKAGE_MANAGER=bun
CI=true bash ./upgrade-dependencies.sh
```
2026-05-23 17:14:49 +02:00
Douglas Lowder b61a75b193 feat(with-tv, with-router-tv): Move TV templates to SDK 56 (#686) 2026-05-21 12:01:06 -07:00
Douglas Lowder dc0574593c Update TV examples for latest SDK 55 (#678)
- Move to SDK 55.0.14
- Remove deprecated props from `app.json`
- Style and text changes
- New TV icon assets
2026-04-14 14:58:41 -07:00
Aman Mittal 029c8fa58e [stickersmash] Fix MediaLibrary permission issue for Android (#675) 2026-04-13 17:42:22 +05:30
Evan Bacon e80945949b @evanbacon/with shadcn/improvements (#672) 2026-03-23 20:46:14 -07:00
Evan Bacon 506bdfa3a4 feat: update shadcn demo to match use dom demo (#671)
My personal dom components demo is a better example of the best you can
get with shadcn and DOM components
https://github.com/EvanBacon/expo-dom-components-example so I'm updating
the example to be a leaner version of it for use with Expo Agent.
2026-03-23 15:01:46 -07:00
AlexSin0 d068117266 Fix with-skia for Web and Windows install failure (#660)
PR fixes multiple issues in the with-skia example that prevent it from
working correctly on Web and developed on Windows.

Changes were tested on Windows using both npm and pnpm for Web and
Android.

It's my first time working with templates so any corrections are
welcome. Thank you!

## Fixes

**1. When creating a project with this example npm exits with code 1.**
Running `npm i` [email protected] asks for
react-native-worklets >= 0.7.0

Limiting react-native-reanimated to ~4.1.1 should be enough according to
[compatibility
table](https://docs.swmansion.com/react-native-reanimated/docs/guides/compatibility/).

**2. Postinstall script is for Linux and fails on Windows.**
```mkdir public; cp $(node -p \"require.resolve('canvaskit-wasm/bin/full/canvaskit.wasm', { paths: [require.resolve('@shopify/react-native-skia')] })\") public/canvaskit.wasm```

Moved logic into a separate node.js script. It could be a nice use for `/scripts` folder but having is as standalone file works too. Inlining logic directly into postinstall would be difficult to maintain.

**3. Example app stops working after first browser page reload.** 
```can't access property "RuntimeEffect", this.CanvasKit is undefined```

Simplified `async-skia.tsx`. Had to cache the promise to prevent Expo
from crashing after finishing bundling for Web.
2026-03-22 18:00:03 -07:00
Douglas Lowder a9448dcf69 feat(with-tv, with-router-tv): Move TV templates to SDK 55 (#665)
`with-tv`:

- Update dependencies and README

`with-router-tv`:

- Update dependencies and README
- Move to the [revamped default project template](https://expo.dev/changelog/sdk-55-beta#revamped-default-project-template) for SDK 55, including the new native tabs
- Style and theme hooks to support different platforms and screen rotation

Should not be merged until SDK 55 GA version is published to NPM.
2026-02-26 15:35:24 -08:00
evanbacon a417db54c8 remove resolution 2026-01-21 13:20:26 -08:00
Evan Bacon e38c91e0b1 Update AI SDK and refactor chat tool integration (#657)
Upgraded @ai-sdk/openai, @ai-sdk/react, and ai dependencies to latest
major versions. Refactored chat API to use new message conversion, tool
schema, and streaming response methods. Updated chat component to use
new useChat API and simplified tool output rendering for weather and
temperature conversion.
2026-01-05 10:30:32 -08:00
Dave Mkpa-Eke 6db49f1996 Update README to reflect Uniwind instead of Tailwind (#636) 2026-01-05 10:15:44 -08:00
Alexander 0044b2d459 Updated with-sentry example (#645)
Updates versions of Sentry, Expo & React Native.
2026-01-05 10:15:29 -08:00
Amir Nissim 5a97066d23 fix(with-google-vision): update expo-image-picker usage and improve e… (#656)
…rror handling

- Update ImagePicker handling to support newer expo-image-picker
versions (v14+) which return an 'assets' array and 'canceled' property
instead of the legacy flat structure.
- Fixes crash where 'base64' was undefined, causing Google Vision API
'INVALID_ARGUMENT' errors.
- Add check for 'error' in Google Vision API response to gracefully
handle permissions/quota issues instead of unhandled promise rejection.
2026-01-05 10:15:09 -08:00
BetoandKadi Kraman 6522e75a42 Add with convex example (#650)
Co-authored-by: Kadi Kraman <[email protected]>
2025-12-04 10:51:50 -06:00
Evan Bacon fddd6aee0b delete aliased with-router-tailwind and merge into with-tailwindcss (#647) 2025-11-29 10:55:14 -08:00
Evan Bacon f909bed613 feat: update tailwind to v4 (#646)
Update with-router-tailwind to latest nightly with react-native-css to
match our internal usage
2025-11-29 10:38:39 -08:00
evanbacon 0944595d0c remove unused postcss-react-strict-dom package 2025-11-12 16:47:12 -08:00
Evan Bacon 1ea2ccb82c feat: update react-strict-dom to Expo SDK 54 (#643)
- Delete autoprefixer — now default in Expo CLI.
- Delete custom metro.config.js — package.json exports are now enabled
by default.
- Upgrade to latest RSD postcss config.
- Use `postcss.config.mjs`.
- Upgrade CSS directive `@stylex` -> `@react-strict-dom`.
- Remove `EXPO_USE_FAST_RESOLVER=1` in favor of fixed default version.
- Migrate `.stylex.ts` file to `.css.ts` file. Some strangeness here
that requires the fully qualified path to be imported.
2025-11-12 16:43:11 -08:00
William Candillon 678c9b51b1 [WebGPU Example] Remove global React hack for web compatibility (#642)
Remove hack for web related to react-native-webgpu transpilation.
2025-11-11 08:49:48 -08:00
Evan Bacon 94efc67df3 feat: add webgpu example (#637) 2025-11-06 14:26:56 -08:00
Dave Mkpa-EkeandEvan Bacon f91acb520f feat(with-router-uniwind): add example using Expo Router with Uniwind (#635)
This PR adds an example of using Expo (Router) with the latest Uniwind
library for styling!

---------

Co-authored-by: Evan Bacon <[email protected]>
2025-11-06 06:33:03 +00:00
Hassan Khan aaa2a7b4c3 feat(with-clerk): add example using Clerk (#630) 2025-10-27 20:33:32 +00:00
Douglas Lowder 9eb1e4bd82 Update TV packages (#631)
Expo SDK 54.0.20, RNTV 0.81 latest (currently 0.81.5-0), and associated
dependencies.
2025-10-26 13:42:02 -07:00
evanbacon 6331761c96 Create skia example 2025-10-19 15:31:02 -07:00
evanbacon 0b1f848f85 remove unused polyfills 2025-09-17 22:45:14 -07:00
Cedric van Putten 356907aeb8 refactor(with-router): drop extraneous libraries (#623)
These are installed as peer dependencies, it works fine in both Expo Go
and Dev client.
2025-09-12 11:24:16 +02:00
Cedric van Putten 3a24ffce08 fix(with-formdata-image-upload): correctly extract the asset to upload when picking an image (#622) 2025-09-12 11:23:16 +02:00
evanbacon 7d2bc4c07f use liquid glass modal 2025-09-11 13:34:06 -07:00
Evan Bacon 686a5236a6 refactor(with-html): update to SDK 54 (#624) 2025-09-11 11:25:19 -07:00
Cedric van Putten 0483b41baf refactor(with-camera): clean up warnings and typing issues (#621)
See commits
2025-09-11 17:03:36 +02:00
Cedric van Putten 537a056f73 refactor(with-drawer-navigation): resolve legacy reanimated and navigation issues 2025-09-11 16:44:58 +02:00
Cedric van Putten c08985f1dc refactor(with-canary-react-19): drop example as this is the default now (#620)
Supersedes #606
Closes #606
2025-09-11 16:12:17 +02:00
Cedric van Putten 842703f070 refactor(with-yarn-workspaces): simplify monorepo example and upgrade to SDK 54 (#618)
This upgrades `with-yarn-workspaces` to SDK 54 and removes typescript
and the build scripts from the example monorepo.
2025-09-11 16:12:02 +02:00
Cedric van Putten 4a421ff83d refactor: drop @babel/core as dependency for SDK 54 (#617)
Supersedes #605
Closes #605
2025-09-11 16:06:33 +02:00
Cedric van Putten 2de0bae9f6 refactor: realign react* packages across all examples for SDK 54 (#619) 2025-09-11 16:06:24 +02:00
github-actions[bot]andbyCedric 3eb1d7d259 Upgraded Expo SDK to expo@latest (#616)
This PR was automatically created by the [upgrade
workflow](./.github/workflows/upgrade.yml).

> ⚠️ Review the [job
logs](https://github.com/expo/examples/actions/runs/17645710216) before
merging

Co-authored-by: byCedric <[email protected]>
2025-09-11 15:30:06 +02:00
Cedric van Putten 34a6aae2fe chore: upgrade Node version from 18 to 20 in workflows (#615) 2025-09-11 15:13:52 +02:00