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
6 changes: 6 additions & 0 deletions .changeset/expo-58-native-peers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@tanstack/charts': patch
'@tanstack/react-native-charts': patch
---

Accept React Native 0.88 for Expo SDK 58 while preserving React Native 0.86 support.
15 changes: 15 additions & 0 deletions API-FRICTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -5238,6 +5238,21 @@ Each entry records:
renders its chart under Hermes; the packed artifact has not been run on that
simulator.

- Expo 58 follow-up (issue #236): both the standalone native adapter and the
unified package rejected React Native 0.88 because their peer range stopped
at 0.86.x. Both now accept 0.86.x or 0.88.x. The existing Expo consumer uses
SDK 58, React 19.3, React Native 0.88, and SVG 15.16, while the bare consumer
stays on 0.86.2. Manifest regression coverage checks both supported sets and
rejects unverified native minor versions. Source typechecks and the packed
iOS/Android Metro gates pass for both consumers. This does not establish
on-device rendering for Expo 58.
- The same upgrade exposed implicit optional React/React DOM ownership in the
Octane fixtures: pnpm selected React 19.3 for their renderer while retaining
React 19.2.3 for Octane. Each fixture now declares its matching React pair,
and Expo declares React DOM 19.3 for its optional web peer. The installed
Octane dependency graphs resolve React 19.2.3 on both sides again. Regression
coverage keeps those fixture peers aligned with the workspace pair.

### F-172 — Metro skipped the fixture-owned Babel runtime

- Status: resolved
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/conformance/previews/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"schemaVersion": 1,
"width": 288,
"height": 192,
"sourceHash": "e62990d1bc2ce6a38a60f900c2f8c32d8048c57ccd11c5be4f8d673ec9fcb9ad",
"sourceHash": "4c9a63949cbf9511cf8abd901c2bb8224ea959d284456a9b90e1b87745400ef9",
"assets": [
{
"id": "01-line-gaps",
Expand Down
34 changes: 18 additions & 16 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,18 +90,18 @@ D3 dependency.

## Framework compatibility

| Adapter subpath | Framework peers |
| ------------------------------- | ------------------------------------------------------------------------------- |
| `@tanstack/charts/react` | React and React DOM 18 or 19 |
| `@tanstack/charts/react-native` | React `^19.2.3`, React Native `^0.86.0`, and `react-native-svg` `>=15.15.4 <16` |
| `@tanstack/charts/preact` | Preact `>=10` |
| `@tanstack/charts/vue` | Vue `>=3.5` |
| `@tanstack/charts/solid` | Solid `>=1.8` |
| `@tanstack/charts/svelte` | Svelte `^5.20.0` |
| `@tanstack/charts/angular` | Angular core and platform browser `>=19` |
| `@tanstack/charts/lit` | Lit `>=3.1.3` |
| `@tanstack/charts/alpine` | Alpine `>=3.15` |
| `@tanstack/charts/octane` | Octane `^0.1.13` |
| Adapter subpath | Framework peers |
| ------------------------------- | -------------------------------------------------------------------------------------------- |
| `@tanstack/charts/react` | React and React DOM 18 or 19 |
| `@tanstack/charts/react-native` | React `^19.2.3`, React Native `^0.86.0` or `^0.88.0`, and `react-native-svg` `>=15.15.4 <16` |
| `@tanstack/charts/preact` | Preact `>=10` |
| `@tanstack/charts/vue` | Vue `>=3.5` |
| `@tanstack/charts/solid` | Solid `>=1.8` |
| `@tanstack/charts/svelte` | Svelte `^5.20.0` |
| `@tanstack/charts/angular` | Angular core and platform browser `>=19` |
| `@tanstack/charts/lit` | Lit `>=3.1.3` |
| `@tanstack/charts/alpine` | Alpine `>=3.15` |
| `@tanstack/charts/octane` | Octane `^0.1.13` |

Framework peers are optional at the package level because package managers
cannot scope peers to individual export subpaths. Install only the peers for
Expand All @@ -111,15 +111,15 @@ package when the application needs browser mounting or server rendering.
## React Native and Expo

The React Native adapter is experimental and renders through
`react-native-svg`. Expo 57 applications can install the package and the SVG
`react-native-svg`. Expo 57 and 58 applications can install the package and the SVG
version selected by Expo:

```sh
pnpm add @tanstack/charts
pnpm exec expo install react-native-svg
```

Bare React Native 0.86 applications install the renderer directly:
Bare React Native 0.86 and 0.88 applications install the renderer directly:

```sh
pnpm add @tanstack/charts react react-native react-native-svg@^15.15.4
Expand All @@ -137,8 +137,10 @@ import { tooltip } from '@tanstack/charts/react-native/tooltip'
```

Packed tarballs are typechecked and bundled through default bare React Native
and Expo Metro configurations on iOS and Android. The workspace Expo 57
fixture also renders in Expo Go on an iOS simulator. Native responder and
and Expo Metro configurations on iOS and Android. The current fixtures cover
bare React Native 0.86.2 and Expo 58 with React Native 0.88.0. The earlier Expo
57 fixture rendered in Expo Go on an iOS simulator; Expo 58 has not yet been
verified on a simulator or device. Native responder and
accessibility cursor behavior has component regression coverage. Bare-native
and Android simulator runs, physical devices, visual parity, and screen-reader
verification are not currently part of the release gate.
Expand Down
9 changes: 5 additions & 4 deletions examples/charts-expo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@
"dependencies": {
"@tanstack/charts": "workspace:*",
"d3-scale": "4.0.2",
"expo": "~57.0.9",
"react": "19.2.3",
"react-native": "0.86.2",
"react-native-svg": "15.15.4"
"expo": "~58.0.14",
"react": "19.3.0",
"react-dom": "19.3.0",
"react-native": "0.88.0",
"react-native-svg": "15.16.0"
},
"devDependencies": {
"@types/d3-scale": "^4.0.9",
Expand Down
4 changes: 3 additions & 1 deletion examples/charts-octane/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
"d3-array": "3.2.4",
"d3-scale": "4.0.2",
"d3-shape": "3.2.0",
"octane": "0.1.13"
"octane": "0.1.13",
"react": "19.2.3",
"react-dom": "19.2.3"
},
"devDependencies": {
"@types/d3-array": "^3.2.2",
Expand Down
34 changes: 18 additions & 16 deletions packages/charts-core/docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,18 +90,18 @@ D3 dependency.

## Framework compatibility

| Adapter subpath | Framework peers |
| ------------------------------- | ------------------------------------------------------------------------------- |
| `@tanstack/charts/react` | React and React DOM 18 or 19 |
| `@tanstack/charts/react-native` | React `^19.2.3`, React Native `^0.86.0`, and `react-native-svg` `>=15.15.4 <16` |
| `@tanstack/charts/preact` | Preact `>=10` |
| `@tanstack/charts/vue` | Vue `>=3.5` |
| `@tanstack/charts/solid` | Solid `>=1.8` |
| `@tanstack/charts/svelte` | Svelte `^5.20.0` |
| `@tanstack/charts/angular` | Angular core and platform browser `>=19` |
| `@tanstack/charts/lit` | Lit `>=3.1.3` |
| `@tanstack/charts/alpine` | Alpine `>=3.15` |
| `@tanstack/charts/octane` | Octane `^0.1.13` |
| Adapter subpath | Framework peers |
| ------------------------------- | -------------------------------------------------------------------------------------------- |
| `@tanstack/charts/react` | React and React DOM 18 or 19 |
| `@tanstack/charts/react-native` | React `^19.2.3`, React Native `^0.86.0` or `^0.88.0`, and `react-native-svg` `>=15.15.4 <16` |
| `@tanstack/charts/preact` | Preact `>=10` |
| `@tanstack/charts/vue` | Vue `>=3.5` |
| `@tanstack/charts/solid` | Solid `>=1.8` |
| `@tanstack/charts/svelte` | Svelte `^5.20.0` |
| `@tanstack/charts/angular` | Angular core and platform browser `>=19` |
| `@tanstack/charts/lit` | Lit `>=3.1.3` |
| `@tanstack/charts/alpine` | Alpine `>=3.15` |
| `@tanstack/charts/octane` | Octane `^0.1.13` |

Framework peers are optional at the package level because package managers
cannot scope peers to individual export subpaths. Install only the peers for
Expand All @@ -111,15 +111,15 @@ package when the application needs browser mounting or server rendering.
## React Native and Expo

The React Native adapter is experimental and renders through
`react-native-svg`. Expo 57 applications can install the package and the SVG
`react-native-svg`. Expo 57 and 58 applications can install the package and the SVG
version selected by Expo:

```sh
pnpm add @tanstack/charts
pnpm exec expo install react-native-svg
```

Bare React Native 0.86 applications install the renderer directly:
Bare React Native 0.86 and 0.88 applications install the renderer directly:

```sh
pnpm add @tanstack/charts react react-native react-native-svg@^15.15.4
Expand All @@ -137,8 +137,10 @@ import { tooltip } from '@tanstack/charts/react-native/tooltip'
```

Packed tarballs are typechecked and bundled through default bare React Native
and Expo Metro configurations on iOS and Android. The workspace Expo 57
fixture also renders in Expo Go on an iOS simulator. Native responder and
and Expo Metro configurations on iOS and Android. The current fixtures cover
bare React Native 0.86.2 and Expo 58 with React Native 0.88.0. The earlier Expo
57 fixture rendered in Expo Go on an iOS simulator; Expo 58 has not yet been
verified on a simulator or device. Native responder and
accessibility cursor behavior has component regression coverage. Bare-native
and Android simulator runs, physical devices, visual parity, and screen-reader
verification are not currently part of the release gate.
Expand Down
2 changes: 1 addition & 1 deletion packages/charts-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"preact": ">=10",
"react": "^18.0.0 || ^19.0.0",
"react-dom": "^18.0.0 || ^19.0.0",
"react-native": "^0.86.0",
"react-native": "^0.86.0 || ^0.88.0",
"react-native-svg": ">=15.15.4 <16",
"solid-js": ">=1.8",
"svelte": "^5.20.0",
Expand Down
4 changes: 3 additions & 1 deletion packages/octane-charts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
},
"devDependencies": {
"@types/d3-scale": "^4.0.9",
"d3-scale": "4.0.2"
"d3-scale": "4.0.2",
"react": "19.2.3",
"react-dom": "19.2.3"
},
"peerDependencies": {
"octane": "^0.1.13"
Expand Down
6 changes: 0 additions & 6 deletions packages/react-native-charts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,3 @@ than the native bundle floor.
default CSS-variable fill and for line-dot legend centers when the chart
background is transparent. Set it to the host background in dark themes. A
literal `definition.focusRing.fill` takes precedence.

The bare fixture uses React Native 0.86.2 with `react-native-svg` 15.15.5. The
Expo 57 fixture uses `react-native-svg` 15.15.4 and renders in Expo Go on an iOS
simulator. It remains experimental: bare-native and Android simulators,
physical devices, gestures, accessibility, release builds, and performance
still need validation.
2 changes: 1 addition & 1 deletion packages/react-native-charts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
},
"peerDependencies": {
"react": "^19.2.3",
"react-native": "^0.86.0",
"react-native": "^0.86.0 || ^0.88.0",
"react-native-svg": ">=15.15.4 <16"
}
}
Loading