Prebid 10.12.0 prebid.renderAd does not render certain banner ads that break out of the frame but do not walk up additional frames anymore
When switching from 9.53 to 10.12 the banners ads stopped being displayed.
Since this commit(#13851) calling pbjs.renderAd() does not render BANNER ads anymore. [deployed in 10.11.0]
https://github.com/prebid/Prebid.js/pull/13851/files#diff-b09bb69302f9e7c2a9de1ded930601d79326169d5a687af2822e07ce03e25275L327-L330
How it used to work:
- you created iframe
- then provided document object from this iframe to renderAd function like for example:
pbjs.renderAd(iframe.contentWindow.document, bid.adId) - renderAd() would then take this iframe and write the BANNER ad into it
- Since this was now removed in commit #13851 if you pass iframes document into it, it will create double nested iframes and not display ads
- And if you provide window.document to it and element with ad-unit-id exists on the websites it will still not insert the iframe into that div element generated by renderAd()
@dgirardi is this expected behavior?
is this expected behavior?
No; are you able to provide steps to reproduce? Anything in the debug logs? Or can you spot the difference comparing to:
https://github.com/prebid/Prebid.js/blob/426ddcc027d74b54382df72162f297276994eabc/integrationExamples/noadserver/basic_noadserver.html#L73-L84
I noticed now that that particular example page is set up to use an old version of prebid, but (when you do get a bid, might need some refreshing) that setup does work for me on master and 10.12.0:
We figured out some similar issues and tested further with your example here. I analyzed the difference between rendering with and without doc.write to understand what happened after switching to prebid 10.x.
With prebid 10.13.0 the structure of the ad include now two nested iframes - first the one from the page itself and second one genereated by prebid:
If using a prebid 9.52.0 with doc.write locig, which is present since years, there will be only one iframe - the one from the page:
Furthermore from this clean example there seems to be trackings missing as the last one here from using prebid 9.52.0 will not get fired when using 10.13.0:
This is for the same ad, but rendered with prebid 10.13.0:
From my understanding and what we have recognized there will be cases that ads will not get rendered properly when using prebid up from 10.11.0 as there is an additional iframe included. I don't think some of the SSPs will be aware of changing the logic in their creatives to reach the most top iframe. For ads with running only images and no further logic it seems to work as show in the above example.
Any idea on how to improve the complete logic for such cases when using no adserver?
By similar do you mean the ad does not show @vlyby-nadja? Or something more subtle like tracking discrepancies, or both?
Any chance to get an example of a creative that can't render? I agree that if it has logic that expects to find the top frame one level up it would have trouble, but it seems odd that it would not render at all.
I am wondering if you found some way to consistently trigger https://github.com/prebid/Prebid.js/pull/13991, which shows up as an adRenderFailed event; are you able to check if that PR makes a difference @damjan25 ?
The extra iframe from https://github.com/prebid/Prebid.js/pull/13851 is to address a tracking problem introduced with 10's yielding feature; if it breaks some creatives it would affect most setups (including GAM) and the solution I believe is to disable yielding (as in https://github.com/prebid/Prebid.js/pull/13789/).
@dgirardi I tried with #13991 and still getting same issue unfortunately.
Strange that bidders emit "adRenderSucceeded" event but they say they dont track any ad impression on their side:
For me bidders that jump out of 2nd nested iframe work perfectly but the ones that stay inside of it just dont display anything.
Do you have a page that shows the issue, or a copy of the bidResponse event payload for the problematic ad?
@dgirardi yes, is there prebid slack/discord or where can I send it to you?
@dgirardi Yes, we have same issues with ads do not get rendered even the prebid would detect them as rendered. Unfortunately there is right now no example I could share, as the SSPs we're having issues with, will mostly work on our publisher pages only (domain detection at the SSPs). I'm trying to get some examples to work, but may need some time on this.
Furthermore I tried the mentioned PR https://github.com/prebid/Prebid.js/pull/13991 which unfortunately do not change anything at our situation. For that yielding option, we would need some more time to test further. Thank you for your patience on that.
If it shouldn't be posted here you can send to [email protected]
@dgirardi did you get the mail on friday?
Were you able to reproduce on your side with that adUnit?
Yes, I was able to reproduce (thank you!). At least in that case it is an issue of the creative expecting to be one frame down from the advertiser site.
We're now discussing our options - rolling back that change requires rolling back other features (specifically yielding, which is meant to improve page performance). Alternatively we could give publishers an option to turn both off.
@vlyby-nadja were you able to solve this issue by modifying the creative to expect another frame layer?
@patmmccann no this is not possible, because there are several bidders affected. In the meanwhile, we even figured out that not all of the affected bidders we're using having the issue with the missing ad rendering. Some of them render the ad correctly, but the bidder related trackings are missing, which will cause issues in reportings on their end (especially missing impression tracking). This means the additional iframe is causing issues in the bidder related trackings as well, which I already figured out with the Appnexus test ad from your example in a comment above: https://github.com/prebid/Prebid.js/issues/14048#issuecomment-3431263762
Any news on the possible options you're currently discussing internally?
all of the affected bidders
It would be very helpful to provide the list so we can correspond with them. If you don't want to post it here please email me at pmccann at prebid
The last time we discussed this at committee we were awaiting independent confirmation before doing anything. A couple major SSPs ran some tests and said they were not affected, so we have no current plan.
Currently we're considering an optional flag that would restore the old render flow, potentially with a deprecation notice on day 1.
The committee considered this again, and we will be offering this flag and not reverting a bunch of stuff.
@patmmccann I send over a list via mail.