DevExtreme Angular - Server-Side Rendering
Server-side rendering (SSR) generates static pages on the server to reduce the application's loading time.
Follow the Angular guide on SSR to create Angular project with SSR or add SSR to an existing project.
Then, add DevExtreme components to your application.
To finish DevExtreme SSR configuration, import DxServerModule in the app.module.server.ts file:
import { NgModule } from '@angular/core';
import { ServerModule } from '@angular/platform-server';
import { AppModule } from './app.module';
import { AppComponent } from './app.component';
import { DxServerModule } from 'devextreme-angular/server';
@NgModule({
    imports: [
        AppModule,
        ServerModule,
        DxServerModule
    ],
    bootstrap: [AppComponent],
})
export class AppServerModule {}If you use standalone components, import DxServerModule in the app.config.server.ts file:
import { mergeApplicationConfig, ApplicationConfig, importProvidersFrom } from '@angular/core';
import { provideServerRendering } from '@angular/platform-server';
import { DxServerModule } from 'devextreme-angular/server';
import { appConfig } from './app.config';
const serverConfig: ApplicationConfig = {
    providers: [
        provideServerRendering(), importProvidersFrom(DxServerModule)
    ]
};
export const config = mergeApplicationConfig(appConfig, serverConfig);Cache Requests on the Server
When the server caches requests, DevExtreme components are rendered using data applied when the page is loaded for the first time. This decreases the number of requests to the server.
To enable this feature:
- Import the - DxServerTransferStateModulein the- app.module.tsfile:app.module.ts- import { DxServerTransferStateModule } from 'devextreme-angular'; @NgModule({ // ... imports: [ // ... DxServerTransferStateModule ] }) export class AppModule { }
- Import the - ServerTransferStateModulein the- app.server.module.tsfile:app.server.module.ts- import { DxServerModule } from 'devextreme-angular/server'; import { ServerModule, ServerTransferStateModule } from '@angular/platform-server'; // ... @NgModule({ imports: [ AppModule, DxServerModule, ServerModule, ServerTransferStateModule, ModuleMapLoaderModule ], bootstrap: [AppComponent], })
- Check that the - main.tsfile contains the following code to ensure that the- AppModuleis bootstrapped after the server-side rendered page is loaded:main.ts- document.addEventListener('DOMContentLoaded', () => { platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.log(err)); });
If you have technical questions, please create a support ticket in the DevExpress Support Center.