July 13, 2018 Javier Eguiluz

A few years ago, we introduced the Symfony Installer as the fastest way to create new Symfony projects. While Composer took up to several minutes to create a new project, Symfony Installer did the same in less than ten seconds.

The trick was that the installer downloaded a ZIP archive with all the dependencies required by the specific Symfony version you were installing, so it was not necessary that Composer resolved the project dependencies.

However, with the release of Symfony 4 we deprecated the Symfony Installer in favor of Composer, because we wanted to use standard development tools as much as possible. Sadly this made creating new Symfony projects slower and, in some cases, it triggered "out of memory" exceptions while Composer was resolving the dependencies.

Making installation via Composer faster¶ During the past months we've worked hard to improve the performance of Symfony Flex, the package used to create and manage Symfony apps. A few days ago, we made the two biggest improvements ever: The two skeletons used to create new Symfony projects, symfony/skeleton (for small apps, APIs, microservices, etc.) and symfony/website-skeleton (for traditional web applications) now include a composer.lock file to avoid Composer's dependency resolving (see symfony/skeleton #66 and symfony/web-skeleton #11). An automatic process ensures that those composer.lock files are updated whenever a dependency has a new version. Symfony Flex removes all the legacy Composer tags from all Symfony components before creating the project. This removes hundreds of unused tags and saves Composer hundreds of thousands of unnecessary checks.