     userChanged = nextContext.initialLoadComplete and nextProps.user isnt @props.user
 
     # Wait until we know if there's a user
-    if pathChanged or userChanged or nextContext.initialLoadComplete
+    if pathChanged or nextContext.initialLoadComplete
       @fetchProjectData owner, name, nextProps.user unless @state.loading
+      @setupSplits nextProps
+
+    if userChanged and nextProps.project?
+      @getUserProjectPreferences(nextProps.project, nextProps.user)
       @setupSplits nextProps
 
   componentWillUpdate: (nextProps, nextState) ->


          awaitProjectRoles = apiClient.type('project_roles').get(project.links.project_roles).catch((error) => console.error(error))

          awaitPreferences = if user?
            user.get 'project_preferences', project_id: project.id
              .then ([preferences]) =>
                preferences ? newPreferences = apiClient.type('project_preferences').create({
                  links: {
                    project: project.id
                  },
                  preferences: {}
                }).save()
          else
            Promise.resolve apiClient.type('project_preferences').create
              id: 'GUEST_PREFERENCES_DO_NOT_SAVE'
              links:
                project: project.id
              preferences: {}

          awaitPreferences = awaitPreferences.then (preferences) =>
            @listenToPreferences preferences

          Promise.all([
            awaitBackground,

      Promise.resolve(null)

  checkUserRoles: (project, user) ->
    currentUserRoleSets = @state.projectRoles.filter((roleSet) => roleSet.links.owner.id is user.id)
    roles = currentUserRoleSets[0].roles

    isAdmin() or 'owner' in roles or 'collaborator' in roles

  listenToPreferences: (preferences) ->
    @_listenedToPreferences?.stopListening 'change', @_boundForceUpdate
