icanhazstring/composer-unused
Show unused packages by scanning your code
0.9.6
8.6M downloads/mo
#1094 most downloaded on Packagist
composer-unused/composer-unused
What this package is like to depend on
Last release 6 months ago
30 Jan 2026
Release timing varies
gaps range from 2 weeks to 1.3 years
Most releases are documented
notes for 42 of 48 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
49 releases · first in 2019
2 releases in the last 12 months
see the full history below
Release timeline
49 releases · Mar 2019 to Jan 2026Releases
latest 49-
0.9.630 Jan 2026Release notes
Open source →What's Changed
- github-actions(deps): bump the dependencies group across 1 directory with 3 updates by @dependabot[bot] in #700
- Add realpath for
SymfonyConfigurationSetby @ToshY in #702 - composer(deps-dev): bump the dependencies group with 2 updates by @dependabot[bot] in #703
- composer(deps-dev): bump the dependencies group across 1 directory with 2 updates by @dependabot[bot] in #707
- composer(deps-dev): bump the dependencies group across 1 directory with 4 updates by @dependabot[bot] in #712
- Add support for webmozart/assert 2.0 by @OskarStark in #723
- composer(deps-dev): bump the dependencies group across 1 directory with 4 updates by @dependabot[bot] in #726
- build(deps-dev): bump symfony/process from 5.4.47 to 5.4.51 in /vendor-bin/box by @dependabot[bot] in #725
- build(deps-dev): bump paragonie/sodium_compat from 1.21.1 to 1.24.0 in /vendor-bin/box by @dependabot[bot] in #715
- Use major version tag for
shivammathur/setup-phpaction by @OskarStark in #727 - github-actions(deps): bump the dependencies group across 1 directory with 3 updates by @dependabot[bot] in #728
- Symfony 8 support by @dmitryuk in #729
- chore: Drop composer.lock by @icanhazstring in #730
- Up CI php 8.5 by @dmitryuk in #720
New Contributors
Full Changelog: 0.9.5...0.9.6
Release notes
Open source →c60030a
What's Changed
-
github-actions(deps): bump the dependencies group across 1 directory with 3 updates by @dependabot [bot] in #700
-
Add realpath for SymfonyConfigurationSet by @ToshY in #702
-
composer(deps-dev): bump the dependencies group with 2 updates by @dependabot [bot] in #703
-
composer(deps-dev): bump the dependencies group across 1 directory with 2 updates by @dependabot [bot] in #707
-
composer(deps-dev): bump the dependencies group across 1 directory with 4 updates by @dependabot [bot] in #712
-
Add support for webmozart/assert 2.0 by @OskarStark in #723
-
composer(deps-dev): bump the dependencies group across 1 directory with 4 updates by @dependabot [bot] in #726
-
build(deps-dev): bump symfony/process from 5.4.47 to 5.4.51 in /vendor-bin/box by @dependabot [bot] in #725
-
build(deps-dev): bump paragonie/sodium_compat from 1.21.1 to 1.24.0 in /vendor-bin/box by @dependabot [bot] in #715
-
Use major version tag for shivammathur/setup-php action by @OskarStark in #727
-
github-actions(deps): bump the dependencies group across 1 directory with 3 updates by @dependabot [bot] in #728
-
Symfony 8 support by @dmitryuk in #729
-
chore: Drop composer.lock by @icanhazstring in #730
-
Up CI php 8.5 by @dmitryuk in #720
New Contributors
- @ToshY made their first contribution in #702
Full Changelog : 0.9.5...0.9.6
Contributors
dmitryuk, icanhazstring, and 3 other contributors
-
0.9.522 Sep 2025Release notes
Open source →What's Changed
- chore: Use 8.1 for build and phar validation by @icanhazstring in #699
Full Changelog: 0.9.4...0.9.5
-
0.9.429 Jul 2025Release notes
Open source →What's Changed
- Remove extra dev files from vendor by @dmitryuk in #690
- feat: add ConfigurationSet system for framework-specific scanning by @icanhazstring in #691
- fix: automatically disable XDebug to prevent segmentation faults by @icanhazstring in #692
New Contributors
- @blacksmith-sh[bot] made their first contribution in #686
- @dmitryuk made their first contribution in #690
Full Changelog: 0.9.3...0.9.4
Release notes
Open source →Added
- ConfigurationSet system for framework-specific scanning by @dmitryuk in https://github.com/composer-unused/composer-unused/pull/691
Fixed
- Automatically disable XDebug to prevent segmentation faults by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/692
Changed
Removed
- Extra dev files from vendor by @dmitryuk in https://github.com/composer-unused/composer-unused/pull/690
Security
Deprecation
-
0.9.310 Apr 2025Release notes
Open source →What's Changed
- github-actions(deps): bump shivammathur/setup-php from 2.30.0 to 2.32.0 in the dependencies group by @dependabot in #676
- chore: Require new symbol-parser version by @icanhazstring in #678
- chore: Update phpstan dependencies by @icanhazstring in #679
- chore: Update symbol-parser to solve php8.4 issue by @icanhazstring in #682
- Issue_#607: set unused command as default while not other commands ar… by @MarcinGladkowski in #608
- feat: Only run phar signature check on main repository PRs by @icanhazstring in #684
- Add a compact formatter by @gisostallenberg in #683
New Contributors
- @gisostallenberg made their first contribution in #683
Full Changelog: 0.9.2...0.9.3
Release notes
Open source →Added
- Compact formatter by @gisostallenberg in https://github.com/composer-unused/composer-unused/pull/683
- Set unused command as default when no other commands are specified by @MarcinGladkowski in https://github.com/composer-unused/composer-unused/pull/608
Fixed
Changed
- Updated symbol-parser to resolve PHP 8.4 compatibility by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/678
- Updated PHPStan dependencies by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/679
- Limited PHAR signature check to main repository PRs by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/684
Removed
Security
Deprecation
-
0.9.216 Mar 2025Release notes
Open source →What's Changed
- feat: Allow
__root__as default package name by @icanhazstring in #671 - feat: Combine action status by @icanhazstring in #672
- fix: Add tests to cover extensions marked unused by @icanhazstring in #673
- fix: Resolve issue with memcached marked unused by @icanhazstring in #674
- chore: Drop symfony 5 support by @icanhazstring in #675
Full Changelog: 0.9.1...0.9.2
Release notes
Open source →Added
- Allow
__root__as default package name by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/671
Fixed
- Added tests to cover extensions marked unused by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/673
- Resolved issue with memcached marked unused by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/674
Changed
- Combined action status by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/672
Removed
- Dropped support for Symfony 5 by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/675
Security
Deprecation
- feat: Allow
-
0.9.115 Mar 2025Release notes
Open source →What's Changed
- Add support for phpstan/phpdoc-parser v2 by @WyriHaximus in #670
Full Changelog: 0.9.0...0.9.1
Release notes
Open source →Added
- Support for phpstan/phpdoc-parser v2 by @WyriHaximus in https://github.com/composer-unused/composer-unused/pull/670
Fixed
Changed
Removed
Security
Deprecation
-
0.9.011 Mar 2025Release notes
Open source →What's Changed
- chore(deps): require composer-unused/symbol-parser v0.2.2 by @simPod in #605
- Sort results of
debug:provided-symbolscommand by @llaville in #626 - Display package processing on right side of progress bar (in verbose mode) by @llaville in #632
- Add support to PHP-Parser v5 by @llaville in #628
- Drop Symfony 4 support by @llaville in #634
- Add --output-file option to directly write formatted result output to… by @temp in #629
- Update to PHP 8.4 by @bobvandevijver in #668
New Contributors
- @temp made their first contribution in #629
- @bobvandevijver made their first contribution in #668
Full Changelog: 0.8.11...0.9.0
Release notes
Open source →Added
- "--output-file" option to write formatted result output directly by @temp in https://github.com/composer-unused/composer-unused/pull/629
- Support for PHP-Parser v5 by @llaville in https://github.com/composer-unused/composer-unused/pull/628
- Update to PHP 8.4 compatibility by @bobvandevijver in https://github.com/composer-unused/composer-unused/pull/668
Fixed
Changed
- Dropped Symfony 4 support by @llaville in https://github.com/composer-unused/composer-unused/pull/634
- Sort results of
debug:provided-symbolscommand by @llaville in https://github.com/composer-unused/composer-unused/pull/626 - Display package processing on right side of progress bar in verbose mode by @llaville in https://github.com/composer-unused/composer-unused/pull/632
- Require composer-unused/symbol-parser v0.2.2 by @simPod in https://github.com/composer-unused/composer-unused/pull/605
Removed
Security
Deprecation
-
0.8.1130 Nov 2023Release notes
Open source →Features/Improvements 💡
- Improve user experience when adding additional files by @icanhazstring in #552
- Add ability to automatically determine version by @icanhazstring in #554
- Add symfony 7 support by @VincentLanglet in #590
- Add matrix check for php8.3 by @icanhazstring in #598
- Check gpg key to test phar validation by @icanhazstring in #599
Fixes 🐛
- Fix dependabot configuration issues by @icanhazstring in #553
- Fix Undefined array key "composer/composer" by @MarcinGladkowski in #561
- Fix
$name must not be accessed before initializationby @MarcinGladkowski in #562
New Contributors
- @VincentLanglet made their first contribution in #590
Full Changelog: 0.8.10...0.8.11
Release notes
Open source →Added
- Ability to automatically determine version by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/554
- Symfony 7 support by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/590
- Matrix check for PHP 8.3 by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/598
- GPG key test for PHAR validation by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/599
Fixed
- Dependabot configuration issues by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/553
- "Undefined array key 'composer/composer'" by @VincentLanglet in https://github.com/composer-unused/composer-unused/pull/561
- "
$name must not be accessed before initialization" by @VincentLanglet in https://github.com/composer-unused/composer-unused/pull/562
Changed
- Enhanced user experience for adding additional files by @MarcinGladkowski in https://github.com/composer-unused/composer-unused/pull/552
Removed
Security
Deprecation
-
0.8.1006 Jul 2023Release notes
Open source →Features 💡
- Improve user experience when running composer-unused with composer v1 by @MarcinGladkowski in #539
Fixes 🐛
- Clear ProgressBar output to avoid log cluttering #541 related to discussion #540 by @llaville in #542
Full Changelog: 0.8.9...0.8.10
Release notes
Open source →Added
Fixed
- Clear ProgressBar output to avoid log cluttering by @llaville in https://github.com/composer-unused/composer-unused/pull/542
- Improved user experience when running with Composer v1 by @MarcinGladkowski in https://github.com/composer-unused/composer-unused/pull/539
Changed
Removed
Security
Deprecation
-
0.8.929 May 2023Release notes
Open source →Features 💡
- Add ability to define source/vendor dir outside composer.json by @MarcinGladkowski in #522
Fixes 🐛
- PHP Fatal error on running projects with local composer packages by @MarcinGladkowski in #520
Full Changelog: 0.8.8...0.8.9
Release notes
Open source →Added
- Ability to define source/vendor directory outside composer.json by @MarcinGladkowski in https://github.com/composer-unused/composer-unused/pull/522
Fixed
- PHP Fatal error when running projects with local composer packages by @MarcinGladkowski in https://github.com/composer-unused/composer-unused/pull/520
Changed
Removed
Security
Deprecation
-
0.8.812 May 2023Release notes
Open source →Added
- Debug commands to view consumed and defined symbols by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/463
- Composer-json option for debugging by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/464
- Hyperlink to default formatter by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/468
- GitLab output formatter by @llaville in https://github.com/composer-unused/composer-unused/pull/475
Fixed
- Make composer-json an option, not argument by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/466
- Remove root namespace filter to avoid subpackage filtering by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/465
- Avoid marking packages used by unused suggestions by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/471
Changed
- Pass NameResolver to SymbolNameParser by @eliashaeussler in https://github.com/composer-unused/composer-unused/pull/460
Removed
Security
Deprecation
-
0.8.715 Mar 2023Release notes
Open source →Added
Fixed
- Use correct version in CLI by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/453
- Avoid exception on missing directory by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/454
- fix junit formatter by @reinfi in https://github.com/composer-unused/composer-unused/pull/456
- JUnit Formatter - fix issue #457 by @reinfi in https://github.com/composer-unused/composer-unused/pull/458
- Avoid github pr info on ignored packages by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/459
Changed
Removed
Security
Deprecation
-
0.8.610 Mar 2023Release notes
Open source →Added
- Junit formatter by @reinfi in https://github.com/composer-unused/composer-unused/pull/440
- Add "static analysis" tag by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/447
Fixed
- fix: reimplement excludeDir by @simPod in https://github.com/composer-unused/composer-unused/pull/431
- do not add empty test cases to junit xml by @reinfi in https://github.com/composer-unused/composer-unused/pull/446
Changed
Removed
Security
Deprecation
-
0.8.502 Dec 2022Release notes
Open source →Added
- Readd progress bar by @MarcinGladkowski in https://github.com/composer-unused/composer-unused/pull/427
Fixed
- Marking required package as used by "required-by" even if other package is unused by @MarcinGladkowski in https://github.com/composer-unused/composer-unused/pull/424
- Update PatternFilter example in README by @mvhirsch in https://github.com/composer-unused/composer-unused/pull/416
- Explicitly require symfony/property-access by @eliashaeussler in https://github.com/composer-unused/composer-unused/pull/428
- Resolve issue with suggest-by feature by @eliashaeussler in https://github.com/composer-unused/composer-unused/pull/428
Changed
Removed
Security
Deprecation
-
0.8.413 Oct 2022Release notes
Open source →Added
- Add JsonFormatter with test by @TomasVotruba in https://github.com/composer-unused/composer-unused/pull/398
- Add testcase for readonly class (#369) by @pascalheidmann in https://github.com/composer-unused/composer-unused/pull/402
- Don't report packages unused in annotations by @LeoVie in https://github.com/composer-unused/composer-unused/pull/404
Fixed
- override exit code with "0" if option
--ignore-exit-codeis used by @pascalheidmann in https://github.com/composer-unused/composer-unused/pull/396 - Empty PSR4 namespace by @yoanmLf in https://github.com/composer-unused/composer-unused/pull/405
Changed
- Prepare php 8.2 support by @pascalheidmann in https://github.com/composer-unused/composer-unused/pull/403
Removed
Security
Deprecation
-
0.8.330 Sep 2022Release notes
Open source →Added
Fixed
- Keep the PatternFilter in used state by @nicklog in https://github.com/composer-unused/composer-unused/pull/353
- Wire up custom configuration file location support by @WyriHaximus in https://github.com/composer-unused/composer-unused/pull/354
- Fix typo in CONTRIBUTING.md by @Jean85 in https://github.com/composer-unused/composer-unused/pull/359
- Fix Symfony 4 support by @Jean85 in https://github.com/composer-unused/composer-unused/pull/360
- Mark new "composer" platform requirement as globally excluded. (Fixes: #381) by @AndreasA in https://github.com/composer-unused/composer-unused/pull/389
- Lexer version detector patch by @georgeconstantinou in https://github.com/composer-unused/composer-unused/pull/392
Changed
- Add missing use statement by @OskarStark in https://github.com/composer-unused/composer-unused/pull/374
Removed
Security
Deprecation
-
0.8.222 Mar 2022Release notes
Open source →Added
Fixed
- Avoid strpos comparison for php package by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/318
- Resolve #328: Fix issue where output format could not be forced by cli by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/334
- Expose Symfony\Polyfill to be able to run phar with php7.4 by @icanhazstring in https://github.com/composer-unused/composer-unused/pull/339
Changed
- Make Required Dependencies faster by @scyzoryck in https://github.com/composer-unused/composer-unused/pull/322
- Split independent loops during looking for used packages by @scyzoryck in https://github.com/composer-unused/composer-unused/pull/324
Removed
Security
Deprecation
-
0.8.115 Feb 2022Release notes
Open source →Added
- Add
--output-formatoption- Current supported values:
defaultandgithub githubcan be used to annotate PR
- Current supported values:
- Add
CiDetectorto change output format according to the current ci environment - Add
symfony/dependency-injectionto leverage autowiring - Add dedicated configuration (
composer-unused.php)
Fixed
- Fix
Lexer\Emulativeto use the current php version instead of latest one - Removed
is_dir()check fromLocalRepositoryto avoid crashingfile_get_contents - Fix phar build using the latest
box-project/boxversion - Fix error if
composer.jsondoes not exist in given path - Fix issue where
Filterwas marked as unused again after being already used - Fix ignore/invalid dependencies showing up in
Ignoredsection again
Changed
- Change the information about ignored dependencies
- Raised minimum requirement for
composer-unused/symbol-parserto0.1.7
Removed
- Removed custom implementation of DI
Security
Deprecation
- Add
-
0.8.025 Jan 2022Release notes
Open source →Fixed
- Fixed version output when running
bin/composer-unused --version
Added
- Added CLI argument
composer-jsonwhich can be used to parse external projects. This will default to the current working directory. - Added error message when
composer.jsonis not readable - Added check for zombie exclusion. It will report if any excluded packages or pattern did match any package
Changed
- Change
bin/composer-unusedto be used as standalone binary - Package type is now
libraryinstead ofcomposer-plugin
Removed
- Removed ability to work as
composer-plugin(will be supported usingcomposer-unused/composer-unused-plugin) - Dropped support for php
7.3
- Fixed version output when running
-
0.8.0-RC105 Jan 2022 pre-releaseNothing published for this version
-
0.7.1229 Dec 2021Nothing published for this version
-
0.7.1122 Dec 2021Nothing published for this version
-
0.7.1016 Dec 2021Nothing published for this version
-
0.7.914 Dec 2021Nothing published for this version
-
0.7.824 Nov 2021Nothing published for this version
-
0.7.726 Jul 2021 -
0.7.615 Jul 2021 -
0.7.528 Oct 2020Release notes
Open source →Added
- Added an
InstanceofStrategywhich detects usages ininstanceofexpressions #100
- Added an
-
0.7.415 Sep 2020 -
0.7.321 May 2020Release notes
Open source →Added
- Added workflow to verify integrity of build
pharfile - Added self unused dependency check using
bin/composer-unused
Changed
- Readded
composer/composerinto root requirements as its required to runbin/composer-unused
Fixed
- Fixed an issue where log level received wrong type #83 (thanks to @JoshuaBehrens)
- Added workflow to verify integrity of build
-
0.7.218 May 2020Release notes
Open source →Added
- Added
phpspec/prophecy-phpunitto remove deprecations warnings ofprophecy()withphpunit/phpunit:^9.0 - Added support for composer 2.0
Changed
- Changed the exit code
0if there are not packages to scan #78
Fixed
- Fixed an issue where
Coreextension was checked asext-coreinstead ofphp#79
- Added
-
0.7.109 Dec 2019Release notes
Open source →Added
- Added
--no-progressto suppress progress bar for CI
Fixed
- Fixed
bin/composer-unusedwas unable to detectvendor/autoload.phpwhen run as direct depdendency
- Added
-
0.7.001 Dec 2019Release notes
Open source →Added
- Added scoped
pharsupport - Added
bin/composer-unusedas another entry point
Changed
- Moved
composer/composerinto root requirements as its needed to runbin/composer-unused
- Added scoped
-
0.6.231 Oct 2019Release notes
Open source →Added
- Added support to scan for unused php extensions #33 thanks to @marcelthole
-
0.6.124 Oct 2019Release notes
Open source →Fixed
- Fixed replaced usage on
Zend\ServiceManagerin configuration files
Removed
- Removed shorthand options
-dand-pas they could be already in use
- Fixed replaced usage on
-
0.6.024 Oct 2019Release notes
Open source →Changed
- Added custom
psr/container-interfaceimplementation as a replacement forzendframework/zend-servicemanager - Inverted the validation of valid Composer package types (no longer a whitelist, but rather a blacklist of invalid types)
Fixed
- Fixed issue with short option for cli parameter (
--excludeDir|-dand--excludePackage|-p)
- Added custom
-
0.5.630 Apr 2019 -
0.5.512 Apr 2019 -
0.5.411 Apr 2019Release notes
Open source →Fixed
- Fixed issue where composer-unused-dump was created even when not in debug mode #41
- Fixed issue where exit code was greater 0 on skipped packages, while it should be on unused packages #42 Thanks to @binarious
-
0.5.311 Apr 2019Release notes
Open source →Fixed
- Fixed issue where qualified namespaces where not recognized when called from global namespace
- This caused some false-positives (e.g. for symfony-bundles)
- Fixed issue where qualified namespaces where not recognized when called from global namespace
-
0.5.211 Apr 2019 -
0.5.129 Mar 2019Release notes
Open source →Fixed
-
Fixed an issue where a package could provide an empty as well as a valid namespace
{ "autoload": { "psr-4": { "": "src/", "A\\": "src/" } } }
-
-
0.5.029 Mar 2019Release notes
Open source →Changed
- The plugin will exit with a code > 0 if there are unused packages
- Temporary solution to "silent" ignore ext- packages (might be changed in the future #33)
Added
- Cli parameter to exit clean (even with unused packages) --ignore-exit-code
-
0.4.028 Mar 2019Release notes
Open source →Fixed
- Fixed an issue where class constant
Namespace\Foobar::classwas not recognized as usage #29 - Fixed an issue where an empty namespace caused an exception #27
Added
- Ignore packages that are not of type
library#25 composer-schema#type - Ignore packages that define not namespace #27
- Add ability to ignore packages by config #26 README.md
- Packages are no longer shown as
unusedif:
[0.3.1] - 2019-03-26
Fixed
- Improve error handling
- Fixed an issue where class constant
-
0.3.126 Mar 2019Nothing published for this version
-
0.3.026 Mar 2019Release notes
Open source →Fixed
- Fixed an issue where only
autoload-devprovided a needed namespace
Changed
-
Change the way how the plugin searched for usages Previously it used only
autoloadandautoload-devdirectives of the projects owncomposer.json.This was changed so that now every file matching
*.phpbeside thecomposer.jsonwill be scanned. With the exception thatvendoris always excluded
Added
- Added new cli parameters
--excludeDir|-xdto add additional folders to exclude from scan--excludePackage|-xpto add a package to ignore during scan
- Added Di Container for easier development and testing
- Fixed an issue where only
-
0.2.025 Mar 2019Release notes
Open source →Fixed
- Fixed issue where static calls raised an exception
Added
- Added error handler for debug usage
- Use
-vvvto enable debug mode and create a dump file
- Use
Improved:
- Added full integration test with composer test project
-
0.1.125 Mar 2019 -
0.1.023 Mar 2019