configcat/configcat-client
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.
v9.2.1
1.3M downloads/mo
#3560 most downloaded on Packagist
configcat/php-sdk
What this package is like to depend on
Last release 7 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
1 release in the last 12 months
see the full history below
Release timeline
37 releases · Jan 2019 to Jan 2026Releases
latest 37-
v9.2.119 Jan 2026 -
v9.2.013 May 2024Release notes
Open source →Removed
- Support for Guzzle
v6due to switching to PSR-18ClientInterface, which is only supported in Guzzlev7. #49
- Support for Guzzle
-
v9.1.115 Apr 2024Release notes
Open source →Added
- In-memory cache layer to custom cache implementations.
- Coverage report upload to SonarCloud.
-
v9.1.025 Mar 2024Release notes
Open source →New features and improvements:
- When an error occurs and there is a related
Throwableobject, pass it to theonErrorhook handlers. (#46) - When
forceRefreshfails and there is a relatedThrowableobject, expose it inRefreshResultvia the newgetErrorExceptionproperty. - Handle unexpected errors in the
forceRefreshmethod (to stop potential unhandled exceptions thrown by the evaluation logic from bringing down the consumer's application).
Breaking changes:
- Rename the
getErrorproperty togetErrorMessageinRefreshResult. (Low impact expected.) - Add an extra parameter of type
?Throwableto theonErrorhook handlers. (Low impact expected.) - Don't include
event_idin the log message but leave it up to the actual logger implementation to choose the log message format. (Affects consumers using custom logging only.)
- When an error occurs and there is a related
-
v9.0.004 Mar 2024Release notes
Open source →New features and improvements:
- Add support for the new Config JSON v6 format: update the config model and implement new features in setting evaluation logic. (#44)
- Overhaul setting evaluation-related logging and make it consistent across SDKs.
- Improve consistency of config JSON deserialization error reporting.
- Add exception message and stack trace to the log format of the default logger.
- When evaluation fails and there is a related
Throwableobject, expose it inEvaluationDetailsvia the newgetErrorExceptionproperty. - Performance improvements to setting evaluation (building of evaluation log is expensive, so it is skipped when info level logging is turned off).
Bug fixes:
- Fix inconsistent logging of error 1000 in the case of flag overrides.
Breaking changes (listed in the order of expected impact):
- Rename the
getErrorproperty togetErrorMessageinEvaluationDetails. - Rename the
getMatchedEvaluationRuleproperty togetMatchedTargetingRuleand thegetMatchedEvaluationPercentageRuleproperty togetMatchedPercentageOptioninEvaluationDetails. - Move config JSON attribute descriptor classes from the
ConfigCat\Attributesto theConfigCat\ConfigJsonnamespace and update them to support config JSON schema v6.
-
v8.1.028 Sep 2023Release notes
Open source →Added
-
Ability to override the default Guzzle HTTP client with a custom one:
- The user has to implement the
\ConfigCat\Http\FetchClientInterfaceto give the SDK a custom\Psr\Http\Client\ClientInterfaceimplementation.namespace ConfigCat\Http; interface FetchClientInterface { public function getClient(): \Psr\Http\Client\ClientInterface; public function createRequest(string $method, string $uri): \Psr\Http\Message\RequestInterface; }
- There's a new
\ConfigCat\ClientOptions::FETCH_CLIENTconfiguration option where the SDK accepts a custom\ConfigCat\Http\FetchClientInterfaceimplementation. This option defaults to\ConfigCat\Http\GuzzleFetchClient. - The Guzzle specific
\ConfigCat\ClientOptions::REQUEST_OPTIONSand\ConfigCat\ClientOptions::CUSTOM_HANDLERconfiguration 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, ]), ]);
- The direct dependency to
guzzlehttp/guzzlewas not removed yet due to minor upgrade backward compatibility. It can be moved tosuggestat the next major version bump.
- The user has to implement the
-
php-cs-fixerlinter andphpstanstatic analyzer to the CI workflow. The whole project was reformatted and analyzed, this is why this PR is bigger than usual.
Removed
- Dependency to Monolog. It was replaced by a simple default logger that writes to
error_log(). It's still replaceable with anypsr/logimplementation.
-
-
v8.0.028 Aug 2023Release notes
Open source →Changed
- Standardized config cache key generation algorithm and cache payload format to allow shared caches to be used by SDKs of different platforms.
getFetchTimeUnixSeconds()getter ofEvaluationDetailswas renamed togetFetchTimeUnixMilliseconds()and now returns the fetch time infloatUnix milliseconds.
Removed
getVariationId()/getAllVariationIds()methods. Alternative:getValueDetails()/getAllValueDetails()
-
v7.1.120 Jun 2023Release notes
Open source →Fixed
- Wrong return value of
getValueDetails()if a non-existent flag was requested.
- Wrong return value of
-
v7.1.008 Jun 2023Release notes
Open source →Fixed
- The URL passed via the
BASE-URLoption was always overridden by the CDN URL from the downloadedconfig.json.
- The URL passed via the
-
v7.0.129 Mar 2023Release notes
Open source →- Fixed monolog dependency version for #29
- Fixed reported SDK version in
X-ConfigCat-UserAgentHTTP header.
-
v7.0.015 Mar 2023Nothing published for this version
-
v6.2.116 Nov 2022Nothing published for this version
-
v6.2.011 Nov 2022Nothing published for this version
-
v6.1.005 Aug 2022Nothing published for this version
-
v6.0.021 Mar 2022Nothing published for this version
-
v5.4.110 Mar 2022Nothing published for this version
-
v5.4.013 Jan 2022Nothing published for this version
-
v5.3.115 Jul 2021Nothing published for this version
-
v5.3.009 Jul 2021Nothing published for this version
-
v5.2.131 May 2021Nothing published for this version
-
v5.2.022 Jan 2021Nothing published for this version
-
v5.1.004 Dec 2020Nothing published for this version
-
v5.0.002 Oct 2020Nothing published for this version
-
v4.1.014 Aug 2020Nothing published for this version
-
v4.0.127 May 2020Nothing published for this version
-
v4.0.009 Apr 2020Nothing published for this version
-
v3.0.313 Mar 2020Nothing published for this version
-
v3.0.226 Feb 2020Nothing published for this version
-
v3.0.124 Feb 2020Nothing published for this version
-
v3.0.023 Feb 2020Nothing published for this version
-
v2.0.325 Jan 2020Nothing published for this version
-
v2.0.225 Dec 2019Nothing published for this version
-
v2.0.104 Dec 2019Nothing published for this version
-
v2.0.016 Nov 2019Nothing published for this version
-
v1.2.026 Jul 2019Nothing published for this version
-
v1.1.017 Jul 2019Nothing published for this version
-
1.0.008 Jan 2019Nothing published for this version