The newline Guide to Angular Universal

In this course I'll show you how to enhance existing Angular application with Angular Universal, how to optimize its performance and what are Server-Side Rendering best practices. You'll see how to improve PageSpeed Insights score from 66 to 95 points!

4.8 (8 ratings)49 students

39 Video Lessons

Published  | Updated

Course Preview

What You Will Learn

How to make SEO friendly Angular application

What problems Angular Universal can solve

How to integrate Angular Universal application with MongoDB and Redis cache

Preparing server-specific Angular services and logic paths in the server and browser common code

How to create transfer data between server and browser using TransferState

Importance of optimizing server-side REST calls

How to manipulatie Angular application <title> and <meta> tags

How to Unit test and e2e test Angular Universal application

How to prepare your application for prerendering

In this course, we'll create a complete Angular application that is Server-Side-Rendered with Angular Universal.

The application will be optimized for the best possible performance and will be tuned for real-world production use. For example, we'll use Redis for server-side caching, create protected routes, and get great SEO benefits with a snappy user experience.

This course is 40+ lessons where we walk through a step-by-step tutorial to optimize an Angular app from a Lighthouse score of 66 (the default) to a blazing-fast score of 95 (!)

The problem with "normal" Angular apps is that they don't run until our user has downloaded the entire application - but with SSR, we'll render our Angular app on the server.

The result is that your app will load super-fast, you'll improve your SEO, you will delight your users.

Along the way, we'll learn production deployment techniques like:

  • how to use a CDN (Content Delivery Network) for global performance and
  • how to deploy to Heroku and retrieve data from a MongoDB database
  • How to measure and improve metrics like time-to-first-byte and time to first-contentful-paint
  • How to add data like internationalization with SSR
  • How to manage security and secrets in your SSR build
  • How fetch server-side queries from the database
  • How to use TransferState to eliminate duplicate client-side queries
  • How to test server-side rendered apps
  • How to pre-render static pages

By the end of this course you'll understand how to create Angular apps with real-world, production-level performance.

Course Content

8 modules39 lessons


2 lessons

Angular Universal and the Era of Single-Page Applications

Introduction to Guide to Angular Universal


Course prerequisites

This lesson answers the questions "What do I need to accomplish the course?" "What software is needed?" "What should I know about Angular and other technologies?" "What should I do to accomplish the course offline?"


Building the app

9 lessons

How Does Angular Work with Heroku and MongoDB?

In this course module, you will build a production-ready Angular application. It will consist of a list of products with pictures, descriptions, and prices. Each product will have a dedicated landing page. You will also develop the functionality of adding products to a list of favorites and displaying that list. You will build a back-end and API to feed your application with data. The data will be retrieved from MongoDB provisioned in your Heroku application.


How to Install Angular From the CLI and Add Bootstrap CSS

Most projects start from scratch. This one is not an exception. In this lesson you will initialize the Angular application using CLI, include the Cascading StyleSheet, set up routing and basic components.


How to Build and Run an Angular Backend to Test Locally

In this lesson you will prepare the application backend an entry gate for communicating with persistance layer and hosting Angular application bundle.


How to Install MongoDB Locally and Import JSON Data

Every application needs a persistence layer. This lesson will show you how to enroll for free Atlas cloud MongoDB instance. You will also feed your database with data.


How to Build a MongoDB REST API to Fetch Data

Once the database is set up and ready, you need to establish a connection with it. That's what you're going to do in this part of the course. Apart of that you will create backend API to get list of products and their descriptions.


Build MongoDB API With Encryption for PII Data and Auth

We're building software for people, and we need to give them a way to communicate with it. This lesson will show you how to prepare an API for user interaction like loging in and adding products to list of favorites. Moreover you will be introduced to the security essentials like cookies encryption and password hashing.


How to Add User Authentication to Angular With MongoDB API

When the backend is ready, it's time for frontend. In this lesson you will integrate user API with Angular. You will implement the user authentication flow.


How to Fetch Data From MongoDB and Display it in Angular

Our application would be nothing without the data. In this course part you will display products images, description and prices in your Angular application.


How to Deploy an Angular App and Watch Performance

Every journey has some end. At the end of software development is production. It's time to deploy your application to Heroku and test with multiple tools how it performs.


Applying Angular Universal

7 lessons

Angular Universal

In the previous module, you've built a fully functional production-ready application. Unfortunately, like other single-page applications, this application has its weaknesses. In this module, you will learn how to address one of them and render HTML content on the server.


Server-Side Rendering With Angular Universal Schematics

The easiest way to enhance your Angular project with new functionalities is to use Schematics - a set of instruction for CLI on how to change the project and install new dependencies. Let's do that with Angular Universal and review what Schematics did for us.


How to Measure Performance - Angular vs Angular Universal

Once the application is said to be SEO friendly and performance optimized by schemtaics - let's check that in battlefield. In this lesson you will deploy your project to Heroku and measure its performance.


How to Add Internationalization to Angular With i18n

Unfortunately, schematics are not a magic wand and they won't solve all of your problems. Sometimes your project needs to be adjusted to do not break Server-Side Rendering process. Here's what might go wrong, and how to address that.


How to Add Sitemap.xml and Robots.txt to an Angular App

In this lesson, you will add even more for SEO. Your application deserves robots.txt and proper sitemap.


How to Optimize Angular SEO With Title and Meta Tags

Next step in SEO is to set up meta-tags. If you want to know how to do it in Angular, this lesson will help you to find the answer.



In this lesson, you can see how Angular Universal helps when your user's browser doesn't support JavaScript


Browser vs. Server

5 lessons

Retrieve MongoDB Data in Angular Universal With Secrets

In this course module, you will learn how to pass objects and function references from Node.js to Angular Universal sandbox. You will build a service that will be used to connect with MongoDB and perform queries. You will also gain knowledge on how to prepare a server-equivalent of services used in browser-side Angular; and how to improve your application performance thanks to them. You will also make your application fully functional for users with disabled JavaScript.


How to Query MongoDB from Angular Universal

One of possible improvements is to perform queries against MongoDB directly from Angular Universal. In this lesson you will create a service which does this job.


How to Build Server-Specific Services in Angular Universal

Once your MongoService is in place, you need to prepare a server-equivalent of ProductsService. This service will query MongoService for products list and descriptions and embed those in the HTML rendered by Angular Universal.


How to Read HTTP Requests With Cookies in Angular

Next step is to create a server-equivalent of service responsible for user interactions. This lesson will show you how to read HTTP requests in Angular, get cookies from it and decrypt them.


How to Make Angular Functional With JavaScript Disabled

Once you know how to read cookies in the Angular Universal app, it's time to learn how to set them up. In this lesson, you will make your application fully functional for users whose browser doesn't support JavaScript at all.


Transfering data between server and browser

3 lessons

Send Server Data to Client With Angular TransferState

Say Hello to TransferState, a key-value registry that is passed along with the application bundle, from the server-side angular to the browser-side part of the application. In this lesson you will learn how frontend can get to know what backend has already do (ie retrieving data from DB); thanks to that you can avoid repeating those steps and offload your application backend.


Perform Angular HTTP Calls With TransferHttpCacheModule

Next step is to get know a TransferHttpCacheModule, which provides the TransferState functionality "out of the box" for the HTTP calls.


How to Handle Slow API Calls in Angular

Long running API calls can affect your application rendering time, that might lead to the SEO disaster. In this lesson you will learn how you can protect your application against such situation.


Caching with Redis

3 lessons

How to Install Redis CLI on Windows, Mac, and Heroku

First things first. Let's install the Redis DB on your machine and provision it in the Heroku environment.


How to Cache Angular With Redis Node.js Middleware

In this lesson you will create a Node.JS middle-ware, that will be responsible for caching rendered views inside Redis database.


5 Angular Performance Optimization Tips

Faster! Faster! Faster! In this lesson you will enable gzip compression, defer the CSS, lazy-load images and more. All to make it faster!



6 lessons

Module Overview

Testing an Angular Universal application can be tricky. In this module, you will learn how to create tests that are specific to Angular Universal applications.


How to Mock PLATFORM_ID Value for Angular Unit Testing

How to verify your application behavior in different environments? In this lesson you will get to know how you can stub the PLATFORM_ID injection token and HTTP request, for tests purpose.


How to Unit Test Slow API Calls in Angular

Next step is to simulate a long-running API and verify how server-side Angular deals with it. This lesson will demonstrate you how to do that.


How to Unit Test Server-Side Services in Angular Karma

Last but not least of your unit tests, should be to verify the server-specific services. In this lesson you will learn how to enforce Karma to run tests against code that includes server-specific objects and libraries.


Build Angular End-to-End Unit Tests With TransferState

In this lesson you will learn how you can verify the TransferState registry content in your E2E tests.


How to Mock MongDB for Angular End-to-End Unit Tests

This lesson is going to show you how to mock your data-source - MongoDB - for the E2E tests purpose. Thanks to using mongo-unit you will be able to perform actions that changes data in your DB, during E2E testing.



3 lessons

Prerendering in Angular

In this module, you'll learn how to adjust the Angular application to be pre-renderable. Such prepared application can be deployed on static hosting like GitHub pages and still be SEO friendly! You will feed your application with data retrieved from MongoDB during the prerendering process.


How to Resolve Angular Prerendering Issues

What is prerendering and how Angular Universal supports it? This lesson will answer that questio and show you what steps you need to take, to make your application prerenderable.



After finishing this module, you will know how prerendering works, how to prepare backend for prerendered Angular application and how to utilize MongoDB connection during prerendering process.



1 lesson

Angular --prod Universal Versus Prerender

That was a bumpy ride, but definetely worth it. In this lesson we will summarize what you've learned so far and how ng --prod differentiate from Universal and Prerendered application.


Your Instructors

Profile image for maciejtreder

👋 Hi! I'm Maciej Treder, senior software development engineer in Akamai Technologies. I am an international conference speaker, focusing on JavaScript, Angular and web technologies. I am author of several publications about JavaScript, Angular and software architecture. I am founder of the ng-toolkit - set of tools to enhance existing Angular applications.

Frequently Asked Questions

Who is this course for?

This course is for developers who have an essential exposure to Angular, and want to make a deep dive into the Angular Universal world.

What if I need help?

You can ask us questions anytime through the community Discord channel, starting a discussion in the course, or by sending us a message.

newline Pro Subscription

Get unlimited access to the course, plus 60+ newline books, guides and courses. Learn More


Charged monthly. Free to cancel anytime.


One-Time Purchase

Get lifetime access to this course.

$29$59$30 off

Newline Guide to Angular Universal Course