Repository navigation
Conversation
- 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 <noreply@anthropic.com>
…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 <noreply@anthropic.com>
hsla() produced `hsl(h, s%, l%, a)`, which React Native's color parser rejects. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…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 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…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 <noreply@anthropic.com>
…precate InteractionManager - InteractionManager is deprecated by React Native; runAfterInteractions returns a cancellable task Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 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 <noreply@anthropic.com>
- ProgressBarAndroid, Clipboard (extracted from core) - StatusBar.setNetworkActivityIndicatorVisible - TextInput blurOnSubmit, hasTVPreferredFocus on Button/TouchableHighlight/ TouchableOpacity Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…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 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 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".
| referrerPolicy?: referrerPolicy, | ||
| resizeMode?: Style.resizeMode, | ||
| source: Source.t, | ||
| src?: string, |
There was a problem hiding this comment.
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 👍 / 👎.
Matches React Native, where source is optional (source?: ImageSource). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upgrade the bindings to
react-native@0.85(andrescript@12.3.1as dev dependency), plus a pass onAnimated, missing APIs/props and deprecations. Bindings were checked against the generated types (types_generated) and runtime deprecation warnings ofreact-native@0.85.3. One commit per topic, each commit builds on its own.React Native 0.85
StyleSheet.absoluteFillObject(removed upstream)Animated.useAnimatedValueXY/Animated.useAnimatedColor,EventEmitterselectiontoTextInput.ChangeEventpayload (facebook/react-native@c1f5445),PressableonPressMove,ScrollViewscrollsChildToFocuspeerDependencies:react-native >= 0.85.0; dev dependencyrescript@~12.3.1Animated
Animated.Colorlistener /stopAnimation/resetAnimationcallbacks receive a color string, not an rgba objectStyleProp.colorreturnedAnimated.Color.tinstead ofColor.t(it could not be used in a style); addStyleProp.animatedColorAnimated.Color.create(~initialValue=?, ~config=?)withAnimated.Color.input(Rgba({r, g, b, a})/String("red")), replacescreate/createFromString/rgbaValue;setValuetakesinputAnimated.parallel(anims, ~config=?),stopTogetheroptional~configtoValue.create/ValueXY.create,ValueXY.createFromValues,Timing/Spring.fromInterpolation,hasListeners,attachNativeEvent,forkEvent,unforkEventAnimated.timing/spring/decay/start/stop/reset/Value.interpolate: they wereletaliases compiled to JS wrapper functionsFixes
Color.hslageneratedhsl(h, s%, l%, a), which React Native's color parser rejectsScrollViewStickyHeaderComponentis aReact.component<ScrollView.stickyHeaderProps>(was typed asReact.element, which RN can't render), addAnimated.Value.fromStickyHeaderScrollValueVirtualizedList.cellRendererComponentPropsis typed (was{.})New APIs and globals
I18nManager,DeviceEventEmitter,ReactNativeVersion,ErrorUtilsGlobal.requestIdleCallback/cancelIdleCallback/setImmediate/clearImmediate/queueMicrotaskNew props
aria-*accessibility props (ariaLabel,ariaCheckedwithMixed,ariaHidden,ariaLive, …) on all components usingAccessibilitypropsView: touch events (onTouchStart… andCapturevariants),onFocusCapture/onBlurCapture,nextFocus*(Android),experimental_accessibilityOrderPressablecancelable,TouchableWithoutFeedbackrejectResponderTermination,TextInputinputAccessoryViewButtonLabel,ImagesrcStyle.matrixtransform, allfontVariantvalues (ligatures,contextual,stylistic-*)Deprecations
InteractionManager(deprecated by RN, points toGlobal.requestIdleCallback)ProgressBarAndroid,Clipboard(extracted from core),StatusBar.setNetworkActivityIndicatorVisibleTextInputblurOnSubmit,hasTVPreferredFocusonButton/TouchableHighlight/TouchableOpacity: note that ReScript doesn't warn on deprecated record fields, so these are documentation onlyNotes for reviewers
npm testpasses (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.NativeElement.Impl,Event.SyntheticEvent…) to make the generated JS fully side-effect free,TextariaLevel(not a RN prop),TurboModuleRegistry,unstable_batchedUpdates.package.jsonversionis still0.84.0, to be bumped in the release commit.🤖 Generated with Claude Code