Yea, I'm struggling with the Angular app-shell as I have a wildcard in my app routes. My project is a standalone Angular project. How can we solve this? app.config.server.ts file: import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; import { provideServerRendering } from '@angular/platform-server'; import { appConfig } from './app.config'; import { ROUTES } from '@angular/router'; import { AppShellComponent } from './app-shell/app-shell.component'; const serverConfig: ApplicationConfig = { providers: [ provideServerRendering(), { provide: ROUTES, multi: true, useValue: [ { path: 'shell', component: AppShellComponent, }, ], }, ], }; export const config = mergeApplicationConfig(appConfig, serverConfig); I also experienced that if I use the APP_INITIALIZER and try to redirect to an error page (based on our logic), App-shell navigates to that error page and embeds that page into our HTML instead of embedding the app-shell page itself! How this can be resolved?! app.config.ts file: import { APP_INITIALIZER, ApplicationConfig, isDevMode } from '@angular/core'; import { Router, provideRouter, withEnabledBlockingInitialNavigation, } from '@angular/router'; import { appRoutes } from './app.routes'; function initAppFactoryConfig(router: Router) { return () => new Promise((resolve, reject) => { // We resolve the promise whatsoever! Because we want the app to complete // its initialization... BUT based on our logic (e.g., if the file we're // trying to load at initialization, couldn't get loaded), we may like to // redirect to one of our app's pages and then resolve... In this case // app-shell embeds the error page into the HTML instead! router.navigate(['/error-loading']); resolve(true); }); } export const appConfig: ApplicationConfig = { providers: [ provideRouter(appRoutes, withEnabledBlockingInitialNavigation()), { provide: APP_INITIALIZER, useFactory: initAppFactoryConfig, deps: [Router], multi: true, }, ], }; Continue reading...