-
Notifications
You must be signed in to change notification settings - Fork 24.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix C++ prop type for the Image.defaultSource #47713
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Summary: There is Android code that supports remapping `defaultSrc` -> `defaultSource` for `ImageNativeComponent`. The docs reference this prop as `defaultSource`: https://reactnative.dev/docs/next/image#defaultsource It is not referenced as `defaultSrc` anywhere. Let's unify it as `defaultSource` across both platforms. Changelog: [Internal] Differential Revision: D65819218
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Differential Revision: D65821570
This pull request was exported from Phabricator. Differential Revision: D65821570 |
dmytrorykun
added a commit
to dmytrorykun/react-native
that referenced
this pull request
Nov 19, 2024
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Differential Revision: D65821570
dmytrorykun
added a commit
to dmytrorykun/react-native
that referenced
this pull request
Nov 19, 2024
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Reviewed By: javache Differential Revision: D65821570
dmytrorykun
added a commit
to dmytrorykun/react-native
that referenced
this pull request
Nov 19, 2024
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Reviewed By: javache Differential Revision: D65821570
dmytrorykun
added a commit
to dmytrorykun/react-native
that referenced
this pull request
Nov 19, 2024
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Reviewed By: javache Differential Revision: D65821570
dmytrorykun
added a commit
to dmytrorykun/react-native
that referenced
this pull request
Nov 19, 2024
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Reviewed By: javache Differential Revision: D65821570
dmytrorykun
added a commit
to dmytrorykun/react-native
that referenced
this pull request
Nov 20, 2024
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Reviewed By: javache Differential Revision: D65821570
dmytrorykun
added a commit
to dmytrorykun/react-native
that referenced
this pull request
Nov 20, 2024
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Reviewed By: javache Differential Revision: D65821570
dmytrorykun
added a commit
to dmytrorykun/react-native
that referenced
this pull request
Nov 20, 2024
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Reviewed By: javache Differential Revision: D65821570
dmytrorykun
added a commit
to dmytrorykun/react-native
that referenced
this pull request
Nov 20, 2024
Summary: `defaultSource` is defined as a single `ImageSource` in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector of `ImageSource`s in `ImageProps.h`. This diff changes its C++ type to just `ImageSource`. Technically, this is a breaking change, however I don't think folks should directly access `ImageProps` outside of `RCTImageComponentView.mm` Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect. Changelog: [Internal] Facebook T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image Reviewed By: javache Differential Revision: D65821570
This pull request was successfully merged by @dmytrorykun in c2aa201 When will my fix make it into a release? | How to file a pick request? |
This pull request has been merged in c2aa201. |
facebook-github-bot
pushed a commit
that referenced
this pull request
Feb 4, 2025
Summary: Fixes #49075 The Image `defaultSource` prop is causing a runtime error from 0.77 just by using it in the Image component (see error in the linked issue). This might be a regression from some changes in the prop processing logic from either #47710, #47713 or #47754. ## Changelog: [ANDROID] [FIXED] - Fix Image defaultSource runtime error Pull Request resolved: #49097 Test Plan: - Verify it doesn't throw any error on runtime anymore for Android. - iOS behaviour should not be impacted as changes are Android specific In the RNTester, you can use the following component: ```tsx import * as React from 'react'; import {Image, View} from 'react-native'; function Playground() { return ( <View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}> <Image defaultSource={require('../../assets/bandaged.png')} source={{ uri: 'https://i.natgeofe.com/n/548467d8-c5f1-4551-9f58-6817a8d2c45e/NationalGeographic_2572187_4x3.jpg', }} style={{width: 200, height: 200}} /> </View> ); } ``` Also, this `defaultSource` prop is ignored in debug builds for Android ([as per the docs](https://reactnative.dev/docs/image#defaultsource)) – but I've verified we get the defaultSource as a string, which is what we expect on the native side: <details> <summary>Screenshot of the Android logs</summary> ![image](https://github.com/user-attachments/assets/e62ae2c3-6a93-4e44-a2d7-c913f5db2173) </details> Reviewed By: javache Differential Revision: D69052723 Pulled By: cortinico fbshipit-source-id: 2860dd4c18cefcfcbc4e39f94dfa6305f45773a3
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
CLA Signed
This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.
fb-exported
Merged
This PR has been merged.
p: Facebook
Partner: Facebook
Partner
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.
Summary:
defaultSource
is defined as a singleImageSource
in docs (https://reactnative.dev/docs/next/image#defaultsource) but its type is a vector ofImageSource
s inImageProps.h
.This diff changes its C++ type to just
ImageSource
.Technically, this is a breaking change, however I don't think folks should directly access
ImageProps
outside ofRCTImageComponentView.mm
Moreover, this prop is actually not implemented in Fabric, so this change should have no practical effect.
Changelog: [Internal]
Facebook
T208171435 - [RN][Fabric][iOS] Implement defaultSource support for Image
Differential Revision: D65821570