diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/Initializer/index.js b/packages/strapi-generate-plugin/files/admin/src/containers/Initializer/index.js
new file mode 100644
index 0000000000..6e8f49cdca
--- /dev/null
+++ b/packages/strapi-generate-plugin/files/admin/src/containers/Initializer/index.js
@@ -0,0 +1,27 @@
+/**
+ *
+ * Initializer
+ *
+ */
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import pluginId from '../../pluginId';
+
+class Initializer extends React.PureComponent {
+ // eslint-disable-line react/prefer-stateless-function
+ componentDidMount() {
+ // Emit the event 'pluginReady'
+ this.props.updatePlugin(pluginId, 'isReady', true);
+ }
+
+ render() {
+ return null;
+ }
+}
+
+Initializer.propTypes = {
+ updatePlugin: PropTypes.func.isRequired,
+};
+
+export default Initializer;
diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/Initializer/tests/index.test.js b/packages/strapi-generate-plugin/files/admin/src/containers/Initializer/tests/index.test.js
new file mode 100644
index 0000000000..56bd4f938e
--- /dev/null
+++ b/packages/strapi-generate-plugin/files/admin/src/containers/Initializer/tests/index.test.js
@@ -0,0 +1,21 @@
+import React from 'react';
+import { mount, shallow } from 'enzyme';
+
+import Initializer from '../index';
+
+describe('', () => {
+ it('Should not crash', () => {
+ const updatePlugin = jest.fn();
+ const renderedComponent = shallow();
+
+ expect(renderedComponent.children()).toHaveLength(0);
+ });
+
+ it('should call the updatePlugin props when mounted', () => {
+ const updatePlugin = jest.fn();
+
+ const wrapper = mount();
+
+ expect(wrapper.prop('updatePlugin')).toHaveBeenCalledWith('upload', 'isReady', true);
+ });
+});
diff --git a/packages/strapi-generate-plugin/files/admin/src/initializer.js b/packages/strapi-generate-plugin/files/admin/src/initializer.js
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/strapi-generate-plugin/files/admin/src/lifecycles.js b/packages/strapi-generate-plugin/files/admin/src/lifecycles.js
new file mode 100644
index 0000000000..06682e7244
--- /dev/null
+++ b/packages/strapi-generate-plugin/files/admin/src/lifecycles.js
@@ -0,0 +1,23 @@
+/*
+ *
+ * SET THE HOOKS TO ENABLE THE MAGIC OF STRAPI.
+ * -------------------------------------------
+ *
+ * Secure, customise and enhance your project by setting
+ * the hooks via this file.
+ *
+ */
+
+module.exports = function lifecycles() {
+ // Set hooks for the AdminPage container.
+ // Note: we don't need to specify the first argument because we already know what "willSecure" refers to.
+ this.setHooks({
+ didGetSecuredData: () => console.log('do something'),
+ });
+
+ // Set hooks for the App container of the Content Manager.
+ // Note: we have to specify the first argument to select a specific container which is located in a plugin, or not.
+ // this.setHooks('content-manager.App', {
+ // willSomething: () => { console.log("Do Something"); }
+ // });
+};