Change record status: 
Introduced in branch: 
Introduced in version: 

UPDATE: Drupal 8.4.x now uses a minimum of Symfony 3.2.8:

All Symfony components in Drupal 8.4.x have been updated to 3.2.6.

The following API breaks have been identified and fixed in Drupal core (already deprecated when Symfony was updated to 2.8):

  • CSS selectors in tests: the usage of \Symfony\Component\CssSelector\CssSelector::toXPath() has been converted to new Symfony\Component\CssSelector\CssSelectorConverter())->toXPath()
  • The class Symfony\Component\DependencyInjection\ContainerAware has been removed and must be replaced with Symfony\Component\DependencyInjection\ContainerAwareTrait
  • File uploads: the $deep parameter on the ParameterBag::get() method on the Request object has been removed.
    $file_upload = $this->getRequest()->files->get('files[upload]', NULL, TRUE);


    $all_files = $this->getRequest()->files->get('files', []);
    $file_upload = $all_files['upload'];
  • \Symfony\Component\Validator\ExecutionContextInterface has been renamed to \Symfony\Component\Validator\Context\ExecutionContextInterface;
  • \Symfony\Component\Validator\ValidatorInterface has been renamed to \Symfony\Component\Validator\Validator\ValidatorInterface
  • The semantics of Request::get() have changed in Symfony 3. Request attributes are now examined first before request query parameters. The use of $request->get() is highly discouraged, use $request->query->get() instead if you need to access request query parameters.
  • \Symfony\Component\DependencyInjection\IntrospectableContainerInterface has been removed, use \Symfony\Component\DependencyInjection\ContainerInterface instead.

Complete symfony upgrade documents are available at

Site builders, administrators, editors
Module developers
Updates Done (doc team, etc.)
Online documentation: 
Not done
Theming guide: 
Not done
Module developer documentation: 
Not done
Examples project: 
Not done
Coder Review: 
Not done
Coder Upgrade: 
Not done
Other updates done