Skip to content

v0.10.0

Choose a tag to compare

@joshstovall joshstovall released this 30 May 19:12
· 21 commits to main since this release

This is a platform-compatibility release: Platform Blocks now targets Expo SDK 56 and React Native 0.85, along with the runtime fixes that the React 19 / RN 0.85 / Hermes upgrade surfaced. No public component APIs changed or were removed.

Expo SDK 56 / React Native 0.85

@platform-blocks/ui and @platform-blocks/charts now build and test against the SDK 56 toolchain:

Package Version
react / react-dom 19.2.3
react-native 0.85.3
react-native-reanimated 4.3.1
react-native-worklets 0.8.3
react-native-safe-area-context ~5.7.0
react-native-screens ~4.25.2
react-native-svg 15.15.4
typescript ~6.0.3

Peer-dependency ranges remain permissive (react >=18, react-native >=0.73), so the packages still work on older toolchains — but everything is now verified on React 19.2 / RN 0.85.

Fixes

ContextMenu no longer crashes on iOS / Android

<ContextMenu> registered document / window event listeners inside a useEffect unconditionally. Hermes evaluated that effect on native and threw because those globals don't exist there. The listeners are now guarded behind Platform.OS === 'web', so ContextMenu mounts cleanly on iOS and Android (where it uses the long-press path instead).

AppShell status bar no longer crashes on Android (SDK 56 edge-to-edge)

expo-navigation-bar removed setBackgroundColorAsync / setButtonStyleAsync in SDK 56 (Android edge-to-edge) in favor of a synchronous setStyle. StatusBarManager called the removed methods and threw undefined is not a function. It now feature-detects the API — preferring setStyle, falling back to the legacy async methods, and only setting a navigation-bar background color when that (legacy) method still exists — so it works across expo-navigation-bar versions.

StyleSheet.absoluteFillObjectStyleSheet.absoluteFill

React Native 0.85 dropped StyleSheet.absoluteFillObject from both its types and its runtime export. Eight components (Badge, Card, Chip, Dialog, Overlay, ShimmerText, DrawerNavigator, and the overlay renderer) referenced it, which silently broke absolute-fill positioning on native. They now use the equivalent StyleSheet.absoluteFill.

@platform-blocks/charts resolved to unpublished source on React Native

The charts package's react-native export condition pointed at ./src/index.ts, but src/ is not part of the published tarball — so Metro / Expo consumers installing from npm hit a module-not-found error. It now resolves to the built ./lib/esm/index.js, matching @platform-blocks/ui.

Quieter charts without a ChartInteractionProvider

LineChart, CandlestickChart, and the charts provider logged a console.warn on every render when used outside a ChartInteractionProvider. The interaction context is optional (standalone charts are fully supported), so the warnings have been removed — bringing those components in line with the other ~17 chart types that already treated it as optional.

Maintenance

  • @platform-blocks/charts now ships a LICENSE file (MIT), matching @platform-blocks/ui.
  • Charts type declarations are now emitted as a full .d.ts tree via tsc (matching ui) instead of a single bundled file. The stricter tsc pass surfaced and removed 55 dead @ts-ignore directives that were suppressing nothing, and the charts source now passes the same ESLint config as ui.
  • Charts react peer range widened from >=18.0.0 <20.0.0 to >=18.0.0, matching ui and reflecting React 19 support.
  • Tooling parity between the two packages: shared ESLint flat config, rollup resolve / commonjs settings, and .npmignore.
  • Reanimated 4.3 AnimatedStyle typing fix in Knob.
  • Docs site: the component playground no longer crashes under React 19 when an example's props include a React node (non-serializable defaults are now handled when computing the change-detection key), and the landing page uses a valid download icon.

Migration notes

To adopt 0.10.0, move your app to Expo SDK 56 / React Native 0.85 (React 19.2). The fastest path:

npx expo install expo@^56
npx expo install --fix

That aligns react, react-native, react-native-reanimated (4.3), react-native-worklets (0.8), and the Expo modules to their SDK 56 versions. If you depend on the optional native modules that the UI package integrates with (expo-navigation-bar, expo-haptics, etc.), reinstall them via expo install so they land on SDK 56 builds.

No public component APIs changed in this release, so no application code changes are required beyond the platform bump.