---
title: "Version 2.5.0"
url: "https://cookiezest.com/changelog/v2.5.0/"
description: "Equal-prominence buttons via buttonStyle config, security hardening, and removed customStyles reject-button selector block"
---

[Home](/)/[Changelog](/changelog/)

# Version 2.5.0

June 29, 2026

`@freshjuice/zest@2.5.0` fixes a real compliance problem: the default banner made Reject All visually weaker than Accept All. Regulators (ICO, CNIL) consider this coerced consent. This release introduces a `buttonStyle` config so both buttons always share the same visual weight.

## Added

### `buttonStyle` config

Controls the visual style of **both** Accept and Reject buttons. Both buttons always use the same style — no more “Accept bright, Reject muted” dark pattern.

*   `'fill'` (default) — solid buttons, equal visual weight
*   `'outline'` — accent-colored border, transparent background

```
<script>
  window.ZestConfig = { buttonStyle: "outline" };
</script>
<script src="https://cdn.jsdelivr.net/npm/@freshjuice/zest@2.5.0"></script>
```

## Changed

### Equal prominence by default

The default `fill` style now gives Reject All a visible border (`1px solid var(--zest-border)`) instead of blending into the banner background. Both buttons are the same size, same padding, same weight.

### Removed `.zest-btn--secondary` selector block in customStyles sanitizer

Previously, `customStyles` could not style the Reject button at all — the sanitizer stripped any `.zest-btn--secondary` rule. This was overly aggressive and prevented legitimate customization. The selector block is no longer stripped; `[data-action="reject-all"]` and `[data-action="accept-all"]` attribute selectors are still blocked to prevent hiding buttons.

## Install

```
npm install @freshjuice/zest
```

Or via CDN:

```
<script src="https://cdn.jsdelivr.net/npm/@freshjuice/zest@2.5.0"></script>
```

[OlderVersion 2.4.2](/changelog/v2.4.2/)[NewerVersion 2.5.1](/changelog/v2.5.1/)