SlideShare a Scribd company logo
Building Reliable
ApplicationsUsing
React, .NET &Azure
Maurice de Beijer - @mauricedb
Topics
 JavaScript versusTypeScript
 Hosting
 Test-driven development
 API types and updates
 GitWorkflow
 Feature Flags
 Runtime errors
© ABL - The Problem Solver 2
Opinions
Ahead 
© ABL - The Problem Solver 3
Swiss
Cheese
Model
© ABL - The Problem Solver 4
 Maurice de Beijer
 The Problem Solver
 Microsoft MVP
 Freelance lead/developer/instructor
 Twitter: @mauricedb
 Web: http://www.TheProblemSolver.nl
 E-mail: maurice.de.beijer@gmail.com
5
© ABL - The Problem Solver
The React
Newsletter
© ABL - The Problem Solver 6
JavaScript versusTypeScript
© ABL - The Problem Solver 7
TypeScript
© ABL - The Problem Solver 8
Language
features
 Type Unions
 Tuples
 OptionalChaining
 Nullish Coalescing operator
© ABL - The Problem Solver 9
JS Doc  Annotate your JavaScript with JS Doc types
 If you made the mistake of not starting withTypeScript 
© ABL - The Problem Solver 10
MappedTypes
 type RT = Readonly<T>
 type PT = Partial<T>
 type MyProps = React.ComponentProps<typeof MyComponent>
 type Returns = ReturnType<typeof someFunction>;
 type Args = Parameters<typeof someFunction>
© ABL - The Problem Solver 11
ES Modules  Named imports instead of import default
 Better with tooling and discoverability
© ABL - The Problem Solver 12
React and
import default
© ABL - The Problem Solver 13
ESBuild
© ABL - The Problem Solver 14
Hosting the front-end
During development
© ABL - The Problem Solver 15
Vite
© ABL - The Problem Solver 16
Hosting the front-end
In production
© ABL - The Problem Solver 17
Azure Blob
Storage
© ABL - The Problem Solver 18
AzureCDN
© ABL - The Problem Solver 19
Routing Rules
© ABL - The Problem Solver 20
Deploy
From
GitHub
© ABL - The Problem Solver 21
Test-Driven Development
© ABL - The Problem Solver 22
The traditional
testing
pyramid
Manual
End to End
Integration testing
Unit testing
Both windows
are fine
Source
A sturdy latch
Source
A better
testing
pyramid for
the web
Manual
End to End
Integration testing
Unit testing
Cypress
© ABL - The Problem Solver 27
Testing
Front & Back
End
© ABL - The Problem Solver 28
Intercepting
AJAX
Requests
© ABL - The Problem Solver 29
APITypes andUpdates
© ABL - The Problem Solver 30
OpenAPI
© ABL - The Problem Solver 31
Swashbuckle
for the
Azure Function
© ABL - The Problem Solver 32
NSwag
Generates
TypeScript
Interfaces
© ABL - The Problem Solver 33
APIVersion
© ABL - The Problem Solver 34
Required
ValueTypes
© ABL - The Problem Solver 35
ValidateAPI
 Validate all data that crosses an external boundary
 User input
 Data from an API
© ABL - The Problem Solver 36
Type Mapping
© ABL - The Problem Solver 37
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
© ABL - The Problem Solver 38
Checking the
version
© ABL - The Problem Solver 39
AJAX requests
 The public internet is unreliable
 Some requests will fail for random reasons
 Use a retry policy to handle network errors
© ABL - The Problem Solver 40
Retry Policy
© ABL - The Problem Solver 41
Workflow
© ABL - The Problem Solver 42
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
© ABL - The Problem Solver 43
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
© ABL - The Problem Solver 44
Feature Flags
© ABL - The Problem Solver 45
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
© ABL - The Problem Solver 46
Azure
Configuration
Function
© ABL - The Problem Solver 47
React
Configuration
Provider
© ABL - The Problem Solver 48
Conditional
Rendering
© ABL - The Problem Solver 49
Runtime errors
© ABL - The Problem Solver 50
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
© ABL - The Problem Solver 51
Runtime errors
© ABL - The Problem Solver 52
Application
Insights
© ABL - The Problem Solver 53
Application
Insights
© ABL - The Problem Solver 54
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
© ABL - The Problem Solver 55
Maurice de Beijer
@mauricedb
maurice.de.beijer
@gmail.com
© ABL - The Problem Solver 56

More Related Content

What's hot (19)

PPTX
Modern software testing and processes 2019
Karim Fanadka
 
PDF
DevOps: Find Solutions, Not More Defects
TechWell
 
PDF
Adventures with Microservices
Anand Agrawal
 
PDF
The Key to DevOps? Testing Early in the Pipeline
DevOps.com
 
PDF
Patterns of a "Good" Test Automation Framework, Locators & Data
Agile Testing Alliance
 
PDF
Introduction to lambda behave
RichardWarburton
 
ODP
API Testing With Katalon Studio
Knoldus Inc.
 
PPTX
ATAGTR2017 Protractor Cucumber BDD Approach
Agile Testing Alliance
 
PDF
Branching Strategies: Feature Branches vs Branch by Abstraction
Chris Birchall
 
PDF
What's new for VSTS & TFS
Pieter Gheysens
 
PDF
How to Build Front-End Web Apps that Scale - FutureJS
Phil Leggetter
 
PPTX
Feature toggles
Anand Agrawal
 
PDF
Continuous Delivery for Dynamics 365/CRM
Wael Hamze
 
PDF
Continuous Integration, Deploy, Test From Beginning To End 2014
Clever Moe
 
PDF
Rspec and Capybara Intro Tutorial at RailsConf 2013
Brian Sam-Bodden
 
PPTX
How We Build Confidence with Continuous Integration and Automated Testing
Gareth Marland
 
PPT
DevOps and Visual Studio Team Services
WinWire Technologies Inc
 
PPT
Qtp testing
Ramu Palanki
 
PPTX
Integration with saucelabs over private network
Test Armada
 
Modern software testing and processes 2019
Karim Fanadka
 
DevOps: Find Solutions, Not More Defects
TechWell
 
Adventures with Microservices
Anand Agrawal
 
The Key to DevOps? Testing Early in the Pipeline
DevOps.com
 
Patterns of a "Good" Test Automation Framework, Locators & Data
Agile Testing Alliance
 
Introduction to lambda behave
RichardWarburton
 
API Testing With Katalon Studio
Knoldus Inc.
 
ATAGTR2017 Protractor Cucumber BDD Approach
Agile Testing Alliance
 
Branching Strategies: Feature Branches vs Branch by Abstraction
Chris Birchall
 
What's new for VSTS & TFS
Pieter Gheysens
 
How to Build Front-End Web Apps that Scale - FutureJS
Phil Leggetter
 
Feature toggles
Anand Agrawal
 
Continuous Delivery for Dynamics 365/CRM
Wael Hamze
 
Continuous Integration, Deploy, Test From Beginning To End 2014
Clever Moe
 
Rspec and Capybara Intro Tutorial at RailsConf 2013
Brian Sam-Bodden
 
How We Build Confidence with Continuous Integration and Automated Testing
Gareth Marland
 
DevOps and Visual Studio Team Services
WinWire Technologies Inc
 
Qtp testing
Ramu Palanki
 
Integration with saucelabs over private network
Test Armada
 

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

PPTX
Production-ready Next.js App with Cursor AI
Maurice De Beijer [MVP]
 
PPTX
Practice TypeScript Techniques Building React Server Components App
Maurice De Beijer [MVP]
 
PDF
Continuous Deployment of your Application @JUGtoberfest
Marcin Grzejszczak
 
PDF
Continuous Deployment of your Application @SpringOne
ciberkleid
 
PPTX
Full-stack App in half a Day: Next.js 15 Development Bootcamp
Maurice De Beijer [MVP]
 
PDF
Continuous Deployment To The Cloud @DevoxxPL 2017
Marcin Grzejszczak
 
PPTX
Better React state management with Redux
Maurice De Beijer [MVP]
 
PPTX
Continuous Deployment to the cloud
VMware Tanzu
 
PPTX
The new React
Maurice De Beijer [MVP]
 
PPTX
Why I am hooked on the future of React
Maurice De Beijer [MVP]
 
PDF
Continuous Deployment of your Application @jSession#5
Marcin Grzejszczak
 
PDF
How_to_create_modular_microservice_test_projects.pdf
skimorod
 
PPTX
Building high-performance web applications with Preact
Maurice De Beijer [MVP]
 
PPT
Understand release engineering
gaoliang641
 
PPTX
Modernizing Web Apps with .NET 6.pptx
Ed Charbeneau
 
PPTX
Modernizing Web Apps with .NET 6.pptx
Ed Charbeneau
 
PDF
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
IBM UrbanCode Products
 
PPTX
Change management in hybrid landscapes
Chris Kernaghan
 
PDF
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
RapidValue
 
PDF
New ThousandEyes Product Features and Release Highlights: March 2024
ThousandEyes
 
Production-ready Next.js App with Cursor AI
Maurice De Beijer [MVP]
 
Practice TypeScript Techniques Building React Server Components App
Maurice De Beijer [MVP]
 
Continuous Deployment of your Application @JUGtoberfest
Marcin Grzejszczak
 
Continuous Deployment of your Application @SpringOne
ciberkleid
 
Full-stack App in half a Day: Next.js 15 Development Bootcamp
Maurice De Beijer [MVP]
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Marcin Grzejszczak
 
Better React state management with Redux
Maurice De Beijer [MVP]
 
Continuous Deployment to the cloud
VMware Tanzu
 
The new React
Maurice De Beijer [MVP]
 
Why I am hooked on the future of React
Maurice De Beijer [MVP]
 
Continuous Deployment of your Application @jSession#5
Marcin Grzejszczak
 
How_to_create_modular_microservice_test_projects.pdf
skimorod
 
Building high-performance web applications with Preact
Maurice De Beijer [MVP]
 
Understand release engineering
gaoliang641
 
Modernizing Web Apps with .NET 6.pptx
Ed Charbeneau
 
Modernizing Web Apps with .NET 6.pptx
Ed Charbeneau
 
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
IBM UrbanCode Products
 
Change management in hybrid landscapes
Chris Kernaghan
 
Live Webinar- Making Test Automation 10x Faster for Continuous Delivery- By R...
RapidValue
 
New ThousandEyes Product Features and Release Highlights: March 2024
ThousandEyes
 
Ad

More from Maurice De Beijer [MVP] (20)

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
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 Using React, .NET & Azure
Maurice De Beijer [MVP]
 
PPTX
Concurrent Rendering Adventures in React 18
Maurice De Beijer [MVP]
 
PPTX
Why I am hooked on the future of React
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
From zero to hero with the reactive extensions for JavaScript
Maurice De Beijer [MVP]
 
PPTX
Create flexible React applications using GraphQL apis
Maurice De Beijer [MVP]
 
PPTX
Create flexible react applications using GraphQL API's
Maurice De Beijer [MVP]
 
PPTX
Docker for a .NET web developer
Maurice De Beijer [MVP]
 
PPTX
From zero to hero with the reactive extensions for JavaScript
Maurice De Beijer [MVP]
 
PPTX
The productive developer guide to React
Maurice De Beijer [MVP]
 
PPTX
Docker containers on Windows
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]
 
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 Using React, .NET & Azure
Maurice De Beijer [MVP]
 
Concurrent Rendering Adventures in React 18
Maurice De Beijer [MVP]
 
Why I am hooked on the future of React
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]
 
From zero to hero with the reactive extensions for JavaScript
Maurice De Beijer [MVP]
 
Create flexible React applications using GraphQL apis
Maurice De Beijer [MVP]
 
Create flexible react applications using GraphQL API's
Maurice De Beijer [MVP]
 
Docker for a .NET web developer
Maurice De Beijer [MVP]
 
From zero to hero with the reactive extensions for JavaScript
Maurice De Beijer [MVP]
 
The productive developer guide to React
Maurice De Beijer [MVP]
 
Docker containers on Windows
Maurice De Beijer [MVP]
 
Ad

Recently uploaded (20)

PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 

Building Reliable Applications Using React, .NET & Azure

Editor's Notes

  • #2: Repository: http://bit.ly/pro-hooks-2021 Slides: http://theproblemsolver.nl/pro-hooks-2021.pdf