diff --git a/dev/core/src/com/google/gwt/dev/GWTShell.java b/dev/core/src/com/google/gwt/dev/GWTShell.java
index 61ba6ad..20d9a2d 100644
--- a/dev/core/src/com/google/gwt/dev/GWTShell.java
+++ b/dev/core/src/com/google/gwt/dev/GWTShell.java
@@ -57,6 +57,7 @@
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -280,9 +281,12 @@
      * @return the loaded module
      * @throws UnableToCompleteException
      */
-    private ModuleDef loadModule(final String moduleName, TreeLogger logger)
+    private ModuleDef loadModule(String moduleName, TreeLogger logger)
         throws UnableToCompleteException {
-      ModuleDef moduleDef = doLoadModule(logger, moduleName);
+      boolean assumeFresh = !alreadySeenModules.contains(moduleName);
+      ModuleDef moduleDef = ModuleDefLoader.loadFromClassPath(logger,
+          moduleName, !assumeFresh);
+      alreadySeenModules.add(moduleName);
       assert (moduleDef != null) : "Required module state is absent";
       return moduleDef;
     }
@@ -364,6 +368,14 @@
 
   protected File outDir;
 
+  /**
+   * Cheat on the first load's refresh by assuming the module loaded by
+   * {@link com.google.gwt.dev.shell.GWTShellServlet} is still fresh. This
+   * prevents a double-refresh on startup. Subsequent refreshes will trigger a
+   * real refresh.
+   */
+  private Set<String> alreadySeenModules = new HashSet<String>();
+
   private BrowserWidgetHostImpl browserHost = new BrowserWidgetHostImpl();
 
   private final List<Shell> browserShells = new ArrayList<Shell>();
@@ -655,16 +667,6 @@
   }
 
   /**
-   * Loads a named module. This method can be overridden if the module def needs
-   * to be tweaked (or even created) programmatically -- JUnit integration does
-   * this, for example.
-   */
-  protected ModuleDef doLoadModule(TreeLogger logger, final String moduleName)
-      throws UnableToCompleteException {
-    return ModuleDefLoader.loadFromClassPath(logger, moduleName);
-  }
-
-  /**
    * Derived classes can override to prevent automatic update checking.
    */
   protected boolean doShouldCheckForUpdates() {
diff --git a/user/src/com/google/gwt/junit/JUnitShell.java b/user/src/com/google/gwt/junit/JUnitShell.java
index 0bd81e8..dbfaa08 100644
--- a/user/src/com/google/gwt/junit/JUnitShell.java
+++ b/user/src/com/google/gwt/junit/JUnitShell.java
@@ -490,7 +490,9 @@
 
   void compileForWebMode(String moduleName, String userAgentString)
       throws UnableToCompleteException {
-    ModuleDef module = doLoadModule(getTopLogger(), moduleName);
+    // Never fresh during JUnit.
+    ModuleDef module = ModuleDefLoader.loadFromClassPath(getTopLogger(),
+        moduleName, false);
     if (userAgentString != null) {
       Properties props = module.getProperties();
       Property userAgent = props.find("user.agent");
