Trying to load Meteor site on Facebook’s in-app browser, and getting a series of errors. Will post a screenshot.
It could be that the modern browser bundle is being served instead of the legacy. FB browser appears as legacy in my logs. I have no issue with it and by this I mean there is no issue like Meteor Apps don’t work in FB browser.
This only started happening on February 3rd, so I’m unsure what’s going on. Could this be a jQuery issue?
Hi, ok so this is becoming a problem. Would tag @filipenevola for the time being and see if there is some more experience behind this issue.
What I read in public articles hints to the fact that this Facebook browser is a “lite” browser, not comparable with any of the “traditional” mobile browsers.
For me it works ok on IOS, no complaints here. However on Samsung with Android 9 things are different. It looks like I need the legacy bundle instead of the modern one. I don’t really know how to add Facebook to the list of legacy instead of modern and follow with a test afterwards. Haven’t seen this error until this Android occurrence.
ok. some progress on this. It looks that the service worker is blocking the load somehow. Just made a conditional registration of the service worker to exclude the FB browser on Android which is anyway of no use. All looks good now.
@shaggykris did you have a service worker registered for things like PWA?
const isFacebookApp = () => {
const ua = navigator.userAgent || navigator.vendor || window.opera
return (ua.indexOf('FBAN') > -1) || (ua.indexOf('FBAV') > -1)
}
if ('serviceWorker' in navigator && !isFacebookApp()) {
navigator.serviceWorker.register('/sw.js')
.then(registration => {
console.log('SW')
})
.catch(err => {
console.log('ServiceWorker registration failed: ', err)
})
// Refresh all tabs after a service worker update takes place
let refreshing
navigator.serviceWorker.addEventListener('controllerchange', () => {
if (refreshing) { return }
refreshing = true
window.location.reload()
})
}
We have a number of these isFacebookApp()
calls
So oddly enough, it was actually the html script tag for loading Cloudinary on our site that was causing the issue. After moving that to be loaded by
$.getScript("https://widget.cloudinary.com/v2.0/global/all.js", function(err) {
// Handle errors
});
in Meteor.startup()
, things seemed to resolve themselves.
However, I am strongly taking into consideration what you’re posting here. I have not tested using Facebook Lite yet.