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
4 changes: 2 additions & 2 deletions apps/bare-expo/ios/BareExpo.xcodeproj/project.pbxproj

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

394 changes: 197 additions & 197 deletions apps/bare-expo/ios/Podfile.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions apps/bare-expo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,13 @@
"react-native-gesture-handler": "~2.30.0",
"react-native-keyboard-controller": "^1.20.7",
"react-native-pager-view": "6.9.1",
"react-native-reanimated": "4.2.2",
"react-native-reanimated": "4.3.0",
"react-native-safe-area-context": "5.6.2",
"react-native-screens": "4.24.0",
"react-native-svg": "15.15.4",
"react-native-view-shot": "4.0.3",
"react-native-webview": "13.16.0",
"react-native-worklets": "0.7.4",
"react-native-worklets": "0.8.1",
"test-suite": "workspace:*"
},
"devDependencies": {
Expand Down
4 changes: 2 additions & 2 deletions apps/brownfield-tester/expo-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
"react-dom": "19.2.3",
"react-native": "0.85.0-rc.7",
"react-native-gesture-handler": "~2.30.0",
"react-native-worklets": "0.7.4",
"react-native-reanimated": "~4.2.2",
"react-native-worklets": "0.8.1",
"react-native-reanimated": "~4.3.0",
"react-native-safe-area-context": "~5.6.2",
"react-native-screens": "~4.24.0",
"react-native-web": "~0.21.0"
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

338 changes: 169 additions & 169 deletions apps/brownfield-tester/ios/Podfile.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions apps/brownfield-tester/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"expo": "workspace:*",
"react-native": "0.85.0-rc.7",
"react": "19.2.3",
"react-native-reanimated": "4.2.2",
"react-native-worklets": "0.7.4"
"react-native-reanimated": "4.3.0",
"react-native-worklets": "0.8.1"
}
}
96 changes: 48 additions & 48 deletions apps/expo-go/ios/Podfile.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions apps/expo-go/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,13 +80,13 @@
"react-native-keyboard-controller": "^1.20.7",
"react-native-maps": "1.27.2",
"react-native-pager-view": "8.0.0",
"react-native-reanimated": "4.2.2",
"react-native-reanimated": "4.3.0",
"react-native-safe-area-context": "5.6.2",
"react-native-svg": "15.15.4",
"react-native-screens": "4.24.0",
"react-native-view-shot": "4.0.3",
"react-native-webview": "13.16.0",
"react-native-worklets": "0.7.4"
"react-native-worklets": "0.8.1"
},
"devDependencies": {
"@types/react": "~19.2.0"
Expand Down
4 changes: 2 additions & 2 deletions apps/native-component-list/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@
"react-native-maps": "1.27.2",
"react-native-pager-view": "8.0.0",
"react-native-paper": "^5.12.5",
"react-native-worklets": "0.7.4",
"react-native-reanimated": "4.2.2",
"react-native-worklets": "0.8.1",
"react-native-reanimated": "4.3.0",
"react-native-safe-area-context": "5.6.2",
"react-native-svg": "15.15.4",
"react-native-screens": "4.24.0",
Expand Down
3 changes: 3 additions & 0 deletions apps/router-e2e/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// This entry point is used to test relative command flags on Windows Android builds, triggered through Gradle.
// See: https://github.com/facebook/react-native/commit/bb02ccf13f76f46b8572e2a85d578fd8d4fd9467
import 'expo-router/entry';
116 changes: 57 additions & 59 deletions apps/test-suite/tests/FileSystem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1988,72 +1988,70 @@ export async function test({ describe, expect, it, ...t }) {
expect(src.textSync()).toBe(alphabet.repeat(4 * 10));
});

if (Platform.OS === 'android') {
describe('FileMode (Android)', () => {
it('opens in ReadOnly mode and reads data', () => {
const src = new File(testDirectory, 'mode-read.txt');
src.write('Hello');
const handle = src.open(FileMode.ReadOnly);
expect(handle.readBytes(5)).toEqual(new Uint8Array([72, 101, 108, 108, 111]));
handle.close();
});
describe('It supports different FileMode options', () => {
it('opens in ReadOnly mode and reads data', () => {
const src = new File(testDirectory, 'mode-read.txt');
src.write('Hello');
const handle = src.open(FileMode.ReadOnly);
expect(handle.readBytes(5)).toEqual(new Uint8Array([72, 101, 108, 108, 111]));
handle.close();
});

it('throws when writing to a ReadOnly handle', () => {
const src = new File(testDirectory, 'mode-read-only.txt');
src.write('Hello');
const handle = src.open(FileMode.ReadOnly);
expect(() => handle.writeBytes(new Uint8Array([65]))).toThrow();
handle.close();
});
it('throws when writing to a ReadOnly handle', () => {
const src = new File(testDirectory, 'mode-read-only.txt');
src.write('Hello');
const handle = src.open(FileMode.ReadOnly);
expect(() => handle.writeBytes(new Uint8Array([65]))).toThrow();
handle.close();
});

it('opens in WriteOnly mode and writes data', () => {
const src = new File(testDirectory, 'mode-write.txt');
src.create();
const handle = src.open(FileMode.WriteOnly);
handle.writeBytes(new Uint8Array([72, 105])); // Hi
handle.close();
expect(src.textSync()).toBe('Hi');
});
it('opens in WriteOnly mode and writes data', () => {
const src = new File(testDirectory, 'mode-write.txt');
src.create();
const handle = src.open(FileMode.WriteOnly);
handle.writeBytes(new Uint8Array([72, 105])); // Hi
handle.close();
expect(src.textSync()).toBe('Hi');
});

it('throws when reading from a WriteOnly handle', () => {
const src = new File(testDirectory, 'mode-write-only.txt');
src.create();
const handle = src.open(FileMode.WriteOnly);
expect(() => handle.readBytes(1)).toThrow();
handle.close();
});
it('throws when reading from a WriteOnly handle', () => {
const src = new File(testDirectory, 'mode-write-only.txt');
src.create();
const handle = src.open(FileMode.WriteOnly);
expect(() => handle.readBytes(1)).toThrow();
handle.close();
});

it('opens in ReadWrite mode and supports both reading and writing', () => {
const src = new File(testDirectory, 'mode-rw.txt');
src.write('Hello');
const handle = src.open(FileMode.ReadWrite);
expect(handle.readBytes(5)).toEqual(new Uint8Array([72, 101, 108, 108, 111]));
handle.offset = 0;
handle.writeBytes(new Uint8Array([87, 111, 114, 108, 100])); // World
handle.close();
expect(src.textSync()).toBe('World');
});
it('opens in ReadWrite mode and supports both reading and writing', () => {
const src = new File(testDirectory, 'mode-rw.txt');
src.write('Hello');
const handle = src.open(FileMode.ReadWrite);
expect(handle.readBytes(5)).toEqual(new Uint8Array([72, 101, 108, 108, 111]));
handle.offset = 0;
handle.writeBytes(new Uint8Array([87, 111, 114, 108, 100])); // World
handle.close();
expect(src.textSync()).toBe('World');
});

it('opens in Append mode and appends data', () => {
const src = new File(testDirectory, 'mode-append.txt');
src.write('Hello');
const handle = src.open(FileMode.Append);
handle.writeBytes(new Uint8Array([32, 87, 111, 114, 108, 100])); // ' World'
handle.close();
expect(src.textSync()).toBe('Hello World');
});
it('opens in Append mode and appends data', () => {
const src = new File(testDirectory, 'mode-append.txt');
src.write('Hello');
const handle = src.open(FileMode.Append);
handle.writeBytes(new Uint8Array([32, 87, 111, 114, 108, 100])); // ' World'
handle.close();
expect(src.textSync()).toBe('Hello World');
});

it('opens in Truncate mode and wipes existing content', () => {
const src = new File(testDirectory, 'mode-truncate.txt');
src.write('Old content');
const handle = src.open(FileMode.Truncate);
expect(handle.size).toBe(0);
handle.writeBytes(new Uint8Array([78, 101, 119])); // New
handle.close();
expect(src.textSync()).toBe('New');
});
it('opens in Truncate mode and wipes existing content', () => {
const src = new File(testDirectory, 'mode-truncate.txt');
src.write('Old content');
const handle = src.open(FileMode.Truncate);
expect(handle.size).toBe(0);
handle.writeBytes(new Uint8Array([78, 101, 119])); // New
handle.close();
expect(src.textSync()).toBe('New');
});
}
});

it('Provides a ReadableStream', async () => {
const src = new File(testDirectory, 'abcs.txt');
Expand Down
3 changes: 2 additions & 1 deletion docs/pages/versions/unversioned/sdk/symbols.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@ sourceCodeUrl: 'https://github.com/expo/expo/tree/main/packages/expo-symbols'
packageName: 'expo-symbols'
iconUrl: '/static/images/packages/expo-symbols.png'
platforms: ['android', 'ios', 'tvos', 'web', 'expo-go']
isBeta: true
---

import APISection from '~/components/plugins/APISection';
import { APIInstallSection } from '~/components/plugins/InstallSection';
import { ContentSpotlight } from '~/ui/components/ContentSpotlight';

> **warning** This library is currently in [beta](/more/release-statuses/#beta) and subject to breaking changes.
> **important** This library is currently in [beta](/more/release-statuses/#beta) and subject to breaking changes.

`expo-symbols` provides access to native symbol libraries across platforms. On iOS and tvOS, it uses [SF Symbols](https://developer.apple.com/sf-symbols/). On Android and web, it uses [Material Symbols](https://fonts.google.com/icons).

Expand Down
3 changes: 2 additions & 1 deletion docs/pages/versions/v55.0.0/sdk/symbols.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@ sourceCodeUrl: 'https://github.com/expo/expo/tree/main/packages/expo-symbols'
packageName: 'expo-symbols'
iconUrl: '/static/images/packages/expo-symbols.png'
platforms: ['android', 'ios', 'tvos', 'web', 'expo-go']
isBeta: true
---

import APISection from '~/components/plugins/APISection';
import { APIInstallSection } from '~/components/plugins/InstallSection';
import { ContentSpotlight } from '~/ui/components/ContentSpotlight';

> **warning** This library is currently in [beta](/more/release-statuses/#beta) and subject to breaking changes.
> **important** This library is currently in [beta](/more/release-statuses/#beta) and subject to breaking changes.

`expo-symbols` provides access to native symbol libraries across platforms. On iOS and tvOS, it uses [SF Symbols](https://developer.apple.com/sf-symbols/). On Android and web, it uses [Material Symbols](https://fonts.google.com/icons).

Expand Down
2 changes: 1 addition & 1 deletion docs/public/static/data/unversioned/expo-file-system.json

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions packages/@expo/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
- Fall back to name-based `.MainActivity` lookup when no runnable activity with `MAIN`/`LAUNCHER` intent filters exists in the manifest. ([#43702](https://github.com/expo/expo/pull/43702) by [@hwhh](https://github.com/hwhh))
- Fix `react-native-web` install check being unconditional ([#44450](https://github.com/expo/expo/pull/44450) by [@kitten](https://github.com/kitten))
- Fix mangled async chunk filenames for catch-all routes ([#43547](https://github.com/expo/expo/pull/43547) by [@hassankhan](https://github.com/hassankhan))
- Consistently resolve `mainModuleName`s using `convertEntryPointToRelative` and fix relative path semantics of `--entry-file` argumnts, which was previously expected to be relative to the server root rather than the project root. This fixes build issues when using export commands for projects in monorepos on Windows ([#44414](https://github.com/expo/expo/pull/44414) by [@kitten](https://github.com/kitten))

### 💡 Others

Expand All @@ -45,6 +46,9 @@
- Add `react-native-web` to autolinking module resolution modules ([#44160](https://github.com/expo/expo/pull/44160) by [@kitten](https://github.com/kitten))
- Limit `/open-stack-frame` to paths within server root ([#44039](https://github.com/expo/expo/pull/44039) by [@kitten](https://github.com/kitten))
- Use `@expo/require-utils` for ngrok resolution ([#44236](https://github.com/expo/expo/pull/44236) by [@kitten](https://github.com/kitten))
- Update to `lan-network@^0.2.1` ([#44587](https://github.com/expo/expo/pull/44587) by [@kitten](https://github.com/kitten))
- Update to `fetch-nodeshim@^0.4.10` ([#44588](https://github.com/expo/expo/pull/44588) by [@kitten](https://github.com/kitten))
- Update to `dnssd-advertise@^1.1.4` ([#44589](https://github.com/expo/expo/pull/44589) by [@kitten](https://github.com/kitten))

## 55.0.12 — 2026-02-25

Expand Down
14 changes: 7 additions & 7 deletions packages/@expo/cli/e2e/__tests__/export-embed-test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-env jest */
import { resolveRelativeEntryPoint } from '@expo/config/paths';
import { resolveEntryPoint } from '@expo/config/paths';
import fs from 'fs';
import path from 'path';

Expand Down Expand Up @@ -48,7 +48,7 @@ it('runs `npx expo export:embed --help`', async () => {

Options
<dir> Directory of the Expo project. Default: Current working directory
--entry-file <path> Path to the root JS file, either absolute or relative to JS root
--entry-file <path> Path to the root JS file, either absolute or relative to current working directory
--platform <string> Either "ios" or "android" (default: "ios")
--transformer <string> Specify a custom transformer to be used
--dev [boolean] If false, warnings are disabled and the bundle is minified (default: true)
Expand Down Expand Up @@ -96,7 +96,7 @@ it('runs `npx expo export:embed`', async () => {
[
'export:embed',
'--entry-file',
resolveRelativeEntryPoint(projectRoot, { platform: 'ios' }),
resolveEntryPoint(projectRoot, { platform: 'ios' }),
'--bundle-output',
`./${output}/output.js`,
'--assets-dest',
Expand Down Expand Up @@ -168,7 +168,7 @@ it('runs `npx expo export:embed --platform ios` with source maps', async () => {
[
'export:embed',
'--entry-file',
resolveRelativeEntryPoint(projectRoot, { platform: 'ios' }),
path.relative(projectRoot, resolveEntryPoint(projectRoot, { platform: 'ios' })),
'--bundle-output',
`./${output}/output.js`,
'--assets-dest',
Expand Down Expand Up @@ -243,7 +243,7 @@ it('runs `npx expo export:embed --platform ios` with a robot user', async () =>
[
'export:embed',
'--entry-file',
resolveRelativeEntryPoint(projectRoot, { platform: 'ios' }),
path.relative(projectRoot, resolveEntryPoint(projectRoot, { platform: 'ios' })),
'--bundle-output',
`./${output}/output.js`,
'--assets-dest',
Expand Down Expand Up @@ -317,7 +317,7 @@ it('runs `npx expo export:embed --platform android` with source maps', async ()
[
'export:embed',
'--entry-file',
resolveRelativeEntryPoint(projectRoot, { platform: 'android' }),
path.relative(projectRoot, resolveEntryPoint(projectRoot, { platform: 'android' })),
'--bundle-output',
`./${output}/output.js`,
'--assets-dest',
Expand Down Expand Up @@ -414,7 +414,7 @@ it('runs `npx expo export:embed --bytecode`', async () => {
[
'export:embed',
'--entry-file',
resolveRelativeEntryPoint(projectRoot, { platform: 'ios' }),
path.relative(projectRoot, resolveEntryPoint(projectRoot, { platform: 'ios' })),
'--bundle-output',
`./${output}/output.js`,
'--assets-dest',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-env jest */
import { resolveRelativeEntryPoint } from '@expo/config/paths';
import { resolveEntryPoint } from '@expo/config/paths';
import fs from 'fs';
import path from 'path';

Expand Down Expand Up @@ -30,7 +30,7 @@ jest.unmock('resolve-from');
'export:embed',
//
'--entry-file',
resolveRelativeEntryPoint(projectRoot, { platform: 'ios' }),
path.relative(projectRoot, resolveEntryPoint(projectRoot, { platform: 'ios' })),
//
'--bundle-output',
`./${outputName}/index.js`,
Expand Down
6 changes: 3 additions & 3 deletions packages/@expo/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,12 @@
"compression": "^1.7.4",
"connect": "^3.7.0",
"debug": "^4.3.4",
"dnssd-advertise": "^1.1.3",
"dnssd-advertise": "^1.1.4",
"expo-server": "workspace:^55.0.5",
"fetch-nodeshim": "^0.4.6",
"fetch-nodeshim": "^0.4.10",
"getenv": "^2.0.0",
"glob": "^13.0.0",
"lan-network": "^0.2.0",
"lan-network": "^0.2.1",
"multitars": "^0.2.3",
"node-forge": "^1.3.3",
"npm-package-arg": "^11.0.0",
Expand Down
Loading
Loading