react-native
Advanced tools
@@ -34,3 +34,3 @@ /** | ||
| /** | ||
| * @see https://github.com/facebook/react-native/commit/b8c8562 | ||
| * @see https://github.com/react/react-native/commit/b8c8562 | ||
| */ | ||
@@ -37,0 +37,0 @@ const AnimatedScrollView: AnimatedComponentType< |
@@ -131,3 +131,3 @@ /** | ||
| * Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel | ||
| * https://github.com/facebook/react-native/issues/34424 | ||
| * https://github.com/react/react-native/issues/34424 | ||
| */ | ||
@@ -186,3 +186,3 @@ 'aria-label'?: ?string, | ||
| [button:source]: | ||
| https://github.com/facebook/react-native/blob/HEAD/Libraries/Components/Button.js | ||
| https://github.com/react/react-native/blob/HEAD/Libraries/Components/Button.js | ||
@@ -189,0 +189,0 @@ ```jsx |
@@ -579,3 +579,3 @@ /** | ||
| * | ||
| * see [Issue#7070](https://github.com/facebook/react-native/issues/7070) | ||
| * see [Issue#7070](https://github.com/react/react-native/issues/7070) | ||
| * for more detail. | ||
@@ -582,0 +582,0 @@ * |
@@ -1035,3 +1035,3 @@ /** | ||
| * | ||
| * see [Issue#7070](https://github.com/facebook/react-native/issues/7070) | ||
| * see [Issue#7070](https://github.com/react/react-native/issues/7070) | ||
| * for more detail. | ||
@@ -1038,0 +1038,0 @@ * |
@@ -35,3 +35,3 @@ /** | ||
| /** | ||
| * @see https://github.com/facebook/react-native/blob/0.34-stable\Libraries\Components\Touchable\Touchable.js | ||
| * @see https://github.com/react/react-native/blob/0.34-stable\Libraries\Components\Touchable\Touchable.js | ||
| */ | ||
@@ -38,0 +38,0 @@ interface TouchableMixin { |
@@ -37,3 +37,3 @@ /** | ||
| * Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel | ||
| * https://github.com/facebook/react-native/issues/34424 | ||
| * https://github.com/react/react-native/issues/34424 | ||
| */ | ||
@@ -40,0 +40,0 @@ 'aria-label'?: string | undefined; |
@@ -373,3 +373,3 @@ /** | ||
| * Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel | ||
| * https://github.com/facebook/react-native/issues/34424 | ||
| * https://github.com/react/react-native/issues/34424 | ||
| */ | ||
@@ -376,0 +376,0 @@ 'aria-label'?: ?Stringish, |
@@ -31,3 +31,3 @@ /** | ||
| static minor: number = 86; | ||
| static patch: number = 0; | ||
| static patch: number = 2; | ||
| static prerelease: string | null = null; | ||
@@ -34,0 +34,0 @@ |
@@ -20,4 +20,4 @@ /** | ||
| } else { | ||
| // see https://github.com/facebook/react-native/issues/10881 | ||
| // see https://github.com/react/react-native/issues/10881 | ||
| polyfillObjectProperty(navigator, 'product', () => 'ReactNative'); | ||
| } |
@@ -162,3 +162,3 @@ /** | ||
| // Use for loop rather than forEach as per @vjeux's advice | ||
| // https://github.com/facebook/react-native/commit/c8fd9f7588ad02d2293cac7224715f4af7b0f352#commitcomment-14570051 | ||
| // https://github.com/react/react-native/commit/c8fd9f7588ad02d2293cac7224715f4af7b0f352#commitcomment-14570051 | ||
| for (let i = 0; i < passReactNativeMicrotasks.length; ++i) { | ||
@@ -165,0 +165,0 @@ _callTimer(passReactNativeMicrotasks[i], 0); |
@@ -23,3 +23,3 @@ /** | ||
| * adding all event listeners directly to RCTNativeAppEventEmitter. | ||
| * @see https://github.com/facebook/react-native/blob/0.34-stable\Libraries\EventEmitter\RCTNativeAppEventEmitter.js | ||
| * @see https://github.com/react/react-native/blob/0.34-stable\Libraries\EventEmitter\RCTNativeAppEventEmitter.js | ||
| * @see https://reactnative.dev/docs/native-modules-ios#sending-events-to-javascript | ||
@@ -26,0 +26,0 @@ */ |
@@ -11,3 +11,3 @@ /** | ||
| /* | ||
| * @see https://github.com/facebook/react-native/blob/master/Libraries/Image/ImageSource.js | ||
| * @see https://github.com/react/react-native/blob/master/Libraries/Image/ImageSource.js | ||
| */ | ||
@@ -14,0 +14,0 @@ export interface ImageURISource { |
@@ -520,3 +520,3 @@ /* | ||
| // Check if there exists a file with that url on disk already | ||
| // This should fix issue https://github.com/facebook/react-native/issues/46870 | ||
| // This should fix issue https://github.com/react/react-native/issues/46870 | ||
| if ([[NSFileManager defaultManager] fileExistsAtPath:request.URL.path]) { | ||
@@ -523,0 +523,0 @@ mutableRequest.URL = request.URL; |
@@ -120,3 +120,3 @@ /** | ||
| * To see it in action, try the | ||
| * [PanResponder example in RNTester](https://github.com/facebook/react-native/blob/HEAD/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js) | ||
| * [PanResponder example in RNTester](https://github.com/react/react-native/blob/HEAD/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js) | ||
| */ | ||
@@ -123,0 +123,0 @@ |
@@ -6,3 +6,3 @@ # React & React Native Versions | ||
| 1. The versions in the `package.json` of the new app template. For example [for React Native 0.68.1](https://github.com/facebook/react-native/blob/0.68-stable/template/package.json#L12-L15) the versions are aligned as follows: | ||
| 1. The versions in the `package.json` of the new app template. For example [for React Native 0.68.1](https://github.com/react/react-native/blob/0.68-stable/template/package.json#L12-L15) the versions are aligned as follows: | ||
@@ -16,3 +16,3 @@ ``` | ||
| 1. The React renderers **shipped** with React Native inside this folder, the [./Libraries/Renderer](https://github.com/facebook/react-native/tree/main/Libraries/Renderer) folder, of React Native. | ||
| 1. The React renderers **shipped** with React Native inside this folder, the [./Libraries/Renderer](https://github.com/react/react-native/tree/main/Libraries/Renderer) folder, of React Native. | ||
@@ -19,0 +19,0 @@ This practically means that you **can't bump** the version of React in your `package.json` to a later version, |
@@ -26,3 +26,3 @@ /** | ||
| * | ||
| * @see https://github.com/facebook/react-native/issues/934 | ||
| * @see https://github.com/react/react-native/issues/934 | ||
| */ | ||
@@ -29,0 +29,0 @@ export function polyfillObjectProperty<T>( |
+12
-12
| { | ||
| "name": "react-native", | ||
| "version": "0.86.0", | ||
| "version": "0.86.2", | ||
| "description": "A framework for building native apps using React", | ||
@@ -8,3 +8,3 @@ "license": "MIT", | ||
| "type": "git", | ||
| "url": "git+https://github.com/facebook/react-native.git", | ||
| "url": "git+https://github.com/react/react-native.git", | ||
| "directory": "packages/react-native" | ||
@@ -23,3 +23,3 @@ }, | ||
| ], | ||
| "bugs": "https://github.com/facebook/react-native/issues", | ||
| "bugs": "https://github.com/react/react-native/issues", | ||
| "engines": { | ||
@@ -154,3 +154,3 @@ "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" | ||
| "peerDependencies": { | ||
| "@react-native/jest-preset": "0.86.0", | ||
| "@react-native/jest-preset": "0.86.2", | ||
| "@types/react": "^19.1.1", | ||
@@ -168,9 +168,9 @@ "react": "^19.2.3" | ||
| "dependencies": { | ||
| "@react-native/assets-registry": "0.86.0", | ||
| "@react-native/codegen": "0.86.0", | ||
| "@react-native/community-cli-plugin": "0.86.0", | ||
| "@react-native/gradle-plugin": "0.86.0", | ||
| "@react-native/js-polyfills": "0.86.0", | ||
| "@react-native/normalize-colors": "0.86.0", | ||
| "@react-native/virtualized-lists": "0.86.0", | ||
| "@react-native/assets-registry": "0.86.2", | ||
| "@react-native/codegen": "0.86.2", | ||
| "@react-native/community-cli-plugin": "0.86.2", | ||
| "@react-native/gradle-plugin": "0.86.2", | ||
| "@react-native/js-polyfills": "0.86.2", | ||
| "@react-native/normalize-colors": "0.86.2", | ||
| "@react-native/virtualized-lists": "0.86.2", | ||
| "abort-controller": "^3.0.0", | ||
@@ -183,3 +183,3 @@ "anser": "^1.4.9", | ||
| "flow-enums-runtime": "^0.0.6", | ||
| "hermes-compiler": "250829098.0.14", | ||
| "hermes-compiler": "250829098.0.16", | ||
| "invariant": "^2.2.4", | ||
@@ -186,0 +186,0 @@ "memoize-one": "^5.0.0", |
@@ -26,3 +26,3 @@ /** | ||
| RCTVersionMinor: @(86), | ||
| RCTVersionPatch: @(0), | ||
| RCTVersionPatch: @(2), | ||
| RCTVersionPrerelease: [NSNull null], | ||
@@ -29,0 +29,0 @@ }; |
@@ -250,3 +250,3 @@ /* | ||
| // & height is reported differently (0 instead of Y position value matching height of frame) | ||
| // Fixes similar issue we saw with https://github.com/facebook/react-native/pull/34503 | ||
| // Fixes similar issue we saw with https://github.com/react/react-native/pull/34503 | ||
| if (UIAccessibilityPrefersCrossFadeTransitions() && keyboardEndFrame.size.height == 0) { | ||
@@ -253,0 +253,0 @@ newContentOffset.y = 0; |
@@ -801,3 +801,3 @@ /* | ||
| // copy the attributes from text to the right. This allows consistency between backed input and new AttributedText | ||
| // https://github.com/facebook/react-native/blob/3102a58df38d96f3dacef0530e4dbb399037fcd2/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.kt#L30 | ||
| // https://github.com/react/react-native/blob/3102a58df38d96f3dacef0530e4dbb399037fcd2/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/SetSpanOperation.kt#L30 | ||
| - (void)_updateTypingAttributes | ||
@@ -804,0 +804,0 @@ { |
@@ -345,3 +345,3 @@ /* | ||
| // & height is reported differently (0 instead of Y position value matching height of frame) | ||
| // Fixes similar issue we saw with https://github.com/facebook/react-native/pull/34503 | ||
| // Fixes similar issue we saw with https://github.com/react/react-native/pull/34503 | ||
| if (UIAccessibilityPrefersCrossFadeTransitions() && endFrame.size.height == 0) { | ||
@@ -348,0 +348,0 @@ newContentOffset.y = 0; |
@@ -768,5 +768,5 @@ /* | ||
| // Please note that the original coordinates, `react-native`, have been voided | ||
| // as they caused https://github.com/facebook/react-native/issues/35210 | ||
| // as they caused https://github.com/react/react-native/issues/35210 | ||
| publishing { | ||
| publications { getByName("release", MavenPublication::class) { artifactId = "react-android" } } | ||
| } |
@@ -1,2 +0,2 @@ | ||
| VERSION_NAME=0.86.0 | ||
| VERSION_NAME=0.86.2 | ||
| react.internal.publishingGroup=com.facebook.react | ||
@@ -3,0 +3,0 @@ react.internal.hermesPublishingGroup=com.facebook.hermes |
@@ -40,3 +40,3 @@ /* | ||
| description = "A framework for building native apps with React" | ||
| url = "https://github.com/facebook/react-native" | ||
| url = "https://github.com/react/react-native" | ||
@@ -53,3 +53,3 @@ developers { | ||
| name = "MIT License" | ||
| url = "https://github.com/facebook/react-native/blob/HEAD/LICENSE" | ||
| url = "https://github.com/react/react-native/blob/HEAD/LICENSE" | ||
| distribution = "repo" | ||
@@ -60,5 +60,5 @@ } | ||
| scm { | ||
| url = "https://github.com/facebook/react-native.git" | ||
| connection = "scm:git:https://github.com/facebook/react-native.git" | ||
| developerConnection = "scm:git:git@github.com:facebook/react-native.git" | ||
| url = "https://github.com/react/react-native.git" | ||
| connection = "scm:git:https://github.com/react/react-native.git" | ||
| developerConnection = "scm:git:git@github.com:react/react-native.git" | ||
| } | ||
@@ -65,0 +65,0 @@ } |
@@ -88,3 +88,3 @@ /* | ||
| * | ||
| * https://github.com/facebook/react-native/issues/39651. | ||
| * https://github.com/react/react-native/issues/39651. | ||
| * https://github.com/square/okhttp/blob/4e7dbec1ea6c9cf8d80422ac9d44b9b185c749a3/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/ws/RealWebSocket.kt#L684. | ||
@@ -91,0 +91,0 @@ */ |
@@ -629,10 +629,11 @@ /* | ||
| if (ReactNativeFeatureFlags.overrideBySynchronousMountPropsAtMountingAndroid()) { | ||
| val propsMap = getMapFromPropsReadableMap(props) | ||
| var synchronousMountProps = tagToSynchronousMountProps[reactTag] | ||
| if (synchronousMountProps != null) { | ||
| synchronousMountProps.putAll(propsMap) | ||
| val propsMap = getAnimatedPropsMap(props) | ||
| val synchronousMountProps = tagToSynchronousMountProps[reactTag] ?: mutableMapOf() | ||
| clearAnimatedNullPropsMapKeys(props, synchronousMountProps) | ||
| synchronousMountProps.putAll(propsMap) | ||
| if (synchronousMountProps.isEmpty()) { | ||
| tagToSynchronousMountProps.remove(reactTag) | ||
| } else { | ||
| synchronousMountProps = propsMap | ||
| tagToSynchronousMountProps[reactTag] = synchronousMountProps | ||
| } | ||
| tagToSynchronousMountProps[reactTag] = synchronousMountProps | ||
| } | ||
@@ -1073,4 +1074,4 @@ } | ||
| // This is causing bugs like those otherwise: | ||
| // - https://github.com/facebook/react-native/issues/44610 | ||
| // - https://github.com/facebook/react-native/issues/45126 | ||
| // - https://github.com/react/react-native/issues/44610 | ||
| // - https://github.com/react/react-native/issues/45126 | ||
| viewsToDeleteAfterTouchFinishes.add(reactTag) | ||
@@ -1333,3 +1334,7 @@ } else { | ||
| if (propKey == PROP_TRANSFORM) { | ||
| assert(outputReadableMap.getType(propKey) == ReadableType.Array && propValue is List<*>) | ||
| val outputType = outputReadableMap.getType(propKey) | ||
| assert( | ||
| (outputType == ReadableType.Array || outputType == ReadableType.Null) && | ||
| propValue is List<*> | ||
| ) | ||
| val array = WritableNativeArray() | ||
@@ -1352,3 +1357,7 @@ for (item in propValue as List<*>) { | ||
| } else if (propKey == PROP_OPACITY) { | ||
| assert(outputReadableMap.getType(propKey) == ReadableType.Number && propValue is Number) | ||
| val outputType = outputReadableMap.getType(propKey) | ||
| assert( | ||
| (outputType == ReadableType.Number || outputType == ReadableType.Null) && | ||
| propValue is Number | ||
| ) | ||
| outputReadableMap.putDouble(propKey, (propValue as Number).toDouble()) | ||
@@ -1360,3 +1369,3 @@ } | ||
| private fun getMapFromPropsReadableMap(readableMap: ReadableMap): MutableMap<String, Any> { | ||
| private fun getAnimatedPropsMap(readableMap: ReadableMap): MutableMap<String, Any> { | ||
| val outputMap = mutableMapOf<String, Any>() | ||
@@ -1391,2 +1400,21 @@ | ||
| private fun clearAnimatedNullPropsMapKeys( | ||
| readableMap: ReadableMap, | ||
| outputMap: MutableMap<String, Any>, | ||
| ) { | ||
| // Native Animated uses synchronous null updates to restore animated-managed props. | ||
| // Keep this scoped to props stored by this override path today. | ||
| if ( | ||
| readableMap.hasKey(PROP_TRANSFORM) && | ||
| readableMap.getType(PROP_TRANSFORM) == ReadableType.Null | ||
| ) { | ||
| outputMap.remove(PROP_TRANSFORM) | ||
| } | ||
| if ( | ||
| readableMap.hasKey(PROP_OPACITY) && readableMap.getType(PROP_OPACITY) == ReadableType.Null | ||
| ) { | ||
| outputMap.remove(PROP_OPACITY) | ||
| } | ||
| } | ||
| // prevents unchecked conversion warn of the <ViewGroup> type | ||
@@ -1393,0 +1421,0 @@ private fun getViewGroupManager(viewState: ViewState): IViewGroupManager<View> { |
@@ -329,4 +329,4 @@ /* | ||
| // We also capture the idleCallbackRunnable to tentatively fix: | ||
| // https://github.com/facebook/react-native/issues/44842 | ||
| // https://github.com/facebook/react-native/issues/54983 | ||
| // https://github.com/react/react-native/issues/44842 | ||
| // https://github.com/react/react-native/issues/54983 | ||
| currentIdleCallbackRunnable?.cancel() | ||
@@ -333,0 +333,0 @@ val idleCallbackRunnable = IdleCallbackRunnable(frameTimeNanos) |
@@ -226,3 +226,3 @@ /* | ||
| // We cannot know from JS if is an Integer or Double | ||
| // See: https://github.com/facebook/react-native/issues/4141 | ||
| // See: https://github.com/react/react-native/issues/4141 | ||
| // We might need to find a workaround if this is really an issue | ||
@@ -229,0 +229,0 @@ val number = map.getDouble(EXTRA_MAP_KEY_FOR_VALUE) |
@@ -169,3 +169,3 @@ /* | ||
| """To be removed in a future release. See | ||
| https://github.com/facebook/react-native/pull/37798#pullrequestreview-1518338914""" | ||
| https://github.com/react/react-native/pull/37798#pullrequestreview-1518338914""" | ||
| ) | ||
@@ -484,3 +484,3 @@ public interface CustomClientBuilder : com.facebook.react.modules.network.CustomClientBuilder | ||
| // appending the character set to the Content-Type header when otherwise unspecified | ||
| // https://github.com/facebook/react-native/issues/8237 | ||
| // https://github.com/react/react-native/issues/8237 | ||
| val charset = | ||
@@ -487,0 +487,0 @@ if (contentMediaType == null) { |
@@ -17,5 +17,5 @@ /** | ||
| "minor" to 86, | ||
| "patch" to 0, | ||
| "patch" to 2, | ||
| "prerelease" to null | ||
| ) | ||
| } |
@@ -174,2 +174,3 @@ /* | ||
| private volatile Boolean mHasStartedDestroying = false; | ||
| private final Object mHasStartedDestroyingLock = new Object(); | ||
| private final MemoryPressureRouter mMemoryPressureRouter; | ||
@@ -786,4 +787,4 @@ private final @Nullable JSExceptionHandler mJSExceptionHandler; | ||
| mHasStartedDestroying = false; | ||
| synchronized (mHasStartedDestroying) { | ||
| mHasStartedDestroying.notifyAll(); | ||
| synchronized (mHasStartedDestroyingLock) { | ||
| mHasStartedDestroyingLock.notifyAll(); | ||
| } | ||
@@ -1144,6 +1145,6 @@ synchronized (mPackages) { | ||
| ReactMarker.logMarker(REACT_CONTEXT_THREAD_END); | ||
| synchronized (ReactInstanceManager.this.mHasStartedDestroying) { | ||
| synchronized (ReactInstanceManager.this.mHasStartedDestroyingLock) { | ||
| while (ReactInstanceManager.this.mHasStartedDestroying) { | ||
| try { | ||
| ReactInstanceManager.this.mHasStartedDestroying.wait(); | ||
| ReactInstanceManager.this.mHasStartedDestroyingLock.wait(); | ||
| } catch (InterruptedException e) { | ||
@@ -1150,0 +1151,0 @@ // Interrupted while waiting for destruction to complete, just retry |
@@ -572,3 +572,3 @@ /* | ||
| // if the method is marked as returning a non-nullable collection in Kotlin. | ||
| // See https://github.com/facebook/react-native/issues/52014 | ||
| // See https://github.com/react/react-native/issues/52014 | ||
| @Suppress("SENSELESS_COMPARISON") | ||
@@ -575,0 +575,0 @@ if (names == null) { |
@@ -629,3 +629,3 @@ /* | ||
| // sqrt(5) produces an exact replica with iOS. | ||
| // For more information, see https://github.com/facebook/react-native/pull/18302 | ||
| // For more information, see https://github.com/react/react-native/pull/18302 | ||
| float normalizedCameraDistance = | ||
@@ -632,0 +632,0 @@ sanitizeFloatPropertyValue( |
@@ -441,3 +441,3 @@ /* | ||
| // See also: | ||
| // - https://github.com/facebook/react-native/issues/35350 | ||
| // - https://github.com/react/react-native/issues/35350 | ||
| // - https://issuetracker.google.com/issues/287304310 | ||
@@ -444,0 +444,0 @@ if (applyFix) { |
@@ -433,3 +433,3 @@ /* | ||
| // See also: | ||
| // - https://github.com/facebook/react-native/issues/35350 | ||
| // - https://github.com/react/react-native/issues/35350 | ||
| // - https://issuetracker.google.com/issues/287304310 | ||
@@ -436,0 +436,0 @@ if (applyFix) { |
@@ -230,3 +230,3 @@ /* | ||
| // null; explicitly set the LayoutParams to prevent this crash. See: | ||
| // https://github.com/facebook/react-native/pull/7011 | ||
| // https://github.com/react/react-native/pull/7011 | ||
| if (getLayoutParams() == null) { | ||
@@ -233,0 +233,0 @@ setLayoutParams(EMPTY_LAYOUT_PARAMS); |
@@ -740,3 +740,3 @@ /* | ||
| * attributes on the underlying EditText. This works around instability on Samsung devices with | ||
| * the presence of spans https://github.com/facebook/react-native/issues/35936 (S318090) | ||
| * the presence of spans https://github.com/react/react-native/issues/35936 (S318090) | ||
| */ | ||
@@ -934,3 +934,3 @@ private fun stripStyleEquivalentSpans(sb: SpannableStringBuilder) { | ||
| // Used to ensure that text is selectable inside of removeClippedSubviews | ||
| // See https://github.com/facebook/react-native/issues/6805 for original | ||
| // See https://github.com/react/react-native/issues/6805 for original | ||
| // fix that was ported to here. | ||
@@ -937,0 +937,0 @@ super.setTextIsSelectable(true) |
@@ -384,3 +384,3 @@ /* | ||
| // Based on https://github.com/facebook/react-native/pull/31007 | ||
| // Based on https://github.com/react/react-native/pull/31007 | ||
| if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P) { | ||
@@ -743,3 +743,3 @@ return | ||
| // the system fail to locate it properly. Here is an example post discussing about this | ||
| // issue: https://github.com/facebook/react-native/issues/27204 | ||
| // issue: https://github.com/react/react-native/issues/27204 | ||
| if (shouldHideCursorForEmailTextInput()) { | ||
@@ -746,0 +746,0 @@ view.isCursorVisible = false |
@@ -33,3 +33,3 @@ /* | ||
| // Apparently Android might call this with an end value that is less than the start value | ||
| // Lets normalize them. See https://github.com/facebook/react-native/issues/18579 | ||
| // Lets normalize them. See https://github.com/react/react-native/issues/18579 | ||
| val realStart = min(start.toDouble(), end.toDouble()).toInt() | ||
@@ -36,0 +36,0 @@ val realEnd = max(start.toDouble(), end.toDouble()).toInt() |
@@ -17,3 +17,3 @@ /** | ||
| #define REACT_NATIVE_VERSION_MINOR 86 | ||
| #define REACT_NATIVE_VERSION_PATCH 0 | ||
| #define REACT_NATIVE_VERSION_PATCH 2 | ||
@@ -25,3 +25,3 @@ namespace facebook::react { | ||
| int32_t Minor = 86; | ||
| int32_t Patch = 0; | ||
| int32_t Patch = 2; | ||
| std::string_view Prerelease = ""; | ||
@@ -28,0 +28,0 @@ }; |
@@ -20,3 +20,3 @@ /* | ||
| * | ||
| * See https://github.com/facebook/react-native/issues/36794 for context. | ||
| * See https://github.com/react/react-native/issues/36794 for context. | ||
| */ | ||
@@ -23,0 +23,0 @@ |
@@ -996,3 +996,3 @@ /* | ||
| // CallVoidMethod is replaced with CallVoidMethodA as it's unsafe on 32bit and | ||
| // causes crashes https://github.com/facebook/react-native/issues/51628 | ||
| // causes crashes https://github.com/react/react-native/issues/51628 | ||
| env->CallVoidMethodA(instance_.get(), cachedMethodId, args); | ||
@@ -999,0 +999,0 @@ FACEBOOK_JNI_THROW_PENDING_EXCEPTION(); |
@@ -480,3 +480,3 @@ /* | ||
| // See: discussion at | ||
| // https://github.com/facebook/react-native/pull/49250#issuecomment-2668465893 | ||
| // https://github.com/react/react-native/pull/49250#issuecomment-2668465893 | ||
| if (arg == [NSNull null]) { | ||
@@ -483,0 +483,0 @@ return; |
@@ -680,3 +680,3 @@ /* | ||
| // Message dispatch logic from old infra (link: | ||
| // https://github.com/facebook/react-native/commit/6783694158057662fd7b11fc123c339b2b21bfe6#diff-263fc157dfce55895cdc16495b55d190R350) | ||
| // https://github.com/react/react-native/commit/6783694158057662fd7b11fc123c339b2b21bfe6#diff-263fc157dfce55895cdc16495b55d190R350) | ||
| RCTManagedPointer *(*convert)(id, SEL, id) = (__typeof__(convert))objc_msgSend; | ||
@@ -683,0 +683,0 @@ RCTManagedPointer *box = convert([RCTCxxConvert class], methodArgConversionSelector, objCArg); |
@@ -14,4 +14,4 @@ /* | ||
| // It is safe to use 0 because JavaScript starts assigning identifiers from 1. | ||
| // https://github.com/facebook/react-native/blob/main/packages/react-native/src/private/animated/NativeAnimatedHelper.js#L35 | ||
| // https://github.com/react/react-native/blob/main/packages/react-native/src/private/animated/NativeAnimatedHelper.js#L35 | ||
| constexpr static Tag undefinedAnimatedNodeIdentifier = 0; | ||
| } // namespace facebook::react::animated |
@@ -140,23 +140,31 @@ /* | ||
| const auto& componentDescriptor = family.componentDescriptor_; | ||
| if (family.nativeProps_DEPRECATED != nullptr) { | ||
| auto propsParserContext = PropsParserContext{family_->getSurfaceId(), {}}; | ||
| if (fragment.props == ShadowNodeFragment::propsPlaceholder()) { | ||
| // Clone existing `props_` with `family.nativeProps_DEPRECATED` to apply | ||
| // previously set props via `setNativeProps` API. | ||
| auto props = componentDescriptor.cloneProps( | ||
| propsParserContext, props_, RawProps(*family.nativeProps_DEPRECATED)); | ||
| auto clonedNode = componentDescriptor.cloneShadowNode( | ||
| *this, | ||
| {.props = props, | ||
| .children = fragment.children, | ||
| .state = fragment.state}); | ||
| return clonedNode; | ||
| } else { | ||
| // TODO: We might need to merge fragment.props with | ||
| // `family.nativeProps_DEPRECATED`. | ||
| return componentDescriptor.cloneShadowNode(*this, fragment); | ||
| std::optional<RawProps> propsOverride; | ||
| { | ||
| std::lock_guard<std::mutex> lock(family.nativePropsMutex); | ||
| if (family.nativeProps_DEPRECATED != nullptr) { | ||
| if (fragment.props == ShadowNodeFragment::propsPlaceholder()) { | ||
| propsOverride.emplace(*family.nativeProps_DEPRECATED); | ||
| } else { | ||
| // TODO: We might need to merge fragment.props with | ||
| // `family.nativeProps_DEPRECATED`. | ||
| } | ||
| } | ||
| } else { | ||
| return componentDescriptor.cloneShadowNode(*this, fragment); | ||
| } | ||
| if (propsOverride) { | ||
| // Clone existing `props_` with `family.nativeProps_DEPRECATED` to | ||
| // apply previously set props via `setNativeProps` API. The parsed | ||
| // result escapes the lock so the rest of the clone work runs | ||
| // unblocked. | ||
| auto propsParserContext = PropsParserContext{family_->getSurfaceId(), {}}; | ||
| return componentDescriptor.cloneShadowNode( | ||
| *this, | ||
| {.props = componentDescriptor.cloneProps( | ||
| propsParserContext, props_, std::move(*propsOverride)), | ||
| .children = fragment.children, | ||
| .state = fragment.state}); | ||
| } | ||
| return componentDescriptor.cloneShadowNode(*this, fragment); | ||
| } | ||
@@ -163,0 +171,0 @@ |
@@ -11,2 +11,3 @@ /* | ||
| #include <memory> | ||
| #include <mutex> | ||
| #include <shared_mutex> | ||
@@ -118,2 +119,3 @@ | ||
| mutable std::unique_ptr<folly::dynamic> nativeProps_DEPRECATED; | ||
| mutable std::mutex nativePropsMutex; | ||
@@ -120,0 +122,0 @@ /** |
@@ -55,3 +55,3 @@ /* | ||
| // See: | ||
| // https://github.com/facebook/react-native/blob/c2f39cfdd87c32b9a59efe8a788b8a03f02b0ea0/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm#L579 | ||
| // https://github.com/react/react-native/blob/c2f39cfdd87c32b9a59efe8a788b8a03f02b0ea0/packages/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm#L579 | ||
| auto stateData = scrollViewShadowNode->getStateData(); | ||
@@ -58,0 +58,0 @@ cullingContext.frame.origin.x = |
@@ -11,8 +11,149 @@ /* | ||
| #include <gtest/gtest.h> | ||
| #include <react/renderer/components/view/ViewShadowNode.h> | ||
| #include <react/renderer/core/ShadowNodeFragment.h> | ||
| #include <react/renderer/element/Element.h> | ||
| #include <react/renderer/element/testUtils.h> | ||
| #include <react/renderer/uimanager/UIManager.h> | ||
| using namespace facebook::react; | ||
| namespace facebook::react { | ||
| TEST(UIManagerTest, testSomething) { | ||
| // TODO | ||
| class FabricUIManagerTest : public ::testing::Test { | ||
| public: | ||
| FabricUIManagerTest() { | ||
| contextContainer_ = std::make_shared<ContextContainer>(); | ||
| ComponentDescriptorProviderRegistry componentDescriptorProviderRegistry{}; | ||
| auto componentDescriptorRegistry = | ||
| componentDescriptorProviderRegistry.createComponentDescriptorRegistry( | ||
| ComponentDescriptorParameters{ | ||
| .eventDispatcher = EventDispatcher::Shared{}, | ||
| .contextContainer = contextContainer_, | ||
| .flavor = nullptr}); | ||
| componentDescriptorProviderRegistry.add( | ||
| concreteComponentDescriptorProvider<RootComponentDescriptor>()); | ||
| componentDescriptorProviderRegistry.add( | ||
| concreteComponentDescriptorProvider<ViewComponentDescriptor>()); | ||
| builder_ = std::make_unique<ComponentBuilder>(componentDescriptorRegistry); | ||
| RuntimeExecutor runtimeExecutor = | ||
| [](std::function<void( | ||
| facebook::jsi::Runtime & runtime)>&& /*callback*/) {}; | ||
| uiManager_ = | ||
| std::make_unique<UIManager>(runtimeExecutor, contextContainer_); | ||
| uiManager_->setComponentDescriptorRegistry(componentDescriptorRegistry); | ||
| buildAndCommitTree(); | ||
| } | ||
| void TearDown() override { | ||
| uiManager_->stopSurface(surfaceId_); | ||
| } | ||
| protected: | ||
| std::shared_ptr<RootShadowNode> buildTree() { | ||
| std::shared_ptr<RootShadowNode> rootNode; | ||
| // clang-format off | ||
| auto element = | ||
| Element<RootShadowNode>() | ||
| .tag(1) | ||
| .surfaceId(surfaceId_) | ||
| .reference(rootNode) | ||
| .props([] { | ||
| auto sharedProps = std::make_shared<RootProps>(); | ||
| sharedProps->layoutConstraints = LayoutConstraints{ | ||
| .minimumSize = {.width = 0, .height = 0}, | ||
| .maximumSize = {.width = 500, .height = 500}}; | ||
| return sharedProps; | ||
| }) | ||
| .children({ | ||
| Element<ViewShadowNode>() | ||
| .tag(viewTag_) | ||
| .surfaceId(surfaceId_) | ||
| .props([] { | ||
| auto sharedProps = std::make_shared<ViewShadowNodeProps>(); | ||
| sharedProps->nativeId = "initial"; | ||
| sharedProps->opacity = 1.0; | ||
| return sharedProps; | ||
| }) | ||
| }); | ||
| // clang-format on | ||
| builder_->build(element); | ||
| return rootNode; | ||
| } | ||
| void buildAndCommitTree() { | ||
| auto rootNode = buildTree(); | ||
| auto shadowTree = std::make_unique<ShadowTree>( | ||
| surfaceId_, | ||
| LayoutConstraints{}, | ||
| LayoutContext{}, | ||
| *uiManager_, | ||
| *contextContainer_); | ||
| shadowTreePtr_ = shadowTree.get(); | ||
| shadowTree->commit( | ||
| [&rootNode](const RootShadowNode& /*oldRootShadowNode*/) { | ||
| return std::static_pointer_cast<RootShadowNode>(rootNode); | ||
| }, | ||
| {true}); | ||
| uiManager_->startSurface( | ||
| std::move(shadowTree), | ||
| "test", | ||
| folly::dynamic::object, | ||
| DisplayMode::Visible); | ||
| } | ||
| std::shared_ptr<const ShadowNode> currentViewNode() const { | ||
| auto root = shadowTreePtr_->getCurrentRevision().rootShadowNode; | ||
| return root->getChildren().front(); | ||
| } | ||
| const ViewProps& viewPropsInTree() const { | ||
| return static_cast<const ViewProps&>(*currentViewNode()->getProps()); | ||
| } | ||
| SurfaceId surfaceId_{0}; | ||
| Tag viewTag_{42}; | ||
| std::shared_ptr<ContextContainer> contextContainer_; | ||
| std::unique_ptr<ComponentBuilder> builder_; | ||
| std::unique_ptr<UIManager> uiManager_; | ||
| ShadowTree* shadowTreePtr_{nullptr}; | ||
| }; | ||
| // Demonstrates the merge between props set by `setNativeProps_DEPRECATED` | ||
| // (the legacy native-side prop override path) and props supplied by a | ||
| // regular React re-render via `cloneNode`. The native override must | ||
| // survive a React render that does not touch the overridden key, and | ||
| // other React-supplied keys must still apply. | ||
| TEST_F(FabricUIManagerTest, SetNativePropsMergesWithReactRender) { | ||
| ASSERT_EQ(viewPropsInTree().nativeId, "initial"); | ||
| ASSERT_FLOAT_EQ(viewPropsInTree().opacity, 1.0); | ||
| // Native override on `opacity` only. The committed tree picks up the new | ||
| // opacity and leaves the unrelated `nativeId` untouched. | ||
| uiManager_->setNativeProps_DEPRECATED( | ||
| currentViewNode(), RawProps(folly::dynamic::object("opacity", 0.5))); | ||
| EXPECT_EQ(viewPropsInTree().nativeId, "initial"); | ||
| EXPECT_FLOAT_EQ(viewPropsInTree().opacity, 0.5); | ||
| // Simulate a React re-render that updates `nativeID` only. The native | ||
| // `opacity` override must survive (it is not present in rawProps and | ||
| // therefore not refreshed away by React), and the new `nativeID` must | ||
| // apply on top. | ||
| auto rerendered = uiManager_->cloneNode( | ||
| *currentViewNode(), | ||
| /*children=*/nullptr, | ||
| RawProps(folly::dynamic::object("nativeID", "from-react"))); | ||
| auto& merged = static_cast<const ViewProps&>(*rerendered->getProps()); | ||
| EXPECT_EQ(merged.nativeId, "from-react"); | ||
| EXPECT_FLOAT_EQ(merged.opacity, 0.5); | ||
| } | ||
| } // namespace facebook::react |
@@ -121,45 +121,47 @@ /* | ||
| auto& family = shadowNode.getFamily(); | ||
| auto props = ShadowNodeFragment::propsPlaceholder(); | ||
| if (!rawProps.isEmpty()) { | ||
| if (family.nativeProps_DEPRECATED != nullptr) { | ||
| // 1. update the nativeProps_DEPRECATED props. | ||
| // | ||
| // In this step, we want the most recent value for the props | ||
| // managed by setNativeProps. | ||
| // Values in `rawProps` patch (take precedence over) | ||
| // `nativeProps_DEPRECATED`. For example, if both | ||
| // `nativeProps_DEPRECATED` and `rawProps` contain key 'A'. | ||
| // Value from `rawProps` overrides what was previously in | ||
| // `nativeProps_DEPRECATED`. Notice that the `nativeProps_DEPRECATED` | ||
| // patch will not get more props from `rawProps`: if the key is not | ||
| // present in `nativeProps_DEPRECATED`, it will not be added. | ||
| // | ||
| // The result of this operation is the new `nativeProps_DEPRECATED`. | ||
| family.nativeProps_DEPRECATED = | ||
| std::make_unique<folly::dynamic>(mergeDynamicProps( | ||
| *family.nativeProps_DEPRECATED, // source | ||
| (folly::dynamic)rawProps, // patch | ||
| NullValueStrategy::Ignore)); | ||
| std::optional<folly::dynamic> finalProps; | ||
| { | ||
| std::lock_guard<std::mutex> lock(family.nativePropsMutex); | ||
| if (family.nativeProps_DEPRECATED != nullptr) { | ||
| // 1. update the nativeProps_DEPRECATED props. | ||
| // | ||
| // In this step, we want the most recent value for the props | ||
| // managed by setNativeProps. | ||
| // Values in `rawProps` patch (take precedence over) | ||
| // `nativeProps_DEPRECATED`. For example, if both | ||
| // `nativeProps_DEPRECATED` and `rawProps` contain key 'A'. | ||
| // Value from `rawProps` overrides what was previously in | ||
| // `nativeProps_DEPRECATED`. Notice that the `nativeProps_DEPRECATED` | ||
| // patch will not get more props from `rawProps`: if the key is not | ||
| // present in `nativeProps_DEPRECATED`, it will not be added. | ||
| // | ||
| // The result of this operation is the new `nativeProps_DEPRECATED`. | ||
| family.nativeProps_DEPRECATED = | ||
| std::make_unique<folly::dynamic>(mergeDynamicProps( | ||
| *family.nativeProps_DEPRECATED, // source | ||
| (folly::dynamic)rawProps, // patch | ||
| NullValueStrategy::Ignore)); | ||
| // 2. Compute the final set of props. | ||
| // | ||
| // This step takes the new props handled by `setNativeProps` and | ||
| // merges them in the `rawProps` managed by React. | ||
| // The new props handled by `nativeProps` now takes precedence | ||
| // on the props handled by React, as we want to make sure that | ||
| // all the props are applied to the component. | ||
| // We use these finalProps as source of truth for the component. | ||
| auto finalProps = mergeDynamicProps( | ||
| (folly::dynamic)rawProps, // source | ||
| *family.nativeProps_DEPRECATED, // patch | ||
| NullValueStrategy::Override); | ||
| // 2. Compute the final set of props. | ||
| // | ||
| // This step takes the new props handled by `setNativeProps` and | ||
| // merges them in the `rawProps` managed by React. | ||
| // The new props handled by `nativeProps` now takes precedence | ||
| // on the props handled by React, as we want to make sure that | ||
| // all the props are applied to the component. | ||
| // We use these finalProps as source of truth for the component. | ||
| finalProps = mergeDynamicProps( | ||
| (folly::dynamic)rawProps, // source | ||
| *family.nativeProps_DEPRECATED, // patch | ||
| NullValueStrategy::Override); | ||
| } | ||
| } | ||
| // 3. Clone the props by using finalProps. | ||
| props = componentDescriptor.cloneProps( | ||
| propsParserContext, shadowNode.getProps(), RawProps(finalProps)); | ||
| } else { | ||
| props = componentDescriptor.cloneProps( | ||
| propsParserContext, shadowNode.getProps(), std::move(rawProps)); | ||
| } | ||
| props = componentDescriptor.cloneProps( | ||
| propsParserContext, | ||
| shadowNode.getProps(), | ||
| finalProps ? RawProps(std::move(*finalProps)) : std::move(rawProps)); | ||
| } | ||
@@ -443,15 +445,18 @@ | ||
| auto& family = shadowNode->getFamily(); | ||
| if (family.nativeProps_DEPRECATED) { | ||
| // Values in `rawProps` patch (take precedence over) | ||
| // `nativeProps_DEPRECATED`. For example, if both `nativeProps_DEPRECATED` | ||
| // and `rawProps` contain key 'A'. Value from `rawProps` overrides what | ||
| // was previously in `nativeProps_DEPRECATED`. | ||
| family.nativeProps_DEPRECATED = | ||
| std::make_unique<folly::dynamic>(mergeDynamicProps( | ||
| *family.nativeProps_DEPRECATED, | ||
| (folly::dynamic)rawProps, | ||
| NullValueStrategy::Override)); | ||
| } else { | ||
| family.nativeProps_DEPRECATED = | ||
| std::make_unique<folly::dynamic>((folly::dynamic)rawProps); | ||
| { | ||
| std::lock_guard<std::mutex> lock(family.nativePropsMutex); | ||
| if (family.nativeProps_DEPRECATED) { | ||
| // Values in `rawProps` patch (take precedence over) | ||
| // `nativeProps_DEPRECATED`. For example, if both | ||
| // `nativeProps_DEPRECATED` and `rawProps` contain key 'A'. Value from | ||
| // `rawProps` overrides what was previously in `nativeProps_DEPRECATED`. | ||
| family.nativeProps_DEPRECATED = | ||
| std::make_unique<folly::dynamic>(mergeDynamicProps( | ||
| *family.nativeProps_DEPRECATED, | ||
| (folly::dynamic)rawProps, | ||
| NullValueStrategy::Override)); | ||
| } else { | ||
| family.nativeProps_DEPRECATED = | ||
| std::make_unique<folly::dynamic>((folly::dynamic)rawProps); | ||
| } | ||
| } | ||
@@ -458,0 +463,0 @@ |
@@ -561,3 +561,2 @@ /* | ||
| child->cloneChildrenIfNeeded(); | ||
| cleanupContentsNodesRecursively(child); | ||
| const Direction childDirection = | ||
@@ -588,2 +587,4 @@ child->resolveDirection(currentNodeDirection); | ||
| cleanupContentsNodesRecursively( | ||
| child, /* didPerformLayout */ hasNewLayout); | ||
| if (hasNewLayout) { | ||
@@ -590,0 +591,0 @@ child->setHasNewLayout(hasNewLayout); |
@@ -58,4 +58,4 @@ /* | ||
| void cleanupContentsNodesRecursively(yoga::Node* const node); | ||
| void cleanupContentsNodesRecursively(yoga::Node* node, bool didPerformLayout); | ||
| } // namespace facebook::yoga |
+6
-6
@@ -13,3 +13,3 @@ <h1 align="center"> | ||
| <p align="center"> | ||
| <a href="https://github.com/facebook/react-native/blob/HEAD/LICENSE"> | ||
| <a href="https://github.com/react/react-native/blob/HEAD/LICENSE"> | ||
| <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="React Native is released under the MIT license." /> | ||
@@ -42,3 +42,3 @@ </a> | ||
| <span> · </span> | ||
| <a href="https://github.com/facebook/react-native/blob/HEAD/.github/SUPPORT.md">Support</a> | ||
| <a href="https://github.com/react/react-native/blob/HEAD/.github/SUPPORT.md">Support</a> | ||
| </h3> | ||
@@ -57,3 +57,3 @@ | ||
| [p]: https://reactnative.dev/docs/out-of-tree-platforms | ||
| [e]: https://github.com/facebook/react-native/blob/HEAD/ECOSYSTEM.md | ||
| [e]: https://github.com/react/react-native/blob/HEAD/ECOSYSTEM.md | ||
@@ -129,3 +129,3 @@ ## Contents | ||
| [roadmap]: https://github.com/facebook/react-native/wiki/Roadmap | ||
| [roadmap]: https://github.com/react/react-native/wiki/Roadmap | ||
@@ -136,3 +136,3 @@ ### Good First Issues | ||
| [gfi]: https://github.com/facebook/react-native/labels/good%20first%20issue | ||
| [gfi]: https://github.com/react/react-native/labels/good%20first%20issue | ||
@@ -149,2 +149,2 @@ ### Discussions | ||
| [l]: https://github.com/facebook/react-native/blob/main/LICENSE | ||
| [l]: https://github.com/react/react-native/blob/main/LICENSE |
@@ -48,3 +48,3 @@ # Copyright (c) Meta Platforms, Inc. and affiliates. | ||
| @dependencies_by_pod.each do |pod_name, dependencies| | ||
| log_warning "Pod #{pod_name} is using swift package(s) #{dependencies.map{|i| i[:products]}.flatten.uniq.join(", ")} with static linking, this might cause linker errors. Consider using USE_FRAMEWORKS=dynamic, see https://github.com/facebook/react-native/pull/44627#issuecomment-2123119711 for more information" | ||
| log_warning "Pod #{pod_name} is using swift package(s) #{dependencies.map{|i| i[:products]}.flatten.uniq.join(", ")} with static linking, this might cause linker errors. Consider using USE_FRAMEWORKS=dynamic, see https://github.com/react/react-native/pull/44627#issuecomment-2123119711 for more information" | ||
| end | ||
@@ -51,0 +51,0 @@ end |
@@ -79,3 +79,3 @@ # Copyright (c) Meta Platforms, Inc. and affiliates. | ||
| def self.turn_off_resource_bundle_react_core(installer) | ||
| # this is needed for Xcode 14, see more details here https://github.com/facebook/react-native/issues/34673 | ||
| # this is needed for Xcode 14, see more details here https://github.com/react/react-native/issues/34673 | ||
| # we should be able to remove this once CocoaPods catches up to it, see more details here https://github.com/CocoaPods/CocoaPods/issues/11402 | ||
@@ -248,3 +248,3 @@ installer.target_installation_results.pod_target_installation_results.each do |pod_name, target_installation_result| | ||
| # Using `node --print "process.argv[0]";` we are able to retrieve the actual path from which node is running. | ||
| # see https://github.com/facebook/react-native/issues/43285 for more info. We've tweaked this slightly. | ||
| # see https://github.com/react/react-native/issues/43285 for more info. We've tweaked this slightly. | ||
| node_binary = Shellwords.escape(`node --print "process.argv[0]"`.strip) | ||
@@ -251,0 +251,0 @@ system("echo 'export NODE_BINARY=#{node_binary}' > #{file_path}.local") |
@@ -65,3 +65,3 @@ #!/bin/bash | ||
| # Manually disable gflags include to fix issue https://github.com/facebook/react-native/issues/28446 | ||
| # Manually disable gflags include to fix issue https://github.com/react/react-native/issues/28446 | ||
| sed -i.bak -e 's/\@ac_cv_have_libgflags\@/0/' src/glog/logging.h.in && rm src/glog/logging.h.in.bak | ||
@@ -68,0 +68,0 @@ sed -i.bak -e 's/HAVE_LIB_GFLAGS/HAVE_LIB_GFLAGS_DISABLED/' src/config.h.in && rm src/config.h.in.bak |
| HERMES_VERSION_NAME=0.17.0 | ||
| HERMES_V1_VERSION_NAME=250829098.0.14 | ||
| HERMES_V1_VERSION_NAME=250829098.0.16 |
@@ -45,3 +45,3 @@ /** | ||
| * For more information, see [Direct Manipulation](https://reactnative.dev/docs/the-new-architecture/direct-manipulation-new-architecture). | ||
| * @see https://github.com/facebook/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87 | ||
| * @see https://github.com/react/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87 | ||
| */ | ||
@@ -48,0 +48,0 @@ export interface LegacyHostInstanceMethods { |
@@ -44,3 +44,3 @@ /** | ||
| * | ||
| * @see https://github.com/facebook/react-native/issues/934 | ||
| * @see https://github.com/react/react-native/issues/934 | ||
| */ | ||
@@ -241,3 +241,3 @@ const originalXMLHttpRequest: any; | ||
| * local filesystem. | ||
| * See https://github.com/facebook/react-native/blob/master/Libraries/Network/convertRequestBody.js#L22 | ||
| * See https://github.com/react/react-native/blob/master/Libraries/Network/convertRequestBody.js#L22 | ||
| */ | ||
@@ -244,0 +244,0 @@ interface _SourceUri { |
@@ -7,3 +7,3 @@ /** | ||
| * | ||
| * @generated SignedSource<<6770958805f9935f28150e371b774f6c>> | ||
| * @generated SignedSource<<ccca8e1da0d30d12a67984ccadfcc654>> | ||
| * | ||
@@ -20,3 +20,3 @@ * This file was translated from Flow by scripts/js-api/build-types/index.js. | ||
| /** | ||
| * @see https://github.com/facebook/react-native/commit/b8c8562 | ||
| * @see https://github.com/react/react-native/commit/b8c8562 | ||
| */ | ||
@@ -23,0 +23,0 @@ declare const $$AnimatedScrollView: typeof AnimatedScrollView; |
@@ -7,3 +7,3 @@ /** | ||
| * | ||
| * @generated SignedSource<<c9de7b7b7e9d2c6170460f127e7a2659>> | ||
| * @generated SignedSource<<16bd195d08a4af6933b187a19c8bfc16>> | ||
| * | ||
@@ -96,3 +96,3 @@ * This file was translated from Flow by scripts/js-api/build-types/index.js. | ||
| * Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel | ||
| * https://github.com/facebook/react-native/issues/34424 | ||
| * https://github.com/react/react-native/issues/34424 | ||
| */ | ||
@@ -145,3 +145,3 @@ "aria-label"?: string | undefined; | ||
| [button:source]: | ||
| https://github.com/facebook/react-native/blob/HEAD/Libraries/Components/Button.js | ||
| https://github.com/react/react-native/blob/HEAD/Libraries/Components/Button.js | ||
@@ -148,0 +148,0 @@ ```jsx |
@@ -7,3 +7,3 @@ /** | ||
| * | ||
| * @generated SignedSource<<44061f57137cd78ebc62461ed113f41c>> | ||
| * @generated SignedSource<<6267ad68eabd062fa17a7dbc2291a089>> | ||
| * | ||
@@ -736,3 +736,3 @@ * This file was translated from Flow by scripts/js-api/build-types/index.js. | ||
| * | ||
| * see [Issue#7070](https://github.com/facebook/react-native/issues/7070) | ||
| * see [Issue#7070](https://github.com/react/react-native/issues/7070) | ||
| * for more detail. | ||
@@ -739,0 +739,0 @@ * |
@@ -7,3 +7,3 @@ /** | ||
| * | ||
| * @generated SignedSource<<a530b14853373cfdc40ec5a2df7cb8a0>> | ||
| * @generated SignedSource<<d632f414daf92e9a1de00d6d4e2f1ffe>> | ||
| * | ||
@@ -227,3 +227,3 @@ * This file was translated from Flow by scripts/js-api/build-types/index.js. | ||
| * Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel | ||
| * https://github.com/facebook/react-native/issues/34424 | ||
| * https://github.com/react/react-native/issues/34424 | ||
| */ | ||
@@ -300,3 +300,3 @@ "aria-label"?: string | undefined; | ||
| * Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel | ||
| * https://github.com/facebook/react-native/issues/34424 | ||
| * https://github.com/react/react-native/issues/34424 | ||
| */ | ||
@@ -373,3 +373,3 @@ "aria-label"?: string | undefined; | ||
| * Alias for accessibilityLabel https://reactnative.dev/docs/view#accessibilitylabel | ||
| * https://github.com/facebook/react-native/issues/34424 | ||
| * https://github.com/react/react-native/issues/34424 | ||
| */ | ||
@@ -376,0 +376,0 @@ "aria-label"?: string | undefined; |
@@ -7,3 +7,3 @@ /** | ||
| * | ||
| * @generated SignedSource<<6c3f52d452fe844d027bee1f6d755fa1>> | ||
| * @generated SignedSource<<d55e74e2efd5ee21a5a6947b85b1c69f>> | ||
| * | ||
@@ -107,3 +107,3 @@ * This file was translated from Flow by scripts/js-api/build-types/index.js. | ||
| * To see it in action, try the | ||
| * [PanResponder example in RNTester](https://github.com/facebook/react-native/blob/HEAD/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js) | ||
| * [PanResponder example in RNTester](https://github.com/react/react-native/blob/HEAD/packages/rn-tester/js/examples/PanResponder/PanResponderExample.js) | ||
| */ | ||
@@ -110,0 +110,0 @@ |
@@ -7,3 +7,3 @@ /** | ||
| * | ||
| * @generated SignedSource<<04d83f009e651f396d99029acaee044b>> | ||
| * @generated SignedSource<<6bde5bbe9e632ac3407d08e6936ee032>> | ||
| * | ||
@@ -26,3 +26,3 @@ * This file was translated from Flow by scripts/js-api/build-types/index.js. | ||
| * For more information, see [Direct Manipulation](https://reactnative.dev/docs/the-new-architecture/direct-manipulation-new-architecture). | ||
| * @see https://github.com/facebook/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87 | ||
| * @see https://github.com/react/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87 | ||
| */ | ||
@@ -29,0 +29,0 @@ export interface LegacyHostInstanceMethods { |
@@ -43,3 +43,3 @@ /** | ||
| * For more information, see [Direct Manipulation](https://reactnative.dev/docs/the-new-architecture/direct-manipulation-new-architecture). | ||
| * @see https://github.com/facebook/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87 | ||
| * @see https://github.com/react/react-native/blob/master/Libraries/Renderer/shims/ReactNativeTypes.js#L87 | ||
| */ | ||
@@ -127,3 +127,3 @@ export interface NativeMethods { | ||
| * | ||
| * @see https://github.com/facebook/react-native/blob/v0.62.0-rc.5/Libraries/Renderer/shims/ReactNativeTypes.js | ||
| * @see https://github.com/react/react-native/blob/v0.62.0-rc.5/Libraries/Renderer/shims/ReactNativeTypes.js | ||
| * | ||
@@ -130,0 +130,0 @@ * @todo This should eventually be defined as an AbstractComponent, but that |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
20318300
0.03%161369
0+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated