HTML Refresher and Detailed Study - Table of Contents for Post Series

Last updated on 11 Jul 2026

Summary

This summary has been prepared by Gemini based on the details I shared with it, and then reviewed and edited by me.

Phase 1: The Foundational Refresher

Dates: 11 April to 4 May 2026 (part-time and including documentation periods)

Blog posts: Part 1 (TOC) to Part 5 (TOC)

This initial phase began as a refresher on core web concepts. While standard React and Next.js architectures were already familiar territory, this period focused heavily on document-level structure and semantics.

  • Key Work: The study systematically reviewed HTML5 semantic elements (such as footer, aside, and figure), form data handling, character encoding (UTF-8), and data attributes.
  • Security & APIs: DOM security boundaries were explored, specifically noting the differences and XSS vulnerabilities between innerHTML and textContent. Standard, front-facing Web APIs such as Geolocation, Canvas, Storage, and modern Fetch mechanics were also reviewed.
  • The Pivot: The study then moved on to advanced Web APIs provided by the browser engine.

Phase 2: Transitioning to Real-Time & Offline Architectures

Dates: 3 May to 20 May 2026 (part-time and including documentation periods) 

Blog posts: Part 6 (TOC) to Part 9 (Up to Stage 4 of chat tutorial app) (TOC)

The study focused on the browser's native real-time and offline capabilities. A chat application was selected as the ideal testbed for these stateful APIs.

  • Real-Time Data: Work commenced with a soft real-time data visualization app to establish a firm understanding of the WebSocket protocol handshake and framed TCP sockets.
  • The App Shell: The uppercase echo chat tutorial was initiated, implementing a basic Service Worker to manage a Network First caching strategy.
  • Message Queuing: IndexedDB was integrated to handle offline message queuing, bringing the application to Stage 4, where a resilient WebSocket auto-reconnect logic featuring exponential backoff was successfully implemented.

Phase 3: Advanced PWA Features & Local Resilience

Dates: 21 May to 2 June 2026 (part-time and including documentation periods) 

Blog posts: Part 9 (Latter part) (TOC) to Part 12 (Stages 5 to 7 of chat tutorial app) (TOC)

During this phase, the basic chat application was transformed into a sophisticated Progressive Web App (PWA) entirely within a local environment. The resilience mechanisms typically reserved for native mobile applications were engineered natively in the browser.

  • Offline State: Chat history persistence was finalized through IndexedDB.
  • Background Sync: The Service Worker was wired to handle network on/off situations natively using the Background Sync API.
  • Push Notifications: The Web Push API was integrated, requiring the management of VAPID key architecture and the complexities of browser notification permissions, including edge cases related to Chrome's prerendering quirks.

Phase 4: Cloud Deployment & Systems Engineering

Dates: 3 June to 21 June 2026 (part-time, including documentation periods and includes a general break from project work from 14–16 June)

Blog posts: Part 13 (TOC) to Part 15 (TOC)

Moving the application from localhost to the cloud exposed the codebase to production realities. This phase required defensive programming and advanced repository management.

  • Cloud Proxy Defusal: Deploying the backend to Render revealed that cloud load balancers can delay WebSocket close events or mask close codes. Application-level rejections and 100ms timer hacks were engineered to bypass this infrastructure interference.
  • The Outbox Pattern: It was discovered that a dropped internet connection will not trigger a browser offline event if the local LAN remains active. To prevent data loss during these "Silent Drop" scenarios, an enterprise-grade Outbox pattern was implemented.
  • Build Tooling: After finding Netlify's built-in asset optimization deprecated, Vite was adopted for JavaScript minification. The sw.js file was carefully maintained as a classic script to preserve the tutorial's zero-magic architecture.
  • DevOps: Advanced Git operations using git filter-repo were executed to extract the chat-apps directory into its own clean monorepo while preserving specific commit histories.

Phase 5: Architectural Polish, Final Review & Public Announcement

Dates: 22 June to 9 July 2026 (part-time and including documentation periods)

Blog posts: Part 16 (TOC) to Part 17 (TOC)

The final phase focused on rigorous architectural refinement, handling cross-tab state, improving the user experience, and finalizing the educational documentation.

  • MPA Migration: The app was refactored from a Single Page Application (SPA) to a Multi-Page Application (MPA) to cleanly serve the "About" page via the Service Worker cache, avoiding Blogger CORS restrictions. The MPA shift introduced the need in Service Worker Background Sync and Push handlers to differentiate between main chat tab (index.html) and about page (about.html).
  • Mobile UX: Dynamic Viewport Height (dvh) was utilized to prevent mobile on-screen keyboards from breaking the layout, and the connection status bar UI was refined.
  • Finalization: Exhaustive edge-case testing was conducted, Git commits were squashed to create a clean history, companion blog posts were written, and the Stage 8 completion snapshot folder was finalized on 5 July.
  • Public Announcement: Public announcement was done on this blog and on LinkedIn.

Introduction

Period: 11 April 2026 to 5 July 2026 (part-time)

This is a refresher on HTML topics that I had quickly studied perhaps in end 2024 and early 2025, and then referred to when needed for software development learning or work I was doing.

For this refresher, initially I used w3schools.com HTML tutorial. But there were many HTML topics covered by w3schools.com which I had not got into in detail earlier on. This time around I did study most of these topics in some detail.

I also studied some advanced Web API topics like Service Worker, WebSocket and Push notifications which are either not covered or have limited coverage in the w3schools tutorial. The last phase of this study resulted in this advanced echo chat tutorial PWA app deployed on Netlify.

So it is a refresher cum detailed study. I have put up a series of longish blog posts related to this HTML refresher and detailed study, with each post having a Contents section with internal links to the sections. This post lists all the Contents of all the posts in the series with the internal links going directly to the related section in the post.


HTML Refresher and Detailed Study - Part 1

Published: 16 April 2026. Study & Dev work period: 11 to 15 April 2026

Contents

Misc: title attr, formatting elements, link rel (and more)

img element, Image Maps, picture element

Misc: Description lists, boolean attributes, meta viewport, base element (and more)

Misc elements: footer, aside, figure, figcaption, details, summary, time (and more)

Misc: UTF-8, nbsp, Unicode, Emojis (and more)


HTML Refresher and Detailed Study - Part 2

Published: 16 April 2026. Study & Dev work period: 13 to 14 April 2026

Contents

Forms

Some elements not typically used in React projects: datalist, output, datatime-local, input type image

Misc elements: input type number, input range, search

React, Astro and HTML

Misc: autocomplete, input form, formaction, formmethod

canvas and SVG

Misc: video..source element, html plugins, geolocation API, Storage API


HTML Refresher and Detailed Study - Part 3

Published: 16 April 2026. Study & Dev work period: 14 to 15 April 2026 + Additional period between 15 April and 24 April 2026

Contents

Web Workers and Service Workers

HTML Standards and who controls them

Misc Web APIs: Server-Sent Events (EventSource) API, Notifications API, History API, Intersection Observer API

Fetch Web API

Misc: dialog element, Accessibility, search element, Client-Side Web Communication APIs (and more)

General discussion on multi-threading features of Browser and how Browser has evolved into Virtual Operating System


HTML Refresher and Detailed Study - Part 4

Published: 24 April 2026. Study & Dev work period: ~23 to 24 April 2026, 29 April 2026

Contents

Data attributes

XSS security vulnerability of innerHTML; textContent is safe

Misc: Notifications API, IndexedDB, Cookies, Authentication, Fetch API


HTML Refresher and Detailed Study - Part 5

Published: 4 May 2026. Study & Dev work period: Few days prior to 3 May 2026, 3 May 2026

Contents

Misc: <noscript>, aside element not used for sidebar, code and pre elements used together, figure element used with picture element

Misc: HTML entities, symbols and emojis, URL ASCII limitation, URL Encoding, autocomplete enumerated attribute

Misc: Select dropdown size, React apps use custom combobox, picture element, thead, tbody and tfoot

addEventListener safer than inline JS; Vanilla JS vs React security; package.json enables GitHub Dependabot security


HTML Refresher and Detailed Study - Part 6

Published: 5 May 2026. Study & Dev work period: 3 to 5 May 2026

Contents

WebSockets Intro

Vanilla JS real-time data visualization app using Web Sockets, Canvas API and JSON data


HTML Refresher and Detailed Study - Part 7

Published: 7 May 2026. Study & Dev work period: ~5 to 7 May 2026

Contents

Top-Level design of chat application with offline support using WebSockets and Service Worker

Very Basic Service Worker

Service Worker with Offline Caching

Service Worker Misc: Next.js, React, PWA hype


HTML Refresher and Detailed Study - Part 8

Published: 14 May 2026. Study & Dev work period: ~7 to 13 May 2026

Contents

Web Push API

Vanilla JS Chat with WebSockets

Vaibhav Thakur vanilla JS Chat and WebSockets tutorial

Thomas Sentre vanilla JS Chat and WebSockets tutorial

Dave Gray vanilla JS Chat and WebSockets tutorial

Node.js third party ws package (WebSockets) returns Buffers not strings


HTML Refresher and Detailed Study - Part 9

Published: 19 May 2026. Study & Dev work period: 15 to 21 May 2026

Contents (sections and/or jump-links)

Private GitHub repo folder for uppercase Echo Chat server: uppercase-echo-chat
Private GitHub repo folder for advanced version uppercase Echo Chat server: adv-uppercase-echo-chat

Implementation of uppercase Echo Chat application with offline support using WebSockets and Service Worker

Stage 1: Simple delayed uppercase Echo Chat server and client with WebSockets but without Service Worker

Stage 2: Adding Service Worker Network First Caching (Offline App Shell)

Stage 3A: Offline Message Queuing with IndexedDB implemented with custom IndexedDB wrapper functions

Stage 3B: Offline Message Queuing with IndexedDB implemented with idb package

Plan for WebSocket auto-reconnect and advanced Progressive Web App features in uppercase Echo Chat app

Stage 4: WebSocket auto-reconnect

Disabling Live Server browser auto refresh for a project

Implementation of advanced (PWA) version of uppercase Echo Chat application


HTML Refresher and Detailed Study - Part 10

Published: 26 May 2026. Study & Dev work period: 21 to 26 May 2026

Contents (sections and/or jump-links)

Private GitHub repo folder for advanced version uppercase Echo Chat server: adv-uppercase-echo-chat

Stage 6 Background Sync API (Offline Sending) Server refactor

Stage 6 Background Sync API Client refactor


HTML Refresher and Detailed Study - Part 11

Published: 1 June 2026. Study & Dev work period: 27 to 30 May 2026

Contents (sections and/or jump links)

Revisiting Web Push and understanding its usage for real life scenarios

Stage 7: Web Push Notifications Overview

Stage 7 Server Refactoring

Stage 7 Client Refactoring


HTML Refresher and Detailed Study - Part 12

Published: 6 June 2026. Study & Dev work period: 30 May to 2 June 2026

Contents (sections and/or jump links)

Stage 7 Client Refactoring (Continued)


HTML Refresher and Detailed Study - Part 13

Published: 10 June 2026. Study & Dev work period: 3 to 7 June 2026

Contents (sections and/or jump links)

Stage 8: Cloud deployment of tutorial app

Stage 8: Cloud deployment of Delayed uppercase chat app server

Stage 8: Refactoring chat app client (still local) to work with Cloud (Render) server; Some server changes


HTML Refresher and Detailed Study - Part 14

Published: 14 June 2026. Study & Dev work period: 7 to 12 June 2026

Contents (sections and/or jump links)

Stage 8: Cloud client deployment of Delayed uppercase chat app; Some server changes

Stage 8: Client refactoring with Outbox pattern to fix lost user messages for server 'Silent Drop' case

Stage-8: Minification of Client JavaScript code

Stage-8: Testing of app after successful Vite minification of JavaScript sources


HTML Refresher and Detailed Study - Part 15

Published: 21 June 2026. Study & Dev work period: ~12 to 13 June 2026, 17 to 21 June 2026

Contents (sections and/or jump links)

Stage-8: Render server delaying WebSocket close event till after ws.send is used

Stage-8: Further app testing

chat-apps repo created by extracting related folder from larger monorepo

Original repo restructured to remove chat apps folder and commits

Stage-8: Continuing further tutorial chat app testing and improvement


HTML Refresher and Detailed Study - Part 16

Published: 26 June 2026. Study & Dev work period: 22 to 26 June 2026

Contents (sections and/or jump links)

Stage-8: Polishing tutorial chat app and creating support documentation


HTML Refresher and Detailed Study - Part 17

Published: 6 July 2026. Study & Dev work period: 27 June to 9 July 2026

Contents (sections and/or jump links)

Stage-8: Review rounds followed by snapshot folder creation

Stage-8: Public announcement of tutorial echo chat client app


Comments