Here is the rest of the code, the hierachy goes like this: Composite->AbstractBasePage->AbstractTextPage->FAQPAge. The singleton S4GWebApp is injected in the root, so it is available in each page. GA is for Google Analytics tracking. Not sure why there is an issue, but it sounds like Errai DI gets confused with class hierarchies >2 levels deep. Do you test cases cover deeper hierarchies?

I just tried this simple code that ends up by the error message: "Uncaught java.lang.RuntimeException: critical error in IOC container bootstrap: java.lang.RuntimeException: error in bean initialization".

This is not a bug. An injected bean can only have one parent at a given time. Since both pages and the Child widget are all application scoped, the parent of the Child widget never gets destroyed and hence a new parent cannot be set.

What exactly are you trying to accomplish? From your code it appears that you require certain widgets to appear on every page, such as the BottomBar. Have you taken a look at the Grocery List demo? From my understanding, the GroceryListClient might be a helpful example.

Thank you for your answer that explain clearly to me that I was missing something!

Since these last months, I worked with CDI on server-side (JEE project) and that is why I took some thinking shortcuts about @ApplicationScoped and @Singleton annotations.

Indeed, I was expecting from them a very similar behavior into errai framework, but it is today not possible to get it for Widget components because of the reasons you gave.

However, do you think it could be possible, for widgets annotated with @ApplicationScoped or @Singleton, that the parent is set again at each page transition (if the next or previous page is different than the current one)?