Skip to main content
Release notes for the JavaScript SDK (@gravity-ai/api / @gravity-ai/react) and the Gravity pixel (gr-pix.js). Entries are publisher-facing — they describe behavior and integration changes, not internal refactors. Latest first.
Upgrading is always a drop-in replacement — npm install @gravity-ai/api@latest and redeploy. We don’t ship breaking changes to the SDK surface on minor/patch bumps.
July 19, 2026 · @gravity-ai/react
Banner variant no longer truncates. The banner variant now lays the ad out over two lines — brand row on top, wrapped adText below — instead of crushing the title and hard-truncating the copy mid-word. 1.1.8 (July 16) was the first pass at this: it ellipsized the title and stopped the label/CTA from overlapping in narrow containers.Nothing to change in your code — upgrade and the banner just renders correctly at narrow widths.
Related docs: Show ads
July 6, 2026 · @gravity-ai/ui
Server-delivered ad rendering. New package: @gravity-ai/ui renders a renderer_spec — a declarative layout the engine sends with the ad — through a thin client runtime. Layout changes then ship from Gravity’s side without you redeploying, which is what makes creative/format experiments possible on non-React and server-rendered surfaces.
Optional: @gravity-ai/react’s GravityAd stays the simplest path if you’re on React. Full guide: Server-rendered ads.
May 2026 · @gravity-ai/react + @gravity-ai/api
Capture leads inline. Advertisers can now run lead-form ad units — the user fills in a short form (email, phone, a question or two) right in your chat UI instead of clicking through. GravityAd renders it automatically whenever the served ad carries a leadForm envelope; the engine stores the lead and fires a conversion so attribution and CPA billing just work.Two things to add to your render call so lead forms work: sessionId (must match the ad request) and apiKey. The same GravityAd keeps rendering normal click-through ads when there’s no form, so this is a one-time, backwards-compatible change.
Display modes (inline, modal-center, modal-bottom-right), identity pre-fill, and full styling hooks are covered in the new Lead-form ads guide. The lower-level GravityLeadFormAd component is also exported for direct use.
Related docs: Lead-form ads · Show ads
May 1, 2026 · @gravity-ai/api
New placement types. search_result, top_page, bottom_page, left_page, right_page, and center_page are now part of the Placement type, so TypeScript stops rejecting them when you request page-level or search surfaces. Same release added the lead-form ad unit types.
Related docs: Placements
April 22, 2026 · @gravity-ai/api
Pixel and SDK now auto-wire end to end. If both are loaded on the page, the SDK pulls four values off window.gravityPixel automatically on every gravityContext() call — no glue code.Caller-supplied values always win, so existing code that explicitly passes sessionId keeps working unchanged.What to do: upgrade to 1.1.7, confirm the pixel is installed (install guide), optionally drop your own sessionId plumbing. If you’re not running experiments yet, this is a good checkpoint to start — see Experiments.
Related docs: Pixel · Request ads · Experiments
March 10, 2026 · @gravity-ai/api + @gravity-ai/react
PII auto-hashing for attribution. The SDK now hashes emails/phone numbers client-side (SHA-256, normalized) before they reach the wire, and the pixel’s gruid is surfaced safely through the SDK so dashboards can attribute conversions without publishers having to think about privacy plumbing.No integration changes required — this shipped as internal hardening. Advertiser-side match rates go up, you don’t have to do anything.
February 22, 2026 · @gravity-ai/api + @gravity-ai/react
Ad composition experimentation framework. The SDK and engine now support A/B testing different ad compositions (which props the server sends, which layout the client renders) on a per-request basis, controlled from the Gravity dashboard.If you want to run UI variants without shipping code — try different CTA copy, card vs. pill layouts, inline vs. below-response placements — this is the unlock. Start at Experiments.
January 2026
Bucket of bug fixes and polish:
  • Fixed hardcoded status: 200 in gravityAds success path
  • Fixed setAd hover cleanup and prop-spread order in gravityContext
  • Fixed Windows URL injection and a timeout 0 falsy-check bug
  • Swallowed execFile errors in openUrl to avoid crashing host apps
  • Deprecated the legacy Client + AdParams API in favor of Gravity + gravityContext
If you’re on 1.1.0+ you’ve got these already. If you’re still on 1.0.x, upgrade when convenient — none of these are security-critical but the DX is materially better.
Pre-January 2026
Pre-1.1.x history is available as version tarballs on npm: @gravity-ai/api versions · @gravity-ai/react versions. The short version: 0.0.x → 0.1.x → 1.0.0 covered the initial public API, ad card + impression logic, the publisher playground, and the first round of @gravity-ai/react templates. If you’re still pinned anywhere in this range, upgrade straight to latest — the API surface is stable across the 1.x line.

How versions ship

  • @gravity-ai/api and @gravity-ai/react are versioned independently. Most publishers only need @gravity-ai/api; @gravity-ai/react is a thin wrapper with pre-built components.
  • latest on npm always reflects the newest stable release. We do not ship breaking changes to published APIs on 1.x minor/patch bumps.
  • The pixel (gr-pix.js) is served from https://code.trygravity.ai/gr-pix.js and updates in place — you don’t pin a version, you always get the current build. Changes are backwards-compatible.

Questions or issues?