Is hook_init() still used? If it is not anymore used, how do I convert code implementing hook_init()? Looking on Drupal.org API, I noticed that hook_init() is not documented for Drupal 8. Looking at the change records, I found Bootstrap hooks no longer exist, which points to Get rid of all 'bootstrap' hooks, where the bootstrap hooks are said to be hook_boot() and hook_exit(); nothing is said about hook_init().

I searched for hook_init in Drupal 8 source, and I found the following code. The first one is a reference to hook_init() made in a comment; the other two seem a hook_init() implementation, but they both get a parameter I am not expecting.

function overlay_enable() {
  if (strpos(current_path(), 'admin/modules') === 0) {
    // Flag for a redirect to &lt;front&gt;#overlay=admin/modules on hook_init().
    $_SESSION['overlay_enable_redirect'] = 1;
  }
}




/**
 * Implements hook_init().
 */
function phptemplate_init($template) {
  $file = dirname($template-&gt;filename) . '/' . $template-&gt;name . '.theme';
  if (file_exists($file)) {
    include_once DRUPAL_ROOT . '/' . $file;
  }
}




/**
 * Implements hook_init().
 */
function twig_init($template) {
  $file = dirname($template-&gt;filename) . '/' . $template-&gt;name . '.theme';
  if (file_exists($file)) {
    include_once DRUPAL_ROOT . '/' . $file;
  }
}


I also looked for any function invoking hook_init() but I didn't find any.

Is hook_init() still used in Drupal 8? If it is not anymore used, how do I convert Drupal 7 code implementing hook_init()?
Perhaps this has changed since this question was last answered. But I think the preferred approach to replacing what is going on in hook_init is to create an event subscriber, and adding to the 'request'. Here is how you do that for those that may find it useful.

Example services.yml

services:
  init_subscriber:
    class:   Drupal\mymodule\EventSubscriber\MyModuleSubscriber
    arguments: ['@current_user'] // &lt;- optional args
    tags:
      - {name: event_subscriber} // &lt;- Required Tag


Then you would implement the EventSubscriberInterface (new file in the src/EventSubscriber directory) and in the implemented method getSubscribedEvents you can do something like...

/**
 * {@inheritdoc}
 */
public static function getSubscribedEvents() {
  $events[KernelEvents::REQUEST][] = array('initializeMyModule');
  return $events;
}


And add the method accordingly

/**
 * MyModule
 *
 * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
 *   The event to process.
 */
public function initializeMyModule(GetResponseEvent $event) {
  $request = $event-&gt;getRequest();   
  ...
}