October 07, 2019

Prebid.js 3.0 Major Release Announcement


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)

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]]
                    }
                },

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.

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
    }]
};

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