← Developer Journal
·4 min read·Terry Pugh

How We Keep Ads Off the Game

Diamond Legend runs advertising on public marketing pages only — never inside the game shell. Here's exactly how that's wired.

We want to be direct about advertising on this site, because ads in games are usually done badly and we don't want to be part of that trend.

The rule

Advertising scripts load on our public content pages only: the landing page, About, Studio, Blog, How to Play, Changelog, Contact, Pricing, and the legal pages. On every other route — the dashboard, roster screens, simulation, trades, draft, offseason, injured list, minors — no ad script runs, no ad iframe mounts, no analytics pixel fires for advertising purposes.

That isn't a policy claim. It's how the code is structured.

How it works

Ad partner scripts live in a single React component called PublicAds. It appends the ad-network tags to document.head when it mounts, and it is imported from exactly one place: the public content routes listed above. The authenticated game shell never renders it, so the scripts are never added to the page when you're playing.

We also don't inject ad tags in the root layout. That was our first setup, and it was wrong — it meant the ad network was loading on every screen, including inside the game. We pulled it out, isolated it in the PublicAds component, and now the load graph you see on the dashboard is game code only.

Why it matters

Two reasons.

One: Ads inside a strategy game are a distraction from the thing you sat down to do. Diamond Legend asks you to think — about a lineup, a trade, a callup, a draft board. You shouldn't have to fight a banner while you're thinking.

Two: Ad networks want engagement metrics, and games are noisy. If we let the ad SDK see every click in the game, our data would be garbage and the ads would be worse for everyone. Keeping ads on marketing pages means the ads that do run are shown to people who came here to read about the game — which is exactly who the advertiser wants to reach.

The revenue tradeoff

We know this leaves money on the table. A game with 132-player rosters and daily simulation could serve a lot of impressions. We've chosen not to.

The way we cover costs instead is [Pro subscriptions](/pricing) — one price, no ads anywhere, and the money goes directly into shipping weekly. If you play the game, that's the way to support us. If you're just here to read the blog, the ads on the public pages are how the site pays for itself.

In one sentence

Ads live on the front porch. The game is inside the house.

Keep reading