Play Store issue about Family Ads Program

@dzuvan - can you share your package.json?

Hi,

I tried adding “enableDangerousExperimentalLeanBuilds”: true and “facebookAutoInitEnabled”: false to the app.json but my app still got rejected because of the Facebook SDK. Seems that the SDK is still interfering in some way.

Is there any other way around this except ejecting?

Thanks.

Richard

Unfortunately no, there isn’t :confused:

We’re adding this limitation to the documentation. It used to be the case that you could repeal Google’s decision on your app and explain that you don’t use these libraries, but it looks like that doesn’t have the success rate it used to (although I still recommend giving it a shot)

While you can continue to develop in the managed workflow, any apk/aab submissions you make should be built yourself after running expo eject, so that they do not include the Facebook Audience network SDK

{
“main”: “node_modules/expo/AppEntry.js”,
“scripts”: {
“start”: “expo start”,
“android”: “expo start --android”,
“ios”: “expo start --ios”,
“web”: “expo start --web”,
“eject”: “expo eject”
},
“dependencies”: {
@react-native-community/async-storage”: “~1.12.0”,
@react-native-community/masked-view”: “0.1.10”,
@react-navigation/native”: “^5.7.3”,
@react-navigation/stack”: “^5.9.0”,
“date-fns”: “^2.16.1”,
“expo”: “^39.0.0”,
“expo-constants”: “~9.2.0”,
“expo-screen-orientation”: “~2.0.0”,
“expo-splash-screen”: “~0.6.1”,
“expo-store-review”: “~2.1.2”,
“react”: “16.13.1”,
“react-dom”: “16.13.1”,
“react-native”: “https://github.com/expo/react-native/archive/sdk-39.0.3.tar.gz”,
“react-native-collapsible”: “^1.5.3”,
“react-native-gesture-handler”: “~1.7.0”,
“react-native-reanimated”: “~1.13.0”,
“react-native-safe-area-context”: “3.1.4”,
“react-native-screens”: “~2.10.1”,
“react-native-snap-carousel”: “^3.9.1”,
“react-native-web”: “~0.13.7”,
“react-native-webview”: “10.7.0”
},
“devDependencies”: {
“babel-plugin-transform-remove-console”: “^6.9.4”,
“babel-preset-expo”: “^8.3.0”
},
“private”: true
}

Hi @notbrent. I am also facing same problem. I have ejected the app but I don’t know where facebook sdk is and how to remove it. Please answer us how to locate and remove facebook sdk from ejected expo app.

hey all, this isn’t the answer that you’re hoping for but we’ve updated our “Limitations” page for the managed workflow to indicate that ‘You cannot participate in Google’s “Designed for Families” Program’.

Google requires any app that primarily targets children under 13 to follow a strict set of guidelines. One of these guidelines is that any ad library included in the app must be a part of Google’s Families Ads Program. Managed workflow apps contain the code for the entire Expo SDK by default, including Facebook’s Audience Network library. Because this library is not part of Google’s Families Ads Program yet, you cannot list your app as “designed primarily for children under 13” in the Play Store.

what you can do today to unblock your app submission

if you have built your app with the managed workflow then you will need to eject to bare workflow to submit your app to the play store for the “Designed for Families” program.

what we are working on to prevent this and related problems in the future

we’ve been working on re-building our build process to be more flexible and powerful, and it will solve this and related issues in the future. it’s not quite ready yet though, and we might not be able to ship a public beta until the end of the year or early new year.

4 Likes

I can confirm that ejecting the app to the bare workflow worked for me. Even without any changes in the code trying to remove the sneaky Facebook SDK, just by ejecting, building the bundle, and submitting again, I got my app approved by the Play Store.

I had to explicitly confirm that I want the location permissions removed though. Just to delete the lines requestion permissions in the AndroidManifest.xml is not enough. You have to add lines saying that you want to remove those permissions:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="package name here">
 
...

  <uses-permission tools:node="remove" android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission tools:node="remove" android:name="android.permission.ACCESS_COARSE_LOCATION" />

...

</manifest>
1 Like

I am facing another issue that a few of my bundled images are not loading anymore for no apparent reason. No idea where is the bug, but it is an issue for another thread…

Will a solution for this be shipped in v40 (which I read now is in beta.

Will a solution for this be shipped in v40

there is no plan to do this. as i wrote above:

we’ve been working on re-building our build process to be more flexible and powerful, and it will solve this and related issues in the future. it’s not quite ready yet though, and we might not be able to ship a public beta until the end of the year or early new year.

Hi. SDK 40 is not yet in beta. SDK 40 is expected to be released some time in December and according to the blog post the beta version will be released about a week before that.

Beginning with SDK 40, we will be trying out an SDK beta release period for approximately one week before the final release.

What steps need to be taken to remove the Facebook SDK, I’ve ejected my app and removed Expo Updates following the instructions here https://github.com/expo/expo/tree/master/packages/expo-updates, but the app is still getting rejected by the Play Store.

@notbrent @deltasoneca
I have also ejected the app to bare workflow, removed the permissions and expo updates. but still the app is been rejected from playstore. When i Appealed against rejection, The Google Play Team replied that they have found Facebook SDK.

Here is my package.json dependencies list. Is there anything in there that could have Facebook Ads SDK as a subdependency?

"dependencies": {
    "@expo/vector-icons": "^10.0.0",
    "@react-native-community/async-storage": "~1.12.0",
    "expo": "^39.0.0",
    "expo-av": "~8.6.0",
    "expo-constants": "~9.2.0",
    "expo-linear-gradient": "~8.3.1",
    "expo-splash-screen": "~0.6.1",
    "expo-status-bar": "~1.0.2",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": "0.63.3",
    "react-native-gesture-handler": "~1.7.0",
    "react-native-modal": "^11.5.6",
    "react-native-reanimated": "~1.13.0",
    "react-native-safe-area-context": "3.1.4",
    "react-native-screens": "~2.10.1",
    "react-native-size-matters": "^0.3.1",
    "react-native-svg": "12.1.0",
    "react-native-switch": "^2.0.0",
    "react-native-unimodules": "~0.11.0",
    "react-native-web": "^0.14.5"
  },
  "devDependencies": {
    "@babel/core": "^7.8.4",
    "@expo/webpack-config": "^0.12.40",
    "@svgr/core": "^5.0.1",
    "@svgr/plugin-prettier": "^5.0.1",
    "babel-eslint": "^10.0.3",
    "babel-jest": "~25.2.6",
    "babel-preset-expo": "^8.3.0",
    "eslint": "^6.8.0",
    "eslint-config-airbnb": "^18.0.1",
    "eslint-plugin-import": "^2.20.1",
    "eslint-plugin-jsx-a11y": "^6.4.1",
    "eslint-plugin-react": "^7.18.3",
    "eslint-plugin-react-hooks": "^1.7.0",
    "jest": "~25.2.6",
    "react-native-svg-transformer": "^0.14.3",
    "react-test-renderer": "~16.11.0"
  },

for the libraries that i am familiar with from that list (packages from the sdk) i do not see any that would include the facebook sdk.

are you possibly still running expo build:android to produce your app binary? you can’t currently do this after ejecting, you need to follow these instructions instead, or if you dm me on slack (https://slack.expo.io/ - i’m brent on there) i can share info about a preview of a new build service we’re working on that supports ejected apps.

After ejecting to bare work flow, we are using following commands to build which are same as in the link you mentioned.

"aab-build": "cd android && gradlew bundleRelease",
"apk-build": "cd android && gradlew assembleRelease",

Can you please let us know any technique/tool using which we can locate where the Facebook SDK is and also how to uninstall/remove it from the project manually?

@notbrent we are also still getting rejected after ejecting and using Android Studio to build. This is our list of modules captured from Android Studio. I don’t see any unauthorized SDKs for the Families Program in this list, but Google is still claiming them. We reached out to them to provide more information but has been quiet.

i don’t have a good answer for you, could you try to get more information from google about what they are specifically finding? you can ask them what symbols they are detecting that they are associating with the facebook sdk, and that is something that we can work with here.

I’ve put in a request to Google for more details on what the problem is, I’ll report back when I get an answer.

Finally had a reply from Google Play.

All they will tell me is that the app contains use of Facebook SDK which is not allowed in apps that are in the Family Ads Program.

Really not sure where to go from here

Same thing for us, Google replied to us yesterday finally, basically the same automated email they’ve sent us before. We’re stuck as well even after converting to the bare workflow.

We have detected the use of Facebook SDK , which is not allowed in apps that are in the Families program. An ad SDK is not allowed if it has not self-certified its compliance with Play’s Families Ads Program (certified ad SDKs), or it is non-COPPA compliant per its own public documentation. Please note, the status of SDKs often changes and it is your responsibility to review documentation of all SDKs used in your app to ensure compliance with Families policies.

1 Like