Play Store issue about Family Ads Program

Hi,

I am facing the same issue and Google Play Store rejects my kids-directed app due to some use of an Ad SDK(Facebook SDK), even though I don’t serve any ads at all.

I am using Expo 39.

Could a possible solution be to add:

“facebookAutoInitEnabled”: false
in the app.json?

Seems like the Fasebook SDK still is initialized in someway?

I am not getting any further information from Google.

@adamjnav do you have any comment on this issue?

Thanks.

Richard

3 Likes

ExponSDK 39 here and same issue. App being rejected because of Facebook SDK. And Google is not providing any further info. How can I fix it?

Hey, same error here. Expo SDK 39 and Google Play Store complains that bundle uses Facebook ad SDK. Looking for the way to resolve issue without ejecting!

I did support ticket, here’s reply from Play Store:

Fix the policy violation with your app

We have detected that your app includes non-certified ad SDKs and/or SDKs that are not approved for use in child-directed services. Any SDKs used in the app must be appropriate for use in child-directed services. Additionally, apps that solely target children must not contain any SDKs that are not approved for use in child-directed services, including ads SDKs. Apps in the Designed for Families program must only use ad SDKs that have certified their compliance with the Families Ads Program.

We have detected the use of Facebook ad 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.

Please update your app to fix this issue.

Ok, I believe the Expo team just won’t give an answer on this. I just ejected my project and I have it open on Android Studio, ready to remove Facebook Ad SDK. The only thing is that… I don’t know where it is!

Anybody could help me telling what should I remove from my project in order to remove Facebook Ad SDK?

No module or dependency is clearly labeled “facebook-ads”. There is a bunch of expo-* modules and a bunch of unimodules-* modules. And there are a lot of facebook-originated dependencies, none clearly labeled as ads.

Here is the complete list of dependencies by Facebook:

And here are all the modules in my ejected project:

What I gave to get rid of in order to not have Facebook Ad SDK code in my app anymore??

thanks!

1 Like

when you eject your project only includes the libraries that you’re using, and so you don’t have the facebook ads sdk anymore if it wasn’t installed in package.json. more info at https://expo.fyi/managed-app-size

also note that you could use android.enableDangerousExperimentalLeanBuilds in app.json to have a similar effect in managed workflow

Hi @notbrent thanks for the reply, but I believe you are wrong.

I have used android.enableDangerousExperimentalLeanBuilds before, tried to submit to Play Store and it was still rejected with the reason that I was using Facebook Ads SDK (which is not in my package.json).

I even opened an issue mentioning this as another thread (How to remove non-certified ads SDK to fix Play Store issue with Family Ads Program).

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

"dependencies": {
    "expo": "^39.0.0",
    "expo-splash-screen": "~0.6.2",
    "expo-status-bar": "~1.0.2",
    "expo-updates": "~0.3.2",
    "react": "16.13.1",
    "react-dom": "16.13.1",
    "react-native": "~0.63.3",
    "react-native-gesture-handler": "~1.7.0",
    "react-native-reanimated": "~1.13.0",
    "react-native-screens": "~2.10.1",
    "react-native-unimodules": "~0.11.0",
    "react-native-web": "~0.13.7",
    "@expo/samples": "~3.0.0",
    "@expo/vector-icons": "^10.0.0",
    "@react-navigation/web": "^1.0.0-alpha.9",
    "expo-asset": "~8.2.0",
    "expo-av": "~8.6.0",
    "expo-constants": "~9.2.0",
    "expo-font": "~8.3.0",
    "expo-linear-gradient": "~8.3.0",
    "expo-web-browser": "~8.5.0",
    "react-navigation": "^3.11.0"
  },
  "devDependencies": {
    "@babel/core": "~7.9.0",
    "babel-jest": "~25.2.6",
    "jest": "~25.2.6",
    "react-test-renderer": "~16.13.1",
    "babel-eslint": "^10.1.0",
    "babel-preset-expo": "^8.3.0",
    "eslint": "^6.8.0",
    "eslint-plugin-react": "^7.19.0",
    "jest-expo": "^39.0.0"
  },

hi there,

when building with lean builds we still include some libraries that are depended on in the standalone app build process, for example firebase, and perhaps the facebook sdk is one of those. expo-facebook-ads itself would not be included, but the underlying facebook sdk may be. given that in your experience that appears to be true, your best option right now, as far as i know, is to eject to a bare project and work from there.

Same issue

Ok, I am building it from the bare project and will try to submit again. I come back here informing the result later, thanks!

I tried adding android.enableDangerousExperimentalLeanBuilds and the app got accepted, but it crashed on startup in production build with the error
java.lang.NoClassDefFoundError: Failed resolution of: Lexpo/modules/updates/db/DatabaseHolder

In my case, because the client gave his approval I solved the issue by increasing the age limit to 15+

1 Like

@dzuvan - did you have expo-updates in your package.json? what sdk version?

SDK 39.0.3
I tried with and without expo-updates, both result in a crash.
Also tried with and without disabling updates in app.json.
Happens regardless if I use --no-publish or not.

@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…