> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trygravity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> New features and fixes in Gravity for advertisers and publishers, newest first.

What's new in Gravity: the dashboard, the APIs, the SDKs, and the Gravity pixel. Each entry says what changed and whether you need to do anything. The newest entry is first.

> [!NOTE]
>
> To upgrade an SDK, install the latest version of the package (for example `npm install @gravity-ai/api@latest`) and deploy your app again. Minor and patch versions in the `1.x` line keep the same public API.

**Dashboard features in the Platform API**

October 28, 2026 · Advertisers and publishers

**More of the dashboard is available with your API key.** The Platform API and the dashboard MCP server now cover more advertiser and publisher dashboard tasks. You can manage campaigns, read reports, and use account features with your account API key. A few tasks, such as adding payment details and approving connections, still need the browser.

Related docs: [Advertiser dashboard MCP server](https://docs.trygravity.com/advertisers/dashboard-mcp.md) · [Publisher dashboard MCP server](https://docs.trygravity.com/ai-platforms/dashboard-mcp.md)

**Earnings in the stats endpoint**

October 28, 2026 · Publishers

**`GET /publisher-dashboard/stats` uses the dashboard's earnings calculation.** The endpoint, and the `publisher_get_stats` MCP tool that calls it, now compute earnings the same way as the **Overview** and **Earnings** pages. If your account has a monthly floor, qualifying-request terms, or launch earnings, the numbers from this endpoint can change to match the dashboard. This changes reported earnings only, not payouts.

Related docs: [`GET /publisher-dashboard/stats`](https://docs.trygravity.com/api-reference/publisher/reports#get-/publisher-dashboard/stats)

**Network and Index together**

October 2026 · Publishers

**Overview and Earnings show Network and Index performance together.** If your account has Index activity, you can pick which source to include. Placement, device, and geography breakdowns still show Network results only.

**Block advertiser domains**

October 2026 · Publishers

**Block advertiser domains in Publisher Settings.** Add domains one at a time or paste a list, then save. Blocking a domain also blocks its subdomains. Blocks reduce the competition for your placements and can lower your revenue. Changes apply after the next refresh of the ad server cache, so they can take a few minutes.

**Image ads**

October 2026 · @gravity-ai/react 1.3.0, @gravity-ai/ui 0.3.0, @gravity-ai/react-native 0.2.0

**Ads can show a product image.** When an ad has an image, the response includes the `brandImage` field. The SDK then shows an image card, with the image on one side and the text on the other side. An ad without an image shows as the usual text card. Gravity selects the layout on the server, so you do not configure it.

```bash theme={null}
npm install @gravity-ai/react@latest   # or @gravity-ai/ui@latest, @gravity-ai/react-native@latest
```

If you call the API directly, read `brandImage` and make your own card. To get a test image ad, send `"testAd": true, "alwaysReturn": true, "testAdFormat": "image"`.

Related docs: [Image ads](https://docs.trygravity.com/engine/contextual-ads.md#image-ads)

**Saved report columns**

October 20, 2026 · Advertisers

**Choose, reorder, and save the columns you use.** In Ads Manager, the Campaigns, Ad groups, and Ads tables now let you pick columns, reorder them, and save column sets. Campaigns and Ad groups can also show metrics for the events you track, and CSV exports use the same columns. Tracked-event columns count attributed events, not every raw pixel event.

**Conversion event check for CPA**

October 20, 2026 · Advertisers

**CPA campaigns need a matching server conversion event before launch.** A live Conversions API event or a verified test event for the selected action unlocks it, so you can confirm tracking before you spend. Pixel activity alone doesn't unlock the action. You can still prepare a draft before the event arrives.

Related docs: [Server-side conversions](https://docs.trygravity.com/advertisers/server-conversions.md)

**One monthly cap for CPA**

October 16, 2026 · Advertisers

**Every CPA campaign has one monthly cap.** The campaign builder, tables, and details show the same cap. You can set a cap or leave the campaign uncapped, and the dashboard no longer asks for a separate daily budget.

**Guided tracking setup**

October 14, 2026 · Advertisers

**Events Manager guides you through tracking setup.** Choose your website or mobile app, follow the installation steps, then test that customer actions reach Gravity. Shopify setup now separates hosted stores from custom storefronts.

**Results by ad group**

October 13, 2026 · Advertisers

**See Results, cost per result, and revenue for each ad group.** The Ad groups table in Ads Manager and the advertiser API both report them. You can sort the metrics and export them. Conversions without an ad group, such as view-through conversions, still count only at the campaign level.

Related docs: [`GET /advertiser-dashboard/ad-group-metrics`](https://docs.trygravity.com/api-reference/advertiser/reports#get-/advertiser-dashboard/ad-group-metrics)

**1.2.0**

October 3, 2026 · @gravity-ai/api

**More time for an ad response.** `gravityAds()` now waits up to 4 seconds for an ad by default, up from 3 seconds. To change it, set `timeoutMs`.

```bash theme={null}
npm install @gravity-ai/api@latest
```

Related docs: [JavaScript SDK](https://docs.trygravity.com/sdks/javascript.md)

**1.2.1**

September 22, 2026 · @gravity-ai/react

**Impression tracking survives re-renders.** Ad cards keep their impression tracking active when your chat UI re-renders during a streamed response. Before this fix, an impression could arrive late or not at all. An ad still needs to be 50% visible to count an impression.

```bash theme={null}
npm install @gravity-ai/react@latest
```

**1.1.9**

July 19, 2026 · @gravity-ai/react

**The banner variant does not cut the text.** The `banner` variant now shows the ad on two lines: the brand row on top, and the full `adText` below it. Before this change, the title had too little space and the text stopped in the middle of a word. Version `1.1.8` (July 16) was the first fix: it shortened a long title with an ellipsis and stopped the label and the CTA from overlapping in narrow containers.

You do not have to change your code. Upgrade, and the banner shows correctly at narrow widths.

```bash theme={null}
npm install @gravity-ai/react@latest
```

Related docs: [Show ads](https://docs.trygravity.com/ai-platforms/show-ads.md)

**0.1.0**

July 6, 2026 · @gravity-ai/ui

**Ad layouts from the server.** The new package `@gravity-ai/ui` shows a `renderer_spec`. A `renderer_spec` is a layout description that the engine sends with the ad. Gravity can change the layout without a new deployment of your app. This lets Gravity test designs on surfaces that do not use React, and on pages that your server renders.

```bash theme={null}
npm install @gravity-ai/ui
```

This package is optional. If your app uses React, `GravityAd` from `@gravity-ai/react` is the easiest option. For the full guide, see [Server-rendered ads](https://docs.trygravity.com/sdks/server-rendered-ads.md).

**1.1.8**

May 1, 2026 · @gravity-ai/api

**New placement types.** The `Placement` type now includes `search_result`, `top_page`, `bottom_page`, `left_page`, `right_page`, and `center_page`. TypeScript now accepts these values when you request ads for page surfaces or search surfaces.

```bash theme={null}
npm install @gravity-ai/api@latest
```

Related docs: [Placements](https://docs.trygravity.com/ai-platforms/placements.md)

**1.1.7**

April 22, 2026 · @gravity-ai/api

**The SDK reads the pixel values automatically.** When the page loads both the pixel and the SDK, each `gravityContext()` call reads four values from `window.gravityPixel`. You do not have to write code to connect them.

| Pixel method | Request field | What it does |
| - | - | - |
| `getVisitorId()` | `user.gruid` | A stable first-party visitor ID. Gravity uses it for attribution and in the auction. |
| `getSessionId()` | `sessionId` (top level) | The pixel session ID. A pixel session ends after 30 minutes with no activity. If you do not send a `sessionId`, the SDK uses this value. |
| `getClickId()` | `user.grclid` | The Gravity click ID, when a user comes to your site from a Gravity ad. Gravity uses it for attribution reports. |
| `getGraid()` | `user.graid` | The ad identifier of the incoming visit. Gravity uses it for attribution reports. |

A value that you send yourself always has priority over the pixel value. Code that sends its own `sessionId` continues to work with no change.

**What to do:** upgrade to `1.1.7` and make sure that the pixel is installed ([install guide](https://docs.trygravity.com/ai-platforms/pixel.md)). You can then remove your own `sessionId` code if you want. For design tests, see [Experiments](https://docs.trygravity.com/ai-platforms/experiments.md).

```bash theme={null}
npm install @gravity-ai/api@1.1.7
```

Related docs: [Pixel](https://docs.trygravity.com/ai-platforms/pixel.md) · [Request ads](https://docs.trygravity.com/ai-platforms/request-ads.md) · [Experiments](https://docs.trygravity.com/ai-platforms/experiments.md)

**1.1.6**

March 10, 2026 · @gravity-ai/api + @gravity-ai/react

**The SDK hashes personal data for attribution.** The SDK now hashes email addresses and phone numbers in the client (normalized, then SHA-256) before it sends them. The SDK also forwards the pixel `gruid`, so Gravity can attribute conversions. The raw values do not leave the client.

You do not have to change your integration. This change lets more conversions match on the advertiser side.

**1.1.5**

February 22, 2026 · @gravity-ai/api + @gravity-ai/react

**Tests of ad designs.** The SDK and the engine can now test different ad designs for each request. A design is the set of fields that the server sends and the layout that the client shows. The Gravity team controls these tests.

With this change, Gravity can test design variants (for example, different CTA text, or a card compared to a pill layout) and you do not have to deploy new code. For more information, see [Experiments](https://docs.trygravity.com/ai-platforms/experiments.md).

**1.1.0 to 1.1.4**

January 2026

These versions contain bug fixes and small improvements:

* Fixed a hardcoded `status: 200` in the `gravityAds` success path.
* Fixed the `setAd` hover cleanup and the order of the spread props in `gravityContext`.
* Fixed a URL injection problem on Windows, and a bug where a timeout of `0` was read as false.
* `openUrl` now ignores `execFile` errors, so that the host app does not crash.
* Deprecated the legacy `Client` and `AdParams` API. Use `Gravity` and `gravityContext` instead.

If you use `1.1.0` or later, you have these fixes. If you use `1.0.x`, upgrade when you can. None of these fixes is a security fix.

**1.0.x (Jan 2026) and earlier**

Pre-January 2026

The history before `1.1.x` is on npm: [`@gravity-ai/api` versions](https://www.npmjs.com/package/@gravity-ai/api?activeTab=versions) · [`@gravity-ai/react` versions](https://www.npmjs.com/package/@gravity-ai/react?activeTab=versions). The versions `0.0.x → 0.1.x → 1.0.0` added the first public API, the ad card, the impression logic, the publisher playground, and the first `@gravity-ai/react` templates. If you use a version in this range, upgrade directly to `latest`.

## How versions ship

* Each package (`@gravity-ai/api`, `@gravity-ai/react`, `@gravity-ai/ui`, `@gravity-ai/react-native`) has its own version number. Most platforms need `@gravity-ai/api` on the server. `@gravity-ai/react` adds ready-made React components.
* The `latest` tag on npm always points to the newest stable release.
* Gravity serves the pixel (`gr-pix.js`) from `https://code.trygravity.com/gr-pix.js` and updates it in place. You do not select a pixel version. You always get the current build.

## Get help

* **Publisher integration help:** see the [Integration guide](https://docs.trygravity.com/ai-platforms/integration-guide.md).
* **Advertiser setup:** see the [Advertiser quickstart](https://docs.trygravity.com/advertisers/quickstart.md).
* **Anything else:** send an email to [support@trygravity.com](mailto:support@trygravity.com).
* **Experiments:** see [Experiments](https://docs.trygravity.com/ai-platforms/experiments.md).
* **Go-live checks:** see [Going live](https://docs.trygravity.com/ai-platforms/going-live.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.