NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #4206 most downloaded on Packagist
ConfigCat is a feature flag, feature toggle, and configuration management service. That lets you launch new features and change your software configuration remotely without actually (re)deploying code. ConfigCat even helps you do controlled roll-outs like canary releases and blue-green deployments.
Last release 8 months ago
19 Jan 2026
Ships unpredictably
gaps range from 2 weeks to 1.7 years
Some releases are documented
notes for 10 of 37 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
37 releases · first in 2019
Changed Release for #57
Support for Guzzle v6 due to switching to PSR-18 ClientInterface , which is only supported in Guzzle v7 . #49
v6 due to switching to PSR-18 ClientInterface, which is only supported in Guzzle v7. #49One column per quarter.
In-memory cache layer to custom cache implementations.
When an error occurs and there is a related Throwable object, pass it to the onError hook handlers.
New features and improvements:
Throwable object, pass it to the onError hook handlers. (#46)forceRefresh fails and there is a related Throwable object, expose it in RefreshResult via the new getErrorException property.forceRefresh method (to stop potential unhandled exceptions thrown by the evaluation logic from bringing down the consumer's application).Breaking changes:
getError property to getErrorMessage in RefreshResult. (Low impact expected.)?Throwable to the onError hook handlers. (Low impact expected.)event_id in the log message but leave it up to the actual logger implementation to choose the log message format. (Affects consumers using custom logging only.)Breaking changes (listed in the order of expected impact):
New features and improvements:
Throwable object, expose it in EvaluationDetails via the new getErrorException property.Bug fixes:
Breaking changes (listed in the order of expected impact):
getError property to getErrorMessage in EvaluationDetails.getMatchedEvaluationRule property to getMatchedTargetingRule and the getMatchedEvaluationPercentageRule property to getMatchedPercentageOption in EvaluationDetails.ConfigCat\Attributes to the ConfigCat\ConfigJson namespace and update them to support config JSON schema v6.…configuration options have been marked as deprecated. Options for Guzzle are available through the \ConfigCat\Http\GuzzleFetchClient::create() method:
Ability to override the default Guzzle HTTP client with a custom one:
\ConfigCat\Http\FetchClientInterface to give the SDK a custom \Psr\Http\Client\ClientInterface implementation.
namespace ConfigCat\Http;
interface FetchClientInterface
{
public function getClient(): \Psr\Http\Client\ClientInterface;
public function createRequest(string $method, string $uri): \Psr\Http\Message\RequestInterface;
}\ConfigCat\ClientOptions::FETCH_CLIENT configuration option where the SDK accepts a custom \ConfigCat\Http\FetchClientInterface implementation. This option defaults to \ConfigCat\Http\GuzzleFetchClient.\ConfigCat\ClientOptions::REQUEST_OPTIONS and \ConfigCat\ClientOptions::CUSTOM_HANDLER configuration options have been marked as deprecated. Options for Guzzle are available through the \ConfigCat\Http\GuzzleFetchClient::create() method:
$client = new \ConfigCat\ConfigCatClient('<SDK-KEY>', [
\ConfigCat\ClientOptions::FETCH_CLIENT => \ConfigCat\Http\GuzzleFetchClient::create([
\GuzzleHttp\RequestOptions::CONNECT_TIMEOUT => 5,
]),
]);guzzlehttp/guzzle was not removed yet due to minor upgrade backward compatibility. It can be moved to suggest at the next major version bump.php-cs-fixer linter and phpstan static analyzer to the CI workflow. The whole project was reformatted and analyzed, this is why this PR is bigger than usual.
error_log(). It's still replaceable with any psr/log implementation.Standardized config cache key generation algorithm and cache payload format to allow shared caches to be used by SDKs of different platforms.
getFetchTimeUnixSeconds() getter of EvaluationDetails was renamed to getFetchTimeUnixMilliseconds() and now returns the fetch time in float Unix milliseconds.getVariationId() / getAllVariationIds() methods. Alternative: getValueDetails() / getAllValueDetails()Wrong return value of getValueDetails() if a non-existent flag was requested.
getValueDetails() if a non-existent flag was requested.The URL passed via the BASE-URL option was always overridden by the CDN URL from the downloaded config.json .
BASE-URL option was always overridden by the CDN URL from the downloaded config.json.Fixed monolog dependency version for #29
X-ConfigCat-UserAgent HTTP header.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →