Angular › Server-Side Rendering with Angular Universal
What browser specific APIs commonly cause problems when running Angular code on the server, and how do you handle them safely?
AdvancedAnswer
APIs that only exist in a browser, like window, document, or localStorage, are not available in the Node.js environment used for server rendering, and accessing them directly will cause errors. You check whether the code is running in a browser using Angular's platform detection tools before accessing these APIs.
import { isPlatformBrowser } from '@angular/common';
import { PLATFORM_ID, inject } from '@angular/core';
constructor() {
const platformId = inject(PLATFORM_ID);
if (isPlatformBrowser(platformId)) {
localStorage.setItem('key', 'value');
}
}Real-world example A component that reads the user's saved theme preference from localStorage checks isPlatformBrowser first, avoiding a server crash during rendering since localStorage does not exist in the Node.js server environment at all.