SlideShare a Scribd company logo
Azure Community Conference 2021
India’s largest Azure Conference
#AzConfDev
#AzConfDev
Maurice de Beijer
The Problem Solver
Freelance lead/developer/instructor
#AzConfDev
Building Reliable Applications Using React,
.NET & Azure
Maurice de Beijer - @mauricedb
#AzConfDev
Topics
• JavaScript versus TypeScript
• Hosting
• Test-driven development
• API types and updates
• Git Workflow
• Feature Flags
• Runtime errors
#AzConfDev
Opinions Ahead 
#AzConfDev
Cheese
#AzConfDev
Swiss Cheese Model
#AzConfDev
JavaScript versus TypeScript
#AzConfDev
TypeScript
#AzConfDev
Language features
• Type Unions
• Tuples
• Optional Chaining
• Nullish Coalescing operator
#AzConfDev
JS Doc
• Annotate your JavaScript with JS Doc types
• If you made the mistake of not starting with TypeScript 
#AzConfDev
Mapped Types
#AzConfDev
Opaque Types
#AzConfDev
ES Modules
Named imports instead of import default
Better with tooling and discoverability
#AzConfDev
React and import default
#AzConfDev
ESBuild
#AzConfDev
Hosting the front-end
#AzConfDev
Vite - During development
Next Generation Frontend Tooling
#AzConfDev
Azure Blob Storage – At runtime
#AzConfDev
Azure CDN
#AzConfDev
Routing Rules
#AzConfDev
Deploy From GitHub
#AzConfDev
Test-Driven Development
#AzConfDev
The traditional testing pyramid
Manual
End to End
Integration testing
Unit testing
#AzConfDev
Both windows are fine
#AzConfDev
A sturdy latch
#AzConfDev
A better testing pyramid for the web
Manual
End to End
Integration testing
Unit testing
#AzConfDev
Cypress.io
#AzConfDev
Cypress.io course 
#AzConfDev
Testing Front & Back End
#AzConfDev
Intercepting AJAX Requests
#AzConfDev
API Types and Updates
#AzConfDev
Open API
#AzConfDev
Swashbuckle for Azure Function
#AzConfDev
Nswag Generates TypeScript/C# Interfaces
#AzConfDev
API Version
#AzConfDev
Required ValueTypes
#AzConfDev
Validate API
Validate all data that crosses an external boundary
User input
Data from an API
#AzConfDev
Type Mapping
#AzConfDev
Long living clients
Some users never close their browser
The same old version of the SPA can remain active
Even when a newer version is available on the server
Send the client version the server with each AJAX request
#AzConfDev
Checking the version
#AzConfDev
AJAX requests
The public internet is unreliable
Some requests will fail for random reasons
Use a retry policy to handle network errors
#AzConfDev
Retry Policy
#AzConfDev
Workflow
#AzConfDev
Workflow
Use short-lived Git feature branches
A few hours at most
Hide new or risky code behind a feature flag
Initially only available for developers/testers
#AzConfDev
Release Strategy
Release new features to a subset of users first
Fast Ring with user opt in
Percentage of users
One or more companies
One or more regions/countries
#AzConfDev
Feature Flags
#AzConfDev
Feature Flags
A simple feature flag system is not hard
But can become quite elaborate
Consider using a service like Azure App Configuration
Or a service like LaunchDarkly
#AzConfDev
Azure Configuration Function
#AzConfDev
React Configuration Provider
#AzConfDev
Conditional Rendering
#AzConfDev
Runtime errors
#AzConfDev
Runtime errors
Runtime errors need to be tracked
There is no code without bugs
Features like LocalStorage will be disabled for some users
Azure Application Insights works well
Tracks unhandled exceptions
Add an Error Boundary and track component errors
#AzConfDev
Runtime errors
#AzConfDev
Application Insights
#AzConfDev
Application Insights
#AzConfDev
Conclusion
TypeScript is a must have
For any serious development
Use BLOB storage & CDN
Easy, fast and cheap hosting
Test-driven development prevents bugs
Use an End to End tool like Cypress
API types and updates
Automate the client types
Always validate the incoming data
Workflow
Use small and very short lived branches
Use feature flags to hide new code in production
Runtime errors will happen
Make sure you track them
#AzConfDev
Title Sponsors
Community Partner
#AzConfDev
Learning Partners
Security Partner
#AzConfDev
Communities
#AzConfDev
Q & A
#AzConfDev
Feedback
#AzConfDev
THANK YOU!
Building Reliable Applications Using React, .NET & Azure
Maurice de Beijer
@mauricedb

More Related Content

What's hot (20)

PPTX
Cypress for Testing
PoojaSingh1123
 
PPTX
Progressive Web App Testing With Cypress.io
Knoldus Inc.
 
PPTX
Introduction to Integration Testing With Cypress
Erez Cohen
 
PDF
Viktor Turskyi "Effective NodeJS Application Development"
Fwdays
 
PPTX
Cypress first impressions
Hans Emmel
 
PPTX
Fullstack workshop
Assaf Gannon
 
PPTX
Memaksimalkan Non-Blocking IO pada Node.js
CodePolitan
 
PDF
Getting Started with React Native (and should I use it at all?)
Devin Abbott
 
PDF
"Technical Challenges behind Visual IDE for React Components" Tetiana Mandziuk
Fwdays
 
PPTX
Introduction to cypress in Angular (Chinese)
Hong Tat Yew
 
PDF
Stripe con 2021 UI stack
MaximeRainville1
 
PDF
Using JHipster for generating Angular/Spring Boot apps
Yakov Fain
 
PDF
Intro To React Native
FITC
 
PDF
A Closer Look At React Native
Ian Wang
 
PPTX
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
OdessaJS Conf
 
PPTX
Angular 2 Migration - JHipster Meetup 6
William Marques
 
PPTX
Node js
Fatih Şimşek
 
PDF
Alexey Kupriyanenko "Release Early, Often, Stable"
Fwdays
 
PDF
Node, express & sails
Brian Shannon
 
Cypress for Testing
PoojaSingh1123
 
Progressive Web App Testing With Cypress.io
Knoldus Inc.
 
Introduction to Integration Testing With Cypress
Erez Cohen
 
Viktor Turskyi "Effective NodeJS Application Development"
Fwdays
 
Cypress first impressions
Hans Emmel
 
Fullstack workshop
Assaf Gannon
 
Memaksimalkan Non-Blocking IO pada Node.js
CodePolitan
 
Getting Started with React Native (and should I use it at all?)
Devin Abbott
 
"Technical Challenges behind Visual IDE for React Components" Tetiana Mandziuk
Fwdays
 
Introduction to cypress in Angular (Chinese)
Hong Tat Yew
 
Stripe con 2021 UI stack
MaximeRainville1
 
Using JHipster for generating Angular/Spring Boot apps
Yakov Fain
 
Intro To React Native
FITC
 
A Closer Look At React Native
Ian Wang
 
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
OdessaJS Conf
 
Angular 2 Migration - JHipster Meetup 6
William Marques
 
Alexey Kupriyanenko "Release Early, Often, Stable"
Fwdays
 
Node, express & sails
Brian Shannon
 

Similar to Building Reliable Applications Using React, .NET & Azure (20)

PDF
Improve monitoring and observability for kubernetes with oss tools
Nilesh Gule
 
PPTX
Serverless
Vishwas N
 
PPTX
Developing ASP.NET MVC Applications Quicker With Kendo UI
Lohith Goudagere Nagaraj
 
PPTX
Azure Integration DTAP Series, How to go from Development to Production – Par...
BizTalk360
 
PPTX
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gian Maria Ricci
 
PPTX
Azure Integration DTAP Series, How to go from Development to Production – Par...
BizTalk360
 
PPTX
Nodejs overview
Nicola Del Gobbo
 
PDF
Node.js Native AddOns from zero to hero - Nicola Del Gobbo - Codemotion Rome ...
Codemotion
 
PDF
A Complete Guide to Infrastructure as Code
PratikMistry38
 
PPTX
Lightweight webdev
damianofusco
 
PDF
What's New in ASP.NET Core 3
Andrea Dottor
 
PPTX
Kiss.ts - The Keep It Simple Software Stack for 2017++
Ethan Ram
 
PPTX
Building a REST API Microservice for the DevNet API Scavenger Hunt
Ashley Roach
 
PDF
DevOps for Databricks
Databricks
 
PPTX
DevOps on GCP Course Compared to AWS
Joseph Holbrook, Chief Learning Officer (CLO)
 
PDF
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
lubnayasminsebl
 
PDF
When to use Serverless? When to use Kubernetes?
Niklas Heidloff
 
PPTX
Serverless java
Vishwas N
 
PPTX
Modern CI/CD Pipeline Using Azure DevOps
GlobalLogic Ukraine
 
Improve monitoring and observability for kubernetes with oss tools
Nilesh Gule
 
Serverless
Vishwas N
 
Developing ASP.NET MVC Applications Quicker With Kendo UI
Lohith Goudagere Nagaraj
 
Azure Integration DTAP Series, How to go from Development to Production – Par...
BizTalk360
 
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gian Maria Ricci
 
Azure Integration DTAP Series, How to go from Development to Production – Par...
BizTalk360
 
Nodejs overview
Nicola Del Gobbo
 
Node.js Native AddOns from zero to hero - Nicola Del Gobbo - Codemotion Rome ...
Codemotion
 
A Complete Guide to Infrastructure as Code
PratikMistry38
 
Lightweight webdev
damianofusco
 
What's New in ASP.NET Core 3
Andrea Dottor
 
Kiss.ts - The Keep It Simple Software Stack for 2017++
Ethan Ram
 
Building a REST API Microservice for the DevNet API Scavenger Hunt
Ashley Roach
 
DevOps for Databricks
Databricks
 
DevOps on GCP Course Compared to AWS
Joseph Holbrook, Chief Learning Officer (CLO)
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
lubnayasminsebl
 
When to use Serverless? When to use Kubernetes?
Niklas Heidloff
 
Serverless java
Vishwas N
 
Modern CI/CD Pipeline Using Azure DevOps
GlobalLogic Ukraine
 
Ad

More from Maurice De Beijer [MVP] (20)

PPTX
Full-stack App in half a Day: Next.js 15 Development Bootcamp
Maurice De Beijer [MVP]
 
PPTX
Production-ready Next.js App with Cursor AI
Maurice De Beijer [MVP]
 
PPTX
Building Robust Web Applications with Test-Driven Development and Playwright:...
Maurice De Beijer [MVP]
 
PDF
Mastering React Server Components and Server Actions in React 19
Maurice De Beijer [MVP]
 
PPTX
Practice TypeScript Techniques Building React Server Components App
Maurice De Beijer [MVP]
 
PPTX
A foolproof Way to Estimate a Software Project
Maurice De Beijer [MVP]
 
PPTX
Surati Tech Talks 2022 / Build reliable Svelte applications using Cypress
Maurice De Beijer [MVP]
 
PPTX
Build reliable Svelte applications using Cypress
Maurice De Beijer [MVP]
 
PPTX
Building reliable applications with React, C#, and Azure
Maurice De Beijer [MVP]
 
PPTX
Building large and scalable mission critical applications with React
Maurice De Beijer [MVP]
 
PPTX
Building Reliable Applications Using React, .NET & Azure
Maurice De Beijer [MVP]
 
PPTX
Building reliable web applications using Cypress
Maurice De Beijer [MVP]
 
PPTX
Getting started with React Suspense and concurrent rendering
Maurice De Beijer [MVP]
 
PPTX
React suspense, not just for Alfred Hitchcock
Maurice De Beijer [MVP]
 
PPTX
From zero to hero with the Reactive extensions for JavaScript
Maurice De Beijer [MVP]
 
PPTX
Why I am hooked on the future of React
Maurice De Beijer [MVP]
 
PPTX
The new React
Maurice De Beijer [MVP]
 
PPTX
From zero to hero with the reactive extensions for JavaScript
Maurice De Beijer [MVP]
 
PPTX
Why I am hooked on the future of React
Maurice De Beijer [MVP]
 
PPTX
I am hooked on React
Maurice De Beijer [MVP]
 
Full-stack App in half a Day: Next.js 15 Development Bootcamp
Maurice De Beijer [MVP]
 
Production-ready Next.js App with Cursor AI
Maurice De Beijer [MVP]
 
Building Robust Web Applications with Test-Driven Development and Playwright:...
Maurice De Beijer [MVP]
 
Mastering React Server Components and Server Actions in React 19
Maurice De Beijer [MVP]
 
Practice TypeScript Techniques Building React Server Components App
Maurice De Beijer [MVP]
 
A foolproof Way to Estimate a Software Project
Maurice De Beijer [MVP]
 
Surati Tech Talks 2022 / Build reliable Svelte applications using Cypress
Maurice De Beijer [MVP]
 
Build reliable Svelte applications using Cypress
Maurice De Beijer [MVP]
 
Building reliable applications with React, C#, and Azure
Maurice De Beijer [MVP]
 
Building large and scalable mission critical applications with React
Maurice De Beijer [MVP]
 
Building Reliable Applications Using React, .NET & Azure
Maurice De Beijer [MVP]
 
Building reliable web applications using Cypress
Maurice De Beijer [MVP]
 
Getting started with React Suspense and concurrent rendering
Maurice De Beijer [MVP]
 
React suspense, not just for Alfred Hitchcock
Maurice De Beijer [MVP]
 
From zero to hero with the Reactive extensions for JavaScript
Maurice De Beijer [MVP]
 
Why I am hooked on the future of React
Maurice De Beijer [MVP]
 
The new React
Maurice De Beijer [MVP]
 
From zero to hero with the reactive extensions for JavaScript
Maurice De Beijer [MVP]
 
Why I am hooked on the future of React
Maurice De Beijer [MVP]
 
I am hooked on React
Maurice De Beijer [MVP]
 
Ad

Recently uploaded (20)

PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
PPTX
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PPTX
Human Resources Information System (HRIS)
Amity University, Patna
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PDF
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PDF
Online Queue Management System for Public Service Offices in Nepal [Focused i...
Rishab Acharya
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
Tally software_Introduction_Presentation
AditiBansal54083
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
Human Resources Information System (HRIS)
Amity University, Patna
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
Online Queue Management System for Public Service Offices in Nepal [Focused i...
Rishab Acharya
 

Building Reliable Applications Using React, .NET & Azure