The Prebid core team is excited to announce a major release: Prebid.js 3.0! Here are the main items that will be included in this release:
- Upgrade all bidder adapters to HTTPS all the time.
- Removal of miscellaneous legacy APIs and functions (should be a minor publisher impact). (Issue 4118)
- Unbundle PubCommon ID and Unified ID from the User ID module build.
- Fix for
getHighestCpmBids
to not return rendered bids. (Issue 2959) - Remove the legacy PBS adapter endpoint support. (Issue 4172)
- Improve caching behavior if enabled. (Issue 4148)
- Remove the ‘min’ attribute from custom pricegranularities.
See the full list of items that are associated with the 3.0 release.
Publisher-facing API Changes
Review these changes to make sure you’re ready to upgrade to 3.0.
1. AdUnit.sizes can no longer be used
To upgrade to Prebid.js 3.0, you’ll need to make sure that ad sizes are in mediaTypes.banner.sizes.
For example, instead of including sizes like this:
var adUnits = [
{
code: \'test-div\',
sizes: [[300,250],[300,600]],
You will need to define adUnits sizes like this:
var adUnits = [
{
code: \'test-div\',
mediaTypes: {
banner: {
sizes: [[300,250],[300,600]]
}
},
AdUnit.sizes should not have been used for video player size, but be aware that video requires mediaTypes.video.playerSize. e.g.
var adUnits = [
{
code: \'test-div\',
mediaTypes: {
video: {
playerSize: [640, 480],
...
}
},
2. The userSync API no longer supports iframeEnabled, pixelEnabled, or enabledBidders
There has been a much more flexible syntax for userSync available for a long time, and it’s what you need to be using now. See the Publisher API docs for more details, but here’s an example of the improved syntax:
pbjs.setConfig({
userSync: {
filterSettings: {
iframe: {
bidders: [\'def\'], // only this bidder is excluded from syncing iframe pixels, all other bidders are allowed
filter: \'exclude\'
},
image: {
bidders: [\'abc\', \'def\', \'xyz\'], // only these 3 bidders are allowed to sync image pixels
filter: \'include\'
}
},
syncsPerBidder: 3, // and no more than 3 syncs at a time
syncDelay: 6000, // 6 seconds after the auction
}
});
3. Remove legacy protocol support for Prebid Server
You will need to check the s2sConfig.endpoint defined for Prebid Server. If it’s /auction
, you’ll need to change to /openrtb2/auction
. No other changes are necessary, but you should test the change with your Prebid Server provider.
4. pbjs.loadScript() is gone
If you happen to be using this ancient function, you’ll need to find an alternative.
5. Be aware that the getHighestCpmBids() function will no longer return already-rendered bids
This is a bug that some of you may have implemented workarounds for. More details here.
6. The ‘min’ attribute is no longer used on pricegranularity
The existence of the ‘min’ attribute should not harm existing price granularities, but if anyone has defined price granularities with gaps between the buckets, they won’t work anymore. (EDIT: see box below)
For example, this is no longer possible. (It’s unclear to us why anyone would need this.)
const customConfigObject = {
\"buckets\" : [{
\"min\" : 0,
\"max\" : 5,
\"increment\" : 0.01
},
{
\"min\" : 5.25, // ignore bids between $5 and $5.25
\"max\" : 10,
\"increment\" : 0.05
}]
};
EDIT: since launching Prebid.js 3.0, we’ve discovered that some publishers had explictly defined non-overlapping min/max ranges like 0-0.99, 1-4.99, 5-19.99, etc. Unfortunately, this arrangement doesn’t work as expected in 3.x. Instead of producing values 1.00, 1.05, 1.10, etc. it produces 0.99, 1.04, 1.09, etc. We apologize for missing this breaking change.
7. Specifically pull PubCommon ID and Unified ID into your build
In previous versions, PubCommon ID and Unified ID were automatically
included as part of your Prebid.js build when you included the userId module
This is no longer the case; in order for a Prebid.js package to include PubCommon ID and Unified ID, the gulp build
command will need to specifically include them.
More details
Implementation details for all Publisher-facing changes are here
Adapter Maintainers Action Required
If you’re responsible for any adapters, be sure you’ve taken the actions outlined here.
1. Ensure your bidder doesn’t use deprecated functions
Referrer detection and related code
Bidder adapters should review their implementation to see if they are relying on getting referrer information from updated APIs in utils.js
. If they are, they should instead use the new referrer methods on the bid request (bidderRequest.refererInfo
).
Important
If you are using a deprecated function, your bidder adapter will be removed from the 3.0 branch. You will need to re-submit compliant code. Please target re-submission by November 1, 2019. This will give enough time for the core team to review and target the release of mid November.
2. Verify bidder supports HTTPS
We ask all bidder adapters to ensure they are compliant with secure requests to their endpoints (HTTPS). It is already a requirement for bidders to support it on secure pages, so hopefully this will not be a big issue. For the 3.0 release the Prebid core team will automatically update all the endpoints to secure if they are not already updated.
3. Verify adapter reads sizes from mediaTypes.banner.sizes
We are telling pubs that they need to confirm that their adUnits define sizes in mediaTypes.banner.sizes
instead of just sizes
.
Adapter code and examples must be updated to reflect this change.
Target release date
Mid-November, 2019