GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Upgrade to react-native 0.85, Animated improvements, missing APIs and props by Freddy03h · Pull Request #857 · rescript-react-native/rescript-react-native

Conversation

@Freddy03h

@Freddy03h Freddy03h commented Oct 25, 2026

Copy link
Copy Markdown
Member

Upgrade the bindings to [email protected] (and [email protected] as dev dependency), plus a pass on Animated, missing APIs/props and deprecations. Bindings were checked against the generated types (types_generated) and runtime deprecation warnings of [email protected]. One commit per topic, each commit builds on its own.

React Native 0.85

  • Breaking: remove StyleSheet.absoluteFillObject (removed upstream)
  • Add Animated.useAnimatedValueXY / Animated.useAnimatedColor, EventEmitter
  • Add selection to TextInput.ChangeEvent payload (facebook/react-native@c1f5445), Pressable onPressMove, ScrollView scrollsChildToFocus
  • peerDependencies: react-native >= 0.85.0; dev dependency rescript@~12.3.1

Animated

  • Fix: Animated.Color listener / stopAnimation / resetAnimation callbacks receive a color string, not an rgba object
  • Fix: StyleProp.color returned Animated.Color.t instead of Color.t (it could not be used in a style); add StyleProp.animatedColor
  • Breaking: Animated.Color.create(~initialValue=?, ~config=?) with Animated.Color.input (Rgba({r, g, b, a}) / String("red")), replaces create / createFromString / rgbaValue; setValue takes input
  • Breaking: Animated.parallel(anims, ~config=?), stopTogether optional
  • Add ~config to Value.create / ValueXY.create, ValueXY.createFromValues, Timing/Spring.fromInterpolation, hasListeners, attachNativeEvent, forkEvent, unforkEvent
  • Zero-cost Animated.timing / spring / decay / start / stop / reset / Value.interpolate: they were let aliases compiled to JS wrapper functions

Fixes

  • Color.hsla generated hsl(h, s%, l%, a), which React Native's color parser rejects
  • Breaking: ScrollView StickyHeaderComponent is a React.component<ScrollView.stickyHeaderProps> (was typed as React.element, which RN can't render), add Animated.Value.fromStickyHeaderScrollValue
  • Breaking: VirtualizedList.cellRendererComponentProps is typed (was {.})

New APIs and globals

  • I18nManager, DeviceEventEmitter, ReactNativeVersion, ErrorUtils
  • Global.requestIdleCallback / cancelIdleCallback / setImmediate / clearImmediate / queueMicrotask

New props

  • aria-* accessibility props (ariaLabel, ariaChecked with Mixed, ariaHidden, ariaLive, …) on all components using Accessibility props
  • View: touch events (onTouchStart… and Capture variants), onFocusCapture / onBlurCapture, nextFocus* (Android), experimental_accessibilityOrder
  • Pressable cancelable, TouchableWithoutFeedback rejectResponderTermination, TextInput inputAccessoryViewButtonLabel, Image src
  • Style.matrix transform, all fontVariant values (ligatures, contextual, stylistic-*)

Deprecations

  • InteractionManager (deprecated by RN, points to Global.requestIdleCallback)
  • ProgressBarAndroid, Clipboard (extracted from core), StatusBar.setNetworkActivityIndicatorVisible
  • TextInput blurOnSubmit, hasTVPreferredFocus on Button / TouchableHighlight / TouchableOpacity: note that ReScript doesn't warn on deprecated record fields, so these are documentation only

Notes for reviewers

  • npm test passes (clean build, warnings as errors). New/changed bindings were checked by compiling throwaway usage files and reading the generated JS; nothing was run in a real React Native app.
  • Left for later: replacing functors (NativeElement.Impl, Event.SyntheticEvent…) to make the generated JS fully side-effect free, Text ariaLevel (not a RN prop), TurboModuleRegistry, unstable_batchedUpdates.
  • package.json version is still 0.84.0, to be bumped in the release commit.

🤖 Generated with Claude Code

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Freddy03h and others added 10 commits October 25, 2026 11:57
@Freddy03h @claude
upgrade to react-native 0.85 and rescript 12.3.1
ea583a3
- remove StyleSheet.absoluteFillObject (removed upstream)
- add Animated.useAnimatedValueXY and Animated.useAnimatedColor
- add EventEmitter module
- add selection to TextInput.ChangeEvent payload
- add onPressMove prop to Pressable
- add scrollsChildToFocus android prop to ScrollView

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h @claude
Animated: fix Color callbacks and StyleProp.color, unify Color creati…
8770a67
…on, optional parallel config

- Color listener/stopAnimation/resetAnimation callbacks receive a color string
- fix StyleProp.color returning Animated.Color.t instead of Color.t
- add StyleProp.animatedColor
- unify Color.create(~initialValue=?, ~config=?) with Color.input, Color.setValue takes input
- add ~config to Value.create and ValueXY.create, add ValueXY.createFromValues
- add Timing/Spring fromInterpolation
- add hasListeners, attachNativeEvent, forkEvent, unforkEvent
- parallel takes an optional ~config

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h @claude
fix Color.hsla generating an invalid hsl() color
4b47899
hsla() produced `hsl(h, s%, l%, a)`, which React Native's color parser rejects.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h @claude
Animated: use externals instead of let aliases to avoid JS wrapper fu…
86a2e04
…nctions

timing, spring, decay, start, stop, reset and Value.interpolate were `let`
aliases of externals, compiled to wrapper functions.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h @claude
add I18nManager, DeviceEventEmitter and ReactNativeVersion bindings
2ede575
Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h @claude
add missing View, Pressable, TouchableWithoutFeedback, TextInput and …
2cecab9
…Image props, fix StickyHeaderComponent type

- View: touch events, onFocusCapture/onBlurCapture, nextFocus* (Android),
  experimental_accessibilityOrder
- Pressable: cancelable
- TouchableWithoutFeedback: rejectResponderTermination
- TextInput: inputAccessoryViewButtonLabel
- Image: src
- ScrollView: StickyHeaderComponent is a component, not an element
  (+ Animated.Value.fromStickyHeaderScrollValue)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h @claude
add Style.matrix, type VirtualizedList cellRendererComponentProps, de…
2ca1bc7
…precate InteractionManager

- InteractionManager is deprecated by React Native; runAfterInteractions
  returns a cancellable task

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h @claude
add aria-* accessibility props and all fontVariant values
d6986a1
- aria-busy, aria-checked (true/false/mixed), aria-disabled, aria-expanded,
  aria-hidden, aria-label, aria-selected, aria-value*, aria-modal (iOS),
  aria-labelledby and aria-live (Android)
- fontVariant: ligatures, contextual and stylistic-one..twenty

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h @claude
deprecate APIs and props deprecated or extracted by React Native 0.85
6333755
- ProgressBarAndroid, Clipboard (extracted from core)
- StatusBar.setNetworkActivityIndicatorVisible
- TextInput blurOnSubmit, hasTVPreferredFocus on Button/TouchableHighlight/
  TouchableOpacity

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h @claude
add requestIdleCallback, setImmediate, queueMicrotask globals and Err…
a65d9cf
…orUtils

- Global: requestIdleCallback / cancelIdleCallback, setImmediate /
  clearImmediate, queueMicrotask
- ErrorUtils: setGlobalHandler, getGlobalHandler, reportError,
  reportFatalError
- InteractionManager deprecation points to Global.requestIdleCallback

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 25, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-25T13:46:20.477596Z a65d9cf PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

chatgpt-codex-connector[bot]
chatgpt-codex-connector Bot reviewed Oct 25, 2026
View reviewed changes

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a65d9cf49d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/components/Image.res
referrerPolicy?: referrerPolicy,
resizeMode?: Style.resizeMode,
source: Source.t,
src?: string,

@chatgpt-codex-connector chatgpt-codex-connector Bot Oct 25, 2026

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make source optional when using src

Adding src does not make the new API usable by itself because source remains a required field immediately above. A valid React Native <Image src="…" /> therefore fails ReScript type-checking unless callers also provide a redundant source; make source optional so either image-source prop can be used.

Useful? React with 👍 / 👎.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Freddy03h reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
@Freddy03h @claude
Image: make source optional so src / srcSet can be used alone
76ca3fc
Matches React Native, where source is optional (source?: ImageSource).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@Freddy03h
Freddy03h requested review from cknitt and fhammerschmidt October 25, 2026 15:12
fhammerschmidt
fhammerschmidt approved these changes Oct 25, 2026
View reviewed changes
@Freddy03h
Freddy03h merged commit 9485121 into main Nov 11, 2026
2 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@Freddy03h
Freddy03h deleted the react-native-85 branch November 11, 2026 08:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@chatgpt-codex-connector chatgpt-codex-connector[bot] chatgpt-codex-connector[bot] left review comments
@fhammerschmidt fhammerschmidt fhammerschmidt approved these changes
@cknitt cknitt Awaiting requested review from cknitt

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@Freddy03h @fhammerschmidt
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.