mattermost-community/focalboard · warning · Error
ErrorId.NotLoggedIn
ErrorId.NotLoggedIn
Error message
NotLoggedIn
What it means
initialLoad throws new Error(ErrorId.NotLoggedIn) when the /users/me request returns no user, meaning the client is not authenticated. It aborts the app's initial data load so the UI can route to login.
Source
Thrown at webapp/src/store/initialLoad.ts:28
import {RootState} from './index'
export const initialLoad = createAsyncThunk(
'initialLoad',
async () => {
const [me, myConfig, team, teams, boards, boardsMemberships, boardTemplates, limits] = await Promise.all([
client.getMe(),
client.getMyConfig(),
client.getTeam(),
client.getTeams(),
client.getBoards(),
client.getMyBoardMemberships(),
client.getTeamTemplates(),
client.getBoardsCloudLimits(),
])
// if no me, normally user not logged in
if (!me) {
throw new Error(ErrorId.NotLoggedIn)
}
// if no team, either bad id, or user doesn't have access
if (!team) {
throw new Error(ErrorId.TeamUndefined)
}
return {
team,
teams,
boards,
boardsMemberships,
boardTemplates,
limits,
myConfig,
}
},
)
View on GitHub (pinned to a84bbb65e3)
Solutions
- Redirect the user to the login flow when this error is caught
- Verify the auth token/cookie is present and valid (check browser devtools for the session cookie on /api requests)
- Re-authenticate: log in again or refresh the SSO session
- Check proxy/iframe configurations that may strip cookies or block third-party cookies
Example fix
// before
await initialLoad() // throws NotLoggedIn, unhandled
// after
try {
await initialLoad()
} catch (e) {
if (e.message === 'NotLoggedIn') {
window.location.href = '/login'
}
} Defensive patterns
Strategy: try-catch
Validate before calling
const res = await fetch('/api/v2/users/me', {credentials: 'include'})
const isAuthenticated = res.ok Type guard
function isNotLoggedInError(e: unknown): e is Error {
return e instanceof Error && e.message === 'NotLoggedIn'
} Try / catch
try {
await initialLoad()
} catch (e) {
if (isNotLoggedInError(e)) {
window.location.href = '/login'
return
}
throw e
} Prevention
- Check session validity before heavy initial loads
- Handle session expiry globally (interceptor that redirects to login)
- Test with cookies disabled/expired to verify the redirect path
- Be careful with iframe embedding and third-party cookie blocking
When it happens
Trigger: Loading the webapp without a valid session cookie/token; a session that expired before initialLoad ran; accessing the app through a reverse proxy that strips auth cookies.
Common situations: Expired sessions after idle time, SSO/token misconfiguration, cookies blocked by browser settings, or embedding the app in an iframe where third-party cookies are disabled.
Related errors
- ErrorId.TeamUndefined
- ErrorId.InvalidReadOnlyBoard
- unable to create session
- unable to delete the session
- unable to get the session for the token
AI-assisted analysis of mattermost-community/focalboard@a84bbb65e3 (2026-08-30).
Data as JSON: /api/errors/880da267ddfa77fc.
Report an issue: GitHub.