react/dns
Async DNS resolver for ReactPHP
v1.14.0
146M downloads/mo
#171 most downloaded on composer
reactphp/dns
What this package is like to depend on
Last release 9 months ago
18 Nov 2025
Ships fairly regularly
a new release about every 6 months
Nearly every release is documented
notes for 44 of 44 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
44 releases · first in 2012
1 release in the last 12 months
see the full history below
Release timeline
44 releases · Sep 2012 to Nov 2025Releases
latest 44-
v1.14.018 Nov 2025Release notes
Open source →-
Feature: Improve PHP 8.5+ support by avoiding deprecated
setAccessible()calls.
(#238 by @W0rma and #243 by @WyriHaximus) -
Improve test suite, update test environment and increase query count in excessive TCP query tests.
(#239 and #240 by @WyriHaximus)
-
-
v1.13.013 Jun 2024Release notes
Open source →- Feature: Improve PHP 8.4+ support by avoiding implicitly nullable type declarations.
(#224 by @WyriHaximus)
- Feature: Improve PHP 8.4+ support by avoiding implicitly nullable type declarations.
-
v1.12.029 Nov 2023Release notes
Open source →-
Feature: Full PHP 8.3 compatibility. (#217 by @sergiy-petrov)
-
Update test environment and avoid unhandled promise rejections. (#215, #216 and #218 by @clue)
-
-
v1.11.002 Jun 2023Release notes
Open source →-
Feature: Include timeout logic to avoid dependency on reactphp/promise-timer.
(#213 by @clue) -
Improve test suite and project setup and report failed assertions.
(#210 by @clue, #212 by @WyriHaximus and #209 and #211 by @SimonFrings)
Release notes
Open source →-
Feature: Include timeout logic to avoid dependency on reactphp/promise-timer. (#213 by @clue)
-
Improve test suite and project setup and report failed assertions. (#210 by @clue, #212 by @WyriHaximus and #209 and #211 by @SimonFrings)
-
-
v1.10.008 Sep 2022Release notes
Open source →-
Feature: Full support for PHP 8.2 release.
(#201 by @clue and #207 by @WyriHaximus) -
Feature: Optimize forward compatibility with Promise v3, avoid hitting autoloader.
(#202 by @clue) -
Feature / Fix: Improve error reporting when custom error handler is used.
(#197 by @clue) -
Fix: Fix invalid references in exception stack trace.
(#191 by @clue) -
Minor documentation improvements.
(#195 by @SimonFrings and #203 by @nhedger) -
Improve test suite, update to use default loop and new reactphp/async package.
(#204, #205 and #206 by @clue and #196 by @SimonFrings)
Release notes
Open source →-
Feature: Full support for PHP 8.2 release. (#201 by @clue and #207 by @WyriHaximus)
-
Feature: Optimize forward compatibility with Promise v3, avoid hitting autoloader. (#202 by @clue)
-
Feature / Fix: Improve error reporting when custom error handler is used. (#197 by @clue)
-
Fix: Fix invalid references in exception stack trace. (#191 by @clue)
-
Minor documentation improvements. (#195 by @SimonFrings and #203 by @nhedger)
-
Improve test suite, update to use default loop and new reactphp/async package. (#204, #205 and #206 by @clue and #196 by @SimonFrings)
-
-
v1.9.020 Dec 2021Release notes
Open source →-
Feature: Full support for PHP 8.1 release and prepare PHP 8.2 compatibility
by refactoringParserto avoid assigning dynamic properties.
(#188 and #186 by @clue and #184 by @SimonFrings) -
Feature / Fix: Skip invalid nameserver entries from
resolv.confand ignore IPv6 zone IDs.
(#187 by @clue) -
Feature / Fix: Reduce socket read chunk size for queries over TCP/IP.
(#189 by @clue)
Release notes
Open source →-
Feature: Full support for PHP 8.1 release and prepare PHP 8.2 compatibility by refactoring
Parserto avoid assigning dynamic properties. (#188 and #186 by @clue and #184 by @SimonFrings) -
Feature: Avoid dependency on
ext-filter. (#185 by @clue) -
Feature / Fix: Skip invalid nameserver entries from
resolv.confand ignore IPv6 zone IDs. (#187 by @clue) -
Feature / Fix: Reduce socket read chunk size for queries over TCP/IP. (#189 by @clue)
-
-
v1.8.011 Jul 2021Release notes
Open source →A major new feature release, see release announcement.
-
Feature: Simplify usage by supporting new default loop.
(#182 by @clue)// old (still supported) $factory = new React\Dns\Resolver\Factory(); $resolver = $factory->create($config, $loop); // new (using default loop) $factory = new React\Dns\Resolver\Factory(); $resolver = $factory->create($config);
Release notes
Open source →A major new feature release, see release announcement.
-
Feature: Simplify usage by supporting new default loop. (#182 by @clue)
// old (still supported) $factory = new React\Dns\Resolver\Factory(); $resolver = $factory->create($config, $loop); // new (using default loop) $factory = new React\Dns\Resolver\Factory(); $resolver = $factory->create($config);
-
-
v1.7.025 Jun 2021Release notes
Open source →-
Feature: Update DNS
Factoryto accept completeConfigobject.
Add newFallbackExecutorand use fallback DNS servers whenConfiglists multiple servers.
(#179 and #180 by @clue)// old (still supported) $config = React\Dns\Config\Config::loadSystemConfigBlocking(); $server = $config->nameservers ? reset($config->nameservers) : '8.8.8.8'; $resolver = $factory->create($server, $loop); // new $config = React\Dns\Config\Config::loadSystemConfigBlocking(); if (!$config->nameservers) { $config->nameservers[] = '8.8.8.8'; } $resolver = $factory->create($config, $loop);
Release notes
Open source →-
Feature: Update DNS
Factoryto accept completeConfigobject. Add newFallbackExecutorand use fallback DNS servers whenConfiglists multiple servers. (#179 and #180 by @clue)// old (still supported) $config = React\Dns\Config\Config::loadSystemConfigBlocking(); $server = $config->nameservers ? reset($config->nameservers) : '8.8.8.8'; $resolver = $factory->create($server, $loop); // new $config = React\Dns\Config\Config::loadSystemConfigBlocking(); if (!$config->nameservers) { $config->nameservers[] = '8.8.8.8'; } $resolver = $factory->create($config, $loop);
-
-
v1.6.021 Jun 2021Release notes
Open source →-
Feature: Add support for legacy
SPFrecord type. (#178 by @akondas and @clue) -
Fix: Fix integer overflow for TCP/IP chunk size on 32 bit platforms. (#177 by @clue)
-
-
v1.5.005 Mar 2021Release notes
Open source →-
Feature: Improve error reporting when query fails, include domain and query type and DNS server address where applicable.
(#174 by @clue) -
Feature: Improve error handling when sending data to DNS server fails (macOS).
(#171 and #172 by @clue) -
Fix: Improve DNS response parser to limit recursion for compressed labels.
(#169 by @clue) -
Improve test suite, use GitHub actions for continuous integration (CI).
(#170 by @SimonFrings)
Release notes
Open source →-
Feature: Improve error reporting when query fails, include domain and query type and DNS server address where applicable. (#174 by @clue)
-
Feature: Improve error handling when sending data to DNS server fails (macOS). (#171 and #172 by @clue)
-
Fix: Improve DNS response parser to limit recursion for compressed labels. (#169 by @clue)
-
Improve test suite, use GitHub actions for continuous integration (CI). (#170 by @SimonFrings)
-
-
v1.4.018 Sep 2020Release notes
Open source →-
Feature: Support upcoming PHP 8. (#168 by @clue)
-
Improve test suite and update to PHPUnit 9.3. (#164 by @clue, #165 and #166 by @SimonFrings and #167 by @WyriHaximus)
-
-
v1.3.010 Jul 2020Release notes
Open source →-
Feature: Forward compatibility with react/promise v3. (#153 by @WyriHaximus)
-
Feature: Support parsing
OPTrecords (EDNS0). (#157 by @clue) -
Fix: Avoid PHP warnings due to lack of args in exception trace on PHP 7.4. (#160 by @clue)
-
Improve test suite and add
.gitattributesto exclude dev files from exports. Run tests on PHPUnit 9 and PHP 7.4 and clean up test suite. (#154 by @reedy, #156 by @clue and #163 by @SimonFrings)
-
-
v1.2.015 Aug 2019Release notes
Open source →-
Feature: Add
TcpTransportExecutorto send DNS queries over TCP/IP connection, addSelectiveTransportExecutorto retry with TCP if UDP is truncated and automatically select transport protocol when no explicitudp://ortcp://scheme is given inFactory. (#145, #146, #147 and #148 by @clue) -
Feature: Support escaping literal dots and special characters in domain names. (#144 by @clue)
-
-
v1.1.018 Jul 2019Release notes
Open source →-
Feature: Support parsing
CAAandSSHFPrecords. (#141 and #142 by @clue) -
Feature: Add
ResolverInterfaceas common interface forResolverclass. (#139 by @clue) -
Fix: Add missing private property definitions and remove unneeded dependency on
react/stream. (#140 and #143 by @clue)
-
-
v1.0.011 Jul 2019Release notes
Open source →- First stable LTS release, now following SemVer. We'd like to emphasize that this component is production ready and battle-tested. We plan to support all long-term support (LTS) releases for at least 24 months, so you have a rock-solid foundation to build on top of.
This update involves a number of BC breaks due to dropped support for deprecated functionality and some internal API cleanup. We've tried hard to avoid BC breaks where possible and minimize impact otherwise. We expect that most consumers of this package will actually not be affected by any BC breaks, see below for more details:
-
BC break: Delete all deprecated APIs, use
Queryobjects forMessagequestions instead of nested arrays and increase code coverage to 100%. (#130 by @clue) -
BC break: Move
$nameserverfromExecutorInterfacetoUdpTransportExecutor, remove advanced/internalUdpTransportExecutorargs forParser/BinaryDumperand add API documentation forExecutorInterface. (#135, #137 and #138 by @clue) -
BC break: Replace
HeaderBagattributes with simpleMessageproperties. (#132 by @clue) -
BC break: Mark all
Recordattributes as required, add documentation vsQuery. (#136 by @clue) -
BC break: Mark all classes as final to discourage inheritance (#134 by @WyriHaximus)
-
v0.4.1910 Jul 2019Release notes
Open source →- Feature: Avoid garbage references when DNS resolution rejects on legacy PHP <= 5.6. (#133 by @clue)
-
v0.4.1809 Jul 2019Release notes
Open source →-
Feature / Fix: Implement
CachingExecutorusing cache TTL, deprecate oldCachedExecutor, respect TTL from response records when caching and do not cache truncated responses. (#129 by @clue) -
Feature: Limit cache size to 256 last responses by default. (#127 by @clue)
-
Feature: Cooperatively resolve hosts to avoid running same query concurrently. (#125 by @clue)
-
-
v0.4.1701 Apr 2019Release notes
Open source →-
Feature: Support parsing
authorityandadditionalrecords from DNS response. (#123 by @clue) -
Feature: Support dumping records as part of outgoing binary DNS message. (#124 by @clue)
-
Feature: Forward compatibility with upcoming Cache v0.6 and Cache v1.0 (#121 by @clue)
-
Improve test suite to add forward compatibility with PHPUnit 7, test against PHP 7.3 and use legacy PHPUnit 5 on legacy HHVM. (#122 by @clue)
-
-
v0.4.1611 Nov 2018Release notes
Open source →-
Feature: Improve promise cancellation for DNS lookup retries and clean up any garbage references. (#118 by @clue)
-
Fix: Reject parsing malformed DNS response messages such as incomplete DNS response messages, malformed record data or malformed compressed domain name labels. (#115 and #117 by @clue)
-
Fix: Fix interpretation of TTL as UINT32 with most significant bit unset. (#116 by @clue)
-
Fix: Fix caching advanced MX/SRV/TXT/SOA structures. (#112 by @clue)
-
-
v0.4.1502 Jul 2018Release notes
Open source →-
Feature: Add
resolveAll()method to support custom query types inResolver. (#110 by @clue and @WyriHaximus)$resolver->resolveAll('reactphp.org', Message::TYPE_AAAA)->then(function ($ips) { echo 'IPv6 addresses for reactphp.org ' . implode(', ', $ips) . PHP_EOL; }); -
Feature: Support parsing
NS,TXT,MX,SOAandSRVrecords. (#104, #105, #106, #107 and #108 by @clue) -
Feature: Add support for
Message::TYPE_ANYand parse unknown types as binary data. (#104 by @clue) -
Feature: Improve error messages for failed queries and improve documentation. (#109 by @clue)
-
Feature: Add reverse DNS lookup example. (#111 by @clue)
-
-
v0.4.1426 Jun 2018Release notes
Open source →-
Feature: Add
UdpTransportExecutor, validate incoming DNS response messages to avoid cache poisoning attacks and deprecate legacyExecutor. (#101 and #103 by @clue) -
Feature: Forward compatibility with Cache 0.5 (#102 by @clue)
-
Deprecate legacy
Query::$currentTimeand binary parser data attributes to clean up and simplify API. (#99 by @clue)
-
-
v0.4.1327 Feb 2018Release notes
Open source →-
Add
Config::loadSystemConfigBlocking()to load default system config and support parsing DNS config on all supported platforms (/etc/resolv.confon Unix/Linux/Mac and WMIC on Windows) (#92, #93, #94 and #95 by @clue)$config = Config::loadSystemConfigBlocking(); $server = $config->nameservers ? reset($config->nameservers) : '8.8.8.8'; -
Remove unneeded cyclic dependency on react/socket (#96 by @clue)
-
-
v0.4.1214 Jan 2018Release notes
Open source →- Improve test suite by adding forward compatibility with PHPUnit 6, test against PHP 7.2, fix forward compatibility with upcoming EventLoop releases, add test group to skip integration tests relying on internet connection and add minor documentation improvements. (#85 and #87 by @carusogabriel, #88 and #89 by @clue and #83 by @jsor)
-
v0.4.1125 Aug 2017Release notes
Open source →-
Feature: Support resolving from default hosts file (#75, #76 and #77 by @clue)
This means that resolving hosts such as
localhostwill now work as expected across all platforms with no changes required:$resolver->resolve('localhost')->then(function ($ip) { echo 'IP: ' . $ip; });The new
HostsExecutorexists for advanced usage and is otherwise used internally for this feature.
-
-
v0.4.1010 Aug 2017Release notes
Open source →-
Feature: Forward compatibility with EventLoop v1.0 and v0.5 and lock minimum dependencies and work around circular dependency for tests (#70 and #71 by @clue)
-
Fix: Work around DNS timeout issues for Windows users (#74 by @clue)
-
Documentation and examples for advanced usage (#66 by @WyriHaximus)
-
Remove broken TCP code, do not retry with invalid TCP query (#73 by @clue)
-
Improve test suite by fixing HHVM build for now again and ignore future HHVM build errors and lock Travis distro so new defaults will not break the build and fix failing tests for PHP 7.1 (#68 by @WyriHaximus and #69 and #72 by @clue)
-
-
v0.4.901 May 2017Release notes
Open source →- Feature: Forward compatibility with upcoming Socket v1.0 and v0.8 (#61 by @clue)
-
v0.4.816 Apr 2017Release notes
Open source →-
Feature: Add support for the AAAA record type to the protocol parser (#58 by @othillo)
-
Feature: Add support for the PTR record type to the protocol parser (#59 by @othillo)
-
-
v0.4.731 Mar 2017Release notes
Open source →- Feature: Forward compatibility with upcoming Socket v0.6 and v0.7 component (#57 by @clue)
-
v0.4.611 Mar 2017Release notes
Open source →-
Fix: Fix DNS timeout issues for Windows users and add forward compatibility with Stream v0.5 and upcoming v0.6 (#53 by @clue)
-
Improve test suite by adding PHPUnit to
require-dev(#54 by @clue)
-
-
v0.4.502 Mar 2017Release notes
Open source →-
Fix: Ensure we ignore the case of the answer (#51 by @WyriHaximus)
-
Feature: Add
TimeoutExecutorand simplify internal APIs to allow internal code re-use for upcoming versions. (#48 and #49 by @clue)
-
-
v0.4.413 Feb 2017Release notes
Open source →-
Fix: Fix handling connection and stream errors (#45 by @clue)
-
Feature: Add examples and forward compatibility with upcoming Socket v0.5 component (#46 and #47 by @clue)
-
-
v0.4.301 Aug 2016Release notes
Open source →-
Feature: Allow for cache adapter injection (#38 by @WyriHaximus)
$factory = new React\Dns\Resolver\Factory(); $cache = new MyCustomCacheInstance(); $resolver = $factory->createCached('8.8.8.8', $loop, $cache); -
Feature: Support Promise cancellation (#35 by @clue)
$promise = $resolver->resolve('reactphp.org'); $promise->cancel();
-
-
v0.4.224 Feb 2016Release notes
Open source →- Repository maintenance, split off from main repo, improve test suite and documentation
- First class support for PHP7 and HHVM (#34 by @clue)
- Adjust compatibility to 5.3 (#30 by @clue)
-
v0.4.112 Apr 2014 -
v0.4.002 Feb 2014Release notes
Open source →- BC break: Bump minimum PHP version to PHP 5.4, remove 5.3 specific hacks
- BC break: Update to React/Promise 2.0
- Bug fix: Properly resolve CNAME aliases
- Dependency: Autoloading and filesystem structure now PSR-4 instead of PSR-0
- Bump React dependencies to v0.4
-
v0.3.227 Apr 2013 -
v0.3.020 Jan 2013 -
v0.2.626 Dec 2012 -
v0.2.519 Nov 2012 -
v0.2.417 Nov 2012 -
v0.2.324 Oct 2012 -
v0.2.224 Oct 2012Release notes
Open source →- Feature: DNS executor timeout handling (@arnaud-lb)
- Feature: DNS retry executor (@arnaud-lb)
-
v0.2.124 Sep 2012 -
v0.2.010 Sep 2012