Wrapper: gamersberg-wClcBNUC6z / gamersberg-longform · API: tude.initCustomRewarded()
Stays empty unless the ad is genuinely completed. No fill, or closing early,
leaves this blank — that is the guarantee. Screenshot this for your devs.
reason: "gam" = Google's own rewardedSlotGranted verdict; its
countdown, skip and close UI are Google's, and countdownTime /
text / cssVars / closeButtonDelaySeconds are
inert for that session (remainingTime: -1).
reason: "timer" = the custom overlay's own countdown completed.
Either way, grant on this one callback and nothing else.
no reward granted yet
Prebid wins show exact CPM. Google (AdX/AdSense) wins show only line item and advertiser IDs — Google does not expose price in the browser, so those rows have no dollar figure by design.
gamersberg.com hostname — on
pages.dev or localhost every bidder refuses and you'll get
onNofill → onClose(reason:'nofill'). No fill means no reward
and the countdown never starts; that's the documented guarantee, not a bug. Keep
showOn = immediately to always see the overlay chrome, and raise
nofillTimeoutMs to give bidders longer.
mobile < 728 ≤ desktop) and re-syncs on resize.
Narrow the window, or use DevTools device emulation (F12 → Ctrl+Shift+M), and watch the
shell line in diagnostics flip. Desktop lays video-rects side by
side; mobile stacks them.
Both are ticked here because GAM-first with fallback is the intended production
setup. Note the library default is enabled: false — Google native
rewarded is not attempted unless you pass gamRewarded explicitly.
Unticking both gives you the custom overlay only.