I fixed this, but I’m posting this because it may be useful for someone else plagued with a similar problem.
TL;DR - using hrefs instead of ui-srefs in my tabs template fixed the problem.
I still don’t what caused the issue, but I’ve managed to find a fix.
I have a moderately complex routing / state setup using a top level app state and a number of branching states under that, like below (to troubleshoot, I replicated the problem with a very VERY simple state setup, so complexity wasn’t the issue):
- app /app (abstract) -- app.start /app/start (abstract) --- app.start.welcome /app/start/welcome --- app.start.register /app/start/register --- app.start.signin /app/start/signin --- app.tab /app/tab (abstract) --- app.tab.compose /app/tab/compose --- app.tab.messages /app/tab/messages (DEFAULT STATE) --- app.tab.me /app/tab/me
As indicated - app.tab.messages is the default state that I set using $urlRouterProvider.otherwise
What was happening whenever I started the app, rather than going to the default state, the navigation would automatically load the first non-abstract state in the config block - e.g. app.start.welcome.
In my tabs template I was linking off the tabs using ui-sref, e.g. ui-sref=‘app.start.signin’
That was a mistake - changing them to hrefs fixed it, e.g. href=‘app/start/signin’
I’m not sure why this was an issue and how using hrefs fixed it, but it seems to be working.