Guice has a concept called develpment stages which affect how the library works. Guice is written with server-side applications in mind (it is from Google, after all) so the behaviour for production mode is to do a bunch of work up front so that it can catch errors as soon as possible.
The development mode defers work (i.e. object creation) until the last moment; Here’s how the Javadoc notes describe them:
Development we want fast startup times at the expense of runtime performance and some up front error checking.
Production we want to catch errors as early as possible and take performance hits up front.
Tool we’re running in a tool (an IDE plugin for example).
Ignoring tool mode, this is exactly the opposite of the behaviour that you want to see for client-side development. For client applications you want to have an much error checking as possible during development but for production use (i.e. use by a real user) you want to go for faster start-up times.
Note that for production use it is also advantageous to defer error checking until later as well; after all, there is no point in refusing to start an app because feature ‘foo’ isn’t working, if the user doesn’t use or care about ‘foo’!