Play Store issue about Family Ads Program

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…

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 expo/packages/expo-updates at master · expo/expo · GitHub, 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.