Replies: 41 comments 96 replies
-
Thanks for the clarification. What I understood is:
Is that correct? If it is, how can I know if a library is integrated via Cocoapods as a separate SDK bundle? |
Beta Was this translation helpful? Give feedback.
-
Any chance of Apple extending the date for the Privacy Manifest policy? |
Beta Was this translation helpful? Give feedback.
-
@philIip - Thanks for your information.My project has react-native:0.68.7.Can I upgrade my project to above 0.71? |
Beta Was this translation helpful? Give feedback.
-
@philIip - Can I update to version 0.73 after adding your changes to 0.73? |
Beta Was this translation helpful? Give feedback.
-
@philIip Will the RCT-Folly pod be considered a third-party SDK? I have run the ios_17_required_reason_api_scanner script on the code and found that the RCT-Folly pod is using the "File timestamp APIs." Do we need to include the reason in our code, or will React Native include the PrivacyInfo.xcprivacy file in it? My react-native version is 0.71.7. |
Beta Was this translation helpful? Give feedback.
-
@philIip As Apple provided this list and "hermes" is also there in the list. https://developer.apple.com/support/third-party-SDK-requirements/ |
Beta Was this translation helpful? Give feedback.
-
How about utilizing tools that merge options of dependencies, such as react-native.config.js of react-native-cli or reactNativeManifest, when extracting Privacy manifest templates to support data use? This approach is similar to Expo's plugins. |
Beta Was this translation helpful? Give feedback.
-
Working on supporting xcprivacy files for Expo, for now we're also not seeing aggregation working for cocoapods. Let's hope this gets fixed by apple, but till then I'm considering the following aggregation step, provided as a cocoapods script (probably easy to adapt for react-native core): |
Beta Was this translation helpful? Give feedback.
-
What versions of react-native will be supported? |
Beta Was this translation helpful? Give feedback.
-
Accessing disk-space is not an unusual thing to do for a plug-in that might deal with files (eg a SQLite plugin). These APIs are not “dangerous” or unusual to be used but with Apple turning the screws on “App Tracking”, the “bad guys” have had to resort to attempting to “fingerprint” a device across apps by taking advantage of the system clock and file timestamps. Another flagged api is for now, I would not seek a deeper understanding about the “why”, just add those api items to your PrivacyInfo file and work on satisfying Apple’s privacy interrogation. Once your App passes privacy interrogation, then go on a deeper quest on the who and why. |
Beta Was this translation helpful? Give feedback.
-
Imgur/hermes is an old pod using swift 2.2, last update Jul 2015, archived repo, declared not maintained for 7 years... |
Beta Was this translation helpful? Give feedback.
-
i believe i don't use Imgur/hermes, i have hermes-engine which appears to be integral part of react-native as i understood. this hermes.framework has reason required API usage and requires Privacy manifest: |
Beta Was this translation helpful? Give feedback.
-
When running the ios_17_required_reason_api_scanner , an output similar to the following can be observed
Are there any plans for addressing the usage of this required reason API? |
Beta Was this translation helpful? Give feedback.
This comment was marked as spam.
This comment was marked as spam.
-
Hi, My project has react-native:0.68.7 and also maintained good stability in production. |
Beta Was this translation helpful? Give feedback.
-
@tdraper-dev This is the React Native Privacy Manifest template file. |
Beta Was this translation helpful? Give feedback.
-
I created a |
Beta Was this translation helpful? Give feedback.
-
The privacy manifest template has been picked into 0.71 - 0.73. It should generate the following template in facebook/react-native@d39712f which will cover all of the required reasons in the React Native framework. You will have to manually add this generated file to the app bundle via XCode. Feel free to manually create the file yourself as described by @christocracy and copy and paste the reasons from the commit if you are unable to upgrade your copy of RN to the support window. To make sure the privacy manifest is properly linked, you can go to Product -> Archive in XCode. Then, right click the archive and select "Generate Privacy Report". If the report has no error, it means that the privacy manifest has been linked successfully. Remember you are responsible for figuring out the reasons for other APIs that are brought in from outside of React Native, whether it's something you wrote or from a copy of a framework in your app's source code. Please consult the docs here: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests?language=objc in order to figure those out. |
Beta Was this translation helpful? Give feedback.
-
I'm dealing with "Multiple commands" issue as well, but it's kind of different because it's not caused by third-party library but rather my NotificationService. Can someone help me with that? In emails from Apple I was notified that not just my app is missing declarations but also "PlugIns/NotificationService.appex/NotificationService". When I'm adding App Privacy manifest, I'm checking the main app target but also NotificationService which is then added as target dependency as Build Phase. So logically there is multiplication of commands. Though if I won't choose NotificationService as target when creating the App Privacy manifest, I still receive warnings from Apple that API declaration is missing. |
Beta Was this translation helpful? Give feedback.
-
Slightly off-topic, but here's a tip for urgent ppl: |
Beta Was this translation helpful? Give feedback.
-
Did anyone get this error after adding the PrivacyInfo file and trying to do a build for testing? ❌ error: Multiple commands produce '/Users/builder/Library/Developer/Xcode/DerivedData/APP-astjpotccmrftsebuxjhqlzufvhq/Build/Intermediates.noindex/ArchiveIntermediates/APP/InstallationBuildProductsLocation/Applications/APP.app/PrivacyInfo.xcprivacy' |
Beta Was this translation helpful? Give feedback.
-
Can anyone explain why the PrivacyInfo.xcprivacy file was included only as a PBXFileReference and not also added as a PBXBuildFile to be applied to the app target in the commit at facebook/react-native@2d84d83? |
Beta Was this translation helpful? Give feedback.
-
I have successfully gotten rid of these annoying warnings. Created privacy manifests for all targets where I had them. |
Beta Was this translation helpful? Give feedback.
-
I’ve proposed adding useful content to facilitate version updates and help with the upgrade process. What do you think? Here’s the pull request for reference: PR #383 |
Beta Was this translation helpful? Give feedback.
-
I'm on 0.72.3, how can I deal with the privacy requirement? |
Beta Was this translation helpful? Give feedback.
-
I was able to partially get rid of the warning email, I update rn, firebase, facebook and others sdk and create my own manifest, but when I upload to external test on testflight, I'm still getting the email but only for |
Beta Was this translation helpful? Give feedback.
-
Working on supporting xcprivacy files for Expo, for now we're also not seeing aggregation working for cocoapods. Let's hope this gets fixed by apple, but till then I'm considering the following aggregation step, provided as a cocoapods script (probably easy to adapt for react-native core): |
Beta Was this translation helpful? Give feedback.
-
Any update on the relase date for the 0.71 branch? |
Beta Was this translation helpful? Give feedback.
-
Hi, I am facing an error that's showing up in the privacy report: Missing an expected key: 'NSPrivacyCollectedDataTypes' AppName/PrivacyInfo.bundle/PrivacyInfo.xcprivacy. The file is located in the path AppName/PrivacyInfo.xcprivacy (exactly like the react-native cli template). The file is also in Copy bundle resources. The report has all the collected data types and it's showing up in the privacy report but in the end, it's also throwing this error. |
Beta Was this translation helpful? Give feedback.
-
Just uploaded a build to AppStore and have no issue although I haven't updated anything. Maybe the deadline has been extended by Apple? |
Beta Was this translation helpful? Give feedback.
-
tldr: Apple will require all iOS apps to have a privacy manifest. This doc summarizes the actions you will need to take for your React Native apps and libraries.
Context
What is a privacy manifest?
From the Apple docs:
From this description, the privacy manifest has two main components:
What about React Native?
React Native is distributed in a variety of ways, but it is usually built as source with React Native apps, and not as a 3rd-party distributed SDK. This means that the privacy manifest for the SDK is not required to be provided by the framework, but the application. We'd like to make that simpler for you.
Timeline
Apple announced two dates when it comes to Privacy Manifests.
Framework solutions
React Native
Targeting the end of next week, we are going to provide the following pipeline: During the
pod install
step, we will generate a template of the privacy manifest if your app does not already have one. This template will be pre-populated with the required reasons of the required reasons APIs used within the React Native framework. For those already with a privacy manifest, you can either copy and paste the template content into your app's privacy manifest, or we will provide the privacy manifest in React Native's resource bundles. The app owner will fill out the necessary remaining content. This functionality will be backported into our support window.Note that currently, apps being submitted are inconsistently evaluating the privacy manifest in the podspec's resource bundle. Currently, we suggest copy and pasting the reasons provided by the library author into your final privacy manifest.
Ultimately, it is up to the app author to make sure the privacy manifest(s) included in their app bundle are complete and correct.
Update: The template generation has been added to the post_install hook in cocoapods in facebook/react-native@d39712f. This has been picked into 0.71 - 0.73. See #776 (comment) for details.
Update 2: @aleqsio built resource bundle aggregation into the pod install script! facebook/react-native#44214
Hermes
We have spoken with representatives at Apple, and they have informed us that the hermes SDK on the commonly-used SDKs list is referring to another Hermes, not the one made by Meta. They are referring to this one: https://github.com/Imgur/Hermes/blob/master/README.md. As such, Facebook/hermes is not required to provide a Privacy Manifest and Signature ahead of the May 1 date for this SDK. You will be able to continue to submit versions of your apps that use Facebook/hermes without disruption beyond that date, based on current policies.
Next Steps
If you are the owner of a React Native app or maintain a React Native library, we encourage you to do the following:
For library maintainers
After determining the privacy manifest content for your library, we recommend that you also determine how users of your library should integrate your privacy manifest content. This may depend on how the library is being linked. You can also instruct consumers of your library to copy and paste the privacy manifest content into their application's. If your library is integrated via Cocoapods as a separate SDK bundle, you can use the
resource_bundles
on the spec to link the privacy manifest content of your library - however as of now, the archive is capturing the data use but not the required reasons. You will need to add the required reasons to your app's privacy manifest.Please feel free to comment below if you have any other questions or comments, I will do my best to answer them! Thanks for reading.
Beta Was this translation helpful? Give feedback.
All reactions