Web Development Glossary
Key terms from the Web Development course, linked to the lesson that introduces each one.
5,060 terms.
#
- "Inspect"
- or **"Inspect Element"**.
- Lesson 2175 — Inspecting and Selecting ElementsLesson 2442 — Console Logging in Service Workers
- "Preserve log"
- Lesson 2195 — Preserving Log and Console SettingsLesson 2197 — Recording and Filtering Network Activity
- `:active`
- Applies the moment the user presses down on the element, before releasing.
- Lesson 125 — Pseudo-Classes: :hover, :focus, :activeLesson 510 — Triggering Transitions with State Changes
- `:focus`
- Activates when the element receives keyboard focus (usually by pressing Tab) or is clicked.
- Lesson 125 — Pseudo-Classes: :hover, :focus, :activeLesson 510 — Triggering Transitions with State Changes
- `:hover`
- Triggers when the user's mouse cursor is *over* the element (hovering).
- Lesson 125 — Pseudo-Classes: :hover, :focus, :activeLesson 510 — Triggering Transitions with State Changes
- `.arrayBuffer()`
- – Reads the body as raw binary data (returns an ArrayBuffer)
- Lesson 850 — Request Body MethodsLesson 856 — Response Body Methods
- `.blob()`
- – Reads the body as binary data (returns a Blob object)
- Lesson 850 — Request Body MethodsLesson 856 — Response Body Methods
- `.formData()`
- – Parses the body as form data (returns a FormData object)
- Lesson 850 — Request Body MethodsLesson 856 — Response Body Methods
- `.json()`
- – Parses the body as JSON and returns a JavaScript object
- Lesson 850 — Request Body MethodsLesson 856 — Response Body Methods
- `.text()`
- – Reads the body as plain text (a string)
- Lesson 850 — Request Body MethodsLesson 856 — Response Body Methods
- `<footer>`
- Footer information like copyright, links, contact details
- Lesson 998 — Document Structure: Header, Nav, Main, FooterLesson 1067 — HTML5 Landmark Regions
- `<header>`
- The introductory content, typically containing site branding and top-level navigation
- Lesson 998 — Document Structure: Header, Nav, Main, FooterLesson 1067 — HTML5 Landmark Regions
- `<main>`
- The primary content of the page (there should be only one per page)
- Lesson 998 — Document Structure: Header, Nav, Main, FooterLesson 1067 — HTML5 Landmark Regions
- `<nav>`
- Navigation links for major sections of the site or page
- Lesson 998 — Document Structure: Header, Nav, Main, FooterLesson 1067 — HTML5 Landmark Regions
- `Access-Control-Allow-Origin`
- header is how the server tells the browser, "Yes, this origin is allowed to read my response.
- Lesson 863 — Access-Control-Allow-Origin HeaderLesson 864 — Credentials and CORS
- `additions`
- Announce when nodes are added
- Lesson 1027 — aria-atomic and aria-relevantLesson 1114 — aria-relevant for Filtering Changes
- `align-items`
- Aligns individual items within their line
- Lesson 278 — align-content: Multi-Line Cross Axis DistributionLesson 370 — Centered Layouts with Grid
- `all`
- (the default): Animates every animatable property that changes
- Lesson 502 — The transition-property PropertyLesson 1027 — aria-atomic and aria-relevantLesson 1114 — aria-relevant for Filtering Changes
- `animationend`
- – Fires when an animation completes naturally
- Lesson 527 — Animation Events in JavaScriptLesson 742 — Animation and Transition Events
- `animationiteration`
- – Fires each time a looping animation restarts (except the first iteration)
- Lesson 527 — Animation Events in JavaScriptLesson 742 — Animation and Transition Events
- `animationstart`
- – Fires when an animation begins (after any `animation-delay`)
- Lesson 527 — Animation Events in JavaScriptLesson 742 — Animation and Transition Events
- `aria-atomic="false"`
- (default): Only changed content is announced
- Lesson 1027 — aria-atomic and aria-relevantLesson 1113 — aria-atomic for Complete Updates
- `aria-atomic="true"`
- Reads the entire region, not just what changed
- Lesson 927 — Live Region Error AnnouncementsLesson 1027 — aria-atomic and aria-relevantLesson 1113 — aria-atomic for Complete Updates
- `aria-controls`
- pointing to the dropdown list's ID
- Lesson 930 — Select and Combobox PatternsLesson 931 — Autocomplete and Search PatternsLesson 1177 — ARIA Attributes for Tab Components
- `aria-expanded="false"`
- The controlled content is hidden
- Lesson 1022 — State Properties: aria-expanded and aria-checkedLesson 1164 — Menu Button Semantics and ARIALesson 1170 — Nested and Flyout Menus
- `aria-expanded="true"`
- when results are visible
- Lesson 931 — Autocomplete and Search PatternsLesson 1022 — State Properties: aria-expanded and aria- checked
- `aria-labelledby`
- when you genuinely have a visual design constraint (like icon-only buttons in a tight toolbar) but want to avoid creating divergent experiences.
- Lesson 1135 — When NOT to Use Visually Hidden ContentLesson 1177 — ARIA Attributes for Tab Components
- `aria-live="assertive"`
- Interrupts immediately (use sparingly)
- Lesson 927 — Live Region Error AnnouncementsLesson 1112 — aria-live Attribute ValuesLesson 1208 — Live Region Strategies
- `aria-live="off"`
- (or removing the attribute) turns off announcements entirely.
- Lesson 1112 — aria-live Attribute ValuesLesson 1208 — Live Region Strategies
- `aria-live="polite"`
- Announces changes when the user pauses (best for errors)
- Lesson 927 — Live Region Error AnnouncementsLesson 1112 — aria-live Attribute ValuesLesson 1122 — Search Result AnnouncementsLesson 1208 — Live Region Strategies
- `aspect-ratio`
- Targets an exact ratio
- Lesson 396 — Aspect Ratio Media FeaturesLesson 2710 — Preview Dimensions and Aspect Ratios
- `async`
- Non-blocking download, executes ASAP, order not guaranteed
- Lesson 89 — Script Loading StrategiesLesson 1981 — Script Loading Strategies: async vs deferLesson 2048 — async vs defer for Script Loading
- `auto-fit`
- creates tracks only for existing items, then *collapses* any empty ones to zero width.
- Lesson 337 — Auto-Fill vs Auto-Fit: When to Use EachLesson 368 — Responsive Grid Without Media Queries
- `auto`
- (default): No new stacking context is created
- Lesson 234 — Isolation PropertyLesson 264 — The Default Flex Item BehaviorLesson 567 — The font- display PropertyLesson 1249 — Understanding Native Lazy LoadingLesson 1272 — The font-display Property OverviewLesson 2517 — The dir Attribute
- `block`
- Hide text for a short period (~3 seconds), waiting for the custom font.
- Lesson 567 — The font-display PropertyLesson 1272 — The font-display Property OverviewLesson 1277 — font-display: auto Behavior
- `blur`
- fires when an element loses focus (e.
- Lesson 734 — Input Events: focus, blur, focusin, focusoutLesson 914 — Custom Validation on Input Events
- `border-color`
- sets the border hue using any color format you've learned (keywords, hex, RGB, HSL):
- Lesson 199 — Border Width, Style, and ColorLesson 542 — Properties That Trigger Repaint
- `border-style`
- determines the line pattern.
- Lesson 199 — Border Width, Style, and ColorLesson 542 — Properties That Trigger Repaint
- `center`
- Text centers within the container
- Lesson 171 — Text Alignment and JustificationLesson 258 — Main Axis Alignment with justify-contentLesson 259 — Cross Axis Alignment with align-itemsLesson 274 — justify-content: Main Axis AlignmentLesson 278 — align-content: Multi-Line Cross Axis Distribution
- `change`
- fires only when a field loses focus *and* its value has changed
- Lesson 733 — Form Events: submit, change, inputLesson 766 — Delegating Form EventsLesson 914 — Custom Validation on Input Events
- `clamp()`
- keeps a value between a minimum and maximum boundary
- Lesson 161 — min(), max(), and clamp()Lesson 480 — min(), max(), and clamp() for Responsive Sizing
- `column-gap`
- controls horizontal spacing between columns only:
- Lesson 320 — Grid Gaps: gap, row-gap, column-gapLesson 338 — Grid Gaps: gap, row-gap, and column- gap
- `column-reverse`
- Items flow bottom-to-top vertically
- Lesson 257 — flex-direction: Controlling the Main AxisLesson 269 — flex-direction: Row and Column LayoutsLesson 270 — flex-direction: Reverse Variants
- `column`
- Items flow top-to-bottom vertically
- Lesson 257 — flex-direction: Controlling the Main AxisLesson 269 — flex-direction: Row and Column Layouts
- `console.error()`
- Critical problems (like system errors)
- Lesson 2186 — Console.log() and Basic Output MethodsLesson 2244 — console.warn and console.error
- `console.info()`
- Informational updates (like app notifications)
- Lesson 2186 — Console.log() and Basic Output MethodsLesson 2243 — console.log vs console.info vs console.debug
- `console.log()`
- Standard information (like regular text messages)
- Lesson 2186 — Console.log() and Basic Output MethodsLesson 2243 — console.log vs console.info vs console.debug
- `console.warn()`
- Warnings that deserve attention (like low battery alerts)
- Lesson 2186 — Console.log() and Basic Output MethodsLesson 2244 — console.warn and console.error
- `date`
- When the server sent the response
- Lesson 855 — Response HeadersLesson 1024 — aria-current: Indicating Active Items
- `defer`
- Non-blocking download, executes after parsing, in order
- Lesson 89 — Script Loading StrategiesLesson 1981 — Script Loading Strategies: async vs deferLesson 2048 — async vs defer for Script Loading
- `description`
- – Product description
- Lesson 1859 — Product Schema for E-commerceLesson 2304 — Categories and Description
- `dragenter`
- Fires when a dragged element enters the drop zone
- Lesson 739 — Drag and Drop EventsLesson 2677 — The dragenter and dragover Events
- `dragover`
- Fires continuously while hovering over the drop zone (must call `preventDefault()` to allow dropping)
- Lesson 739 — Drag and Drop EventsLesson 2677 — The dragenter and dragover Events
- `ease-in-out`
- – Similar to `ease`, but with more pronounced slow starts and ends.
- Lesson 504 — The transition-timing-function PropertyLesson 519 — The animation-timing-function
- `ease-in`
- – Starts slowly, then accelerates.
- Lesson 504 — The transition-timing-function PropertyLesson 519 — The animation-timing-function
- `ease-out`
- – Starts quickly, then decelerates.
- Lesson 504 — The transition-timing-function PropertyLesson 519 — The animation-timing-function
- `ease`
- – The default.
- Lesson 504 — The transition-timing-function PropertyLesson 519 — The animation-timing-function
- `error`
- Contains error information if something went wrong
- Lesson 1559 — useQuery HookLesson 1668 — Error vs ErrorInfo ObjectsLesson 2692 — FileReader Events and Handlers
- `event.altKey`
- – `true` if Alt was held
- Lesson 732 — KeyboardEvent Properties: key, code, and ModifiersLesson 752 — Modifier Keys: shiftKey, ctrlKey, altKey, and metaKey
- `event.code`
- tells you the *physical key location* on the keyboard, regardless of keyboard layout or modifiers.
- Lesson 732 — KeyboardEvent Properties: key, code, and ModifiersLesson 751 — Keyboard Event Properties: key, code, and keyCode
- `event.ctrlKey`
- – `true` if Ctrl was held
- Lesson 732 — KeyboardEvent Properties: key, code, and ModifiersLesson 752 — Modifier Keys: shiftKey, ctrlKey, altKey, and metaKey
- `event.currentTarget`
- the element where the **listener is attached** (the element running the event handler)
- Lesson 722 — Event Target vs currentTargetLesson 749 — event.target vs event.currentTarget
- `event.key`
- tells you the *character value* produced by the key press.
- Lesson 732 — KeyboardEvent Properties: key, code, and ModifiersLesson 751 — Keyboard Event Properties: key, code, and keyCode
- `event.metaKey`
- – `true` if Meta (Command on Mac, Windows key) was held
- Lesson 732 — KeyboardEvent Properties: key, code, and ModifiersLesson 752 — Modifier Keys: shiftKey, ctrlKey, altKey, and metaKey
- `event.shiftKey`
- – `true` if Shift was held
- Lesson 732 — KeyboardEvent Properties: key, code, and ModifiersLesson 752 — Modifier Keys: shiftKey, ctrlKey, altKey, and metaKey
- `event.target`
- the element where the event **originated** (the actual element clicked, typed into, etc.
- Lesson 722 — Event Target vs currentTargetLesson 749 — event.target vs event.currentTarget
- `exp`
- Expiration timestamp
- Lesson 1579 — JWT Structure: Header, Payload, and SignatureLesson 1581 — Standard JWT Claims
- `fallback`
- A middle ground: brief blocking period (~100ms), then show fallback.
- Lesson 567 — The font-display PropertyLesson 1272 — The font-display Property Overview
- `false`
- No source maps (production default when unspecified).
- Lesson 1395 — Source Maps for DebuggingLesson 1798 — Fallback Behavior for New Pages
- `filter`
- `blur()`, `brightness()`, `drop-shadow()`, etc.
- Lesson 230 — Stacking Contexts Without z-indexLesson 2593 — GPU-Accelerated Properties
- `flex-end`
- Packs all items at the end of the main axis.
- Lesson 258 — Main Axis Alignment with justify-contentLesson 259 — Cross Axis Alignment with align- itemsLesson 274 — justify-content: Main Axis AlignmentLesson 278 — align-content: Multi-Line Cross Axis Distribution
- `flex-start`
- Items align to the start of the cross axis (top for horizontal layouts, left for vertical layouts).
- Lesson 259 — Cross Axis Alignment with align-itemsLesson 274 — justify-content: Main Axis AlignmentLesson 278 — align-content: Multi-Line Cross Axis Distribution
- `gap`
- (from earlier lessons) is often cleaner than margins for spacing between items
- Lesson 265 — Flexbox and the Box ModelLesson 320 — Grid Gaps: gap, row-gap, column-gapLesson 338 — Grid Gaps: gap, row-gap, and column-gap
- `headers`
- An object or `Headers` instance with request headers
- Lesson 831 — The Request Object and Request ConfigurationLesson 853 — Response Object Basics
- `height`
- Exact viewport height (rarely used)
- Lesson 394 — Width and Height Media FeaturesLesson 2040 — Styling SVG Icons with CSS
- `iat`
- Issued at timestamp
- Lesson 1579 — JWT Structure: Header, Payload, and SignatureLesson 1581 — Standard JWT Claims
- `image`
- A representative image URL (required by Google for rich results)
- Lesson 1858 — Article Schema for Blog PostsLesson 1859 — Product Schema for E-commerce
- `initial-scale=1.0`
- sets the starting zoom level to 100% (one CSS pixel equals one device pixel)
- Lesson 83 — Viewport Configuration for Responsive DesignLesson 1829 — The Viewport Meta Tag
- `inline-size`
- Most common; tracks the container's width.
- Lesson 432 — Setting Up Container ContextLesson 462 — Logical Sizing Properties
- `input`
- fires *every single time* a field's value changes (every keystroke, paste, etc.
- Lesson 733 — Form Events: submit, change, inputLesson 766 — Delegating Form EventsLesson 914 — Custom Validation on Input Events
- `Intl.DateTimeFormat`
- formats dates and times:
- Lesson 2534 — Date, Number, and Currency FormattingLesson 2767 — Introduction to the Intl API
- `Intl.NumberFormat`
- formats numbers with proper separators:
- Lesson 2534 — Date, Number, and Currency FormattingLesson 2767 — Introduction to the Intl API
- `isolate`
- Explicitly creates a new stacking context
- Lesson 234 — Isolation PropertyLesson 2518 — CSS direction and unicode-bidi Properties
- `Lax`
- Cookie sent with top-level navigation (clicking links) but not with cross-site POST requests.
- Lesson 1597 — Secure and SameSite Cookie FlagsLesson 2931 — Secure Cookies: Secure and SameSite Flags
- `left`
- Text aligns to the left edge (default for left-to-right languages)
- Lesson 171 — Text Alignment and JustificationLesson 214 — Offset Properties: top, right, bottom, leftLesson 238 — Float Values and Element Behavior
- `linear`
- – The animation moves at a constant speed from start to finish.
- Lesson 504 — The transition-timing-function PropertyLesson 519 — The animation-timing-function
- `load`
- – Fires when the file reading completes successfully.
- Lesson 2692 — FileReader Events and HandlersLesson 2795 — Loading Scripts After Page Interactive
- `loading="auto"`
- (or omitting the attribute entirely) leaves the decision to the browser.
- Lesson 1251 — Eager vs Lazy vs Auto LoadingLesson 1952 — Native Image Lazy Loading with loading="lazy"
- `loading="eager"`
- explicitly tells the browser to download the image immediately, regardless of where it appears on the page.
- Lesson 1251 — Eager vs Lazy vs Auto LoadingLesson 1952 — Native Image Lazy Loading with loading="lazy"
- `loading="lazy"`
- tells the browser to wait before downloading the image until it's needed (typically when it's about to enter the viewport).
- Lesson 1251 — Eager vs Lazy vs Auto LoadingLesson 1952 — Native Image Lazy Loading with loading="lazy"
- `localStorage`
- Data persists indefinitely until explicitly deleted (like a permanent sticky note)
- Lesson 770 — The Web Storage APILesson 1569 — Token-Based Authentication Flow
- `max-width`
- The largest the item can ever grow, even if `flex-grow` wants it bigger
- Lesson 288 — min-width and max-width with FlexboxLesson 390 — Media Query Syntax and StructureLesson 394 — Width and Height Media Features
- `max()`
- picks the *largest* value from a list
- Lesson 161 — min(), max(), and clamp()Lesson 480 — min(), max(), and clamp() for Responsive Sizing
- `method`
- The HTTP method to use, typically `GET` or `POST` (remember these from earlier lessons!
- Lesson 91 — The <form> Element and Form SubmissionLesson 831 — The Request Object and Request Configuration
- `min-width`
- The smallest the item can ever shrink, even if `flex-shrink` wants it smaller
- Lesson 288 — min-width and max-width with FlexboxLesson 390 — Media Query Syntax and StructureLesson 394 — Width and Height Media Features
- `min()`
- picks the *smallest* value from a list
- Lesson 161 — min(), max(), and clamp()Lesson 480 — min(), max(), and clamp() for Responsive Sizing
- `name`
- – The product title
- Lesson 1859 — Product Schema for E-commerceLesson 2298 — Name and Short NameLesson 2667 — Accessing Selected Files
- `none`
- – Leaves text as-is (the default)
- Lesson 173 — Text Transform and CapitalizationLesson 238 — Float Values and Element BehaviorLesson 502 — The transition-property PropertyLesson 523 — The animation-fill-mode PropertyLesson 1597 — Secure and SameSite Cookie FlagsLesson 2931 — Secure Cookies: Secure and SameSite Flags
- `normal`
- (default): Collapses whitespace, wraps text automatically
- Lesson 175 — White Space and Text WrappingLesson 177 — Font Variant and Small CapsLesson 432 — Setting Up Container ContextLesson 522 — The animation-direction PropertyLesson 2518 — CSS direction and unicode-bidi Properties
- `nowrap`
- Collapses whitespace but prevents wrapping—text stays on one line
- Lesson 175 — White Space and Text WrappingLesson 271 — flex-wrap: Controlling Line Breaking
- `onerror`
- event handles any problems during the opening process.
- Lesson 784 — Opening a Database ConnectionLesson 795 — Error Handling and Success Callbacks
- `onsuccess`
- event fires when the connection is ready to use, giving you access to the database through `event.
- Lesson 784 — Opening a Database ConnectionLesson 795 — Error Handling and Success Callbacks
- `opacity`
- Values from 0 to 1 (no unit):
- Lesson 162 — Zero Values and Unitless NumbersLesson 230 — Stacking Contexts Without z-indexLesson 2040 — Styling SVG Icons with CSSLesson 2587 — CSS Animation Performance BenefitsLesson 2593 — GPU-Accelerated Properties
- `optional`
- Ultra-brief blocking (~100ms), then the browser decides whether to use the custom font based on connection speed.
- Lesson 567 — The font-display PropertyLesson 1272 — The font-display Property Overview
- `patternMismatch`
- True when the value doesn't match the `pattern` attribute's regex.
- Lesson 903 — Validity Properties ExplainedLesson 913 — Validity State Properties
- `plugins`
- Lets you add official or third-party Tailwind plugins for extra utilities.
- Lesson 607 — Tailwind Configuration FileLesson 1372 — The vite.config.js File
- `rangeOverflow`
- True when a number exceeds the `max` attribute.
- Lesson 903 — Validity Properties ExplainedLesson 913 — Validity State Properties
- `rangeUnderflow`
- True when a number is below the `min` attribute.
- Lesson 903 — Validity Properties ExplainedLesson 913 — Validity State Properties
- `removals`
- Announce when nodes are removed
- Lesson 1027 — aria-atomic and aria-relevantLesson 1114 — aria-relevant for Filtering Changes
- `replace()`
- – Swaps one class for another
- Lesson 691 — Adding Classes with classListLesson 945 — Navigating with location
- `requestIdleCallback`
- lets you queue non-essential work to run only when the browser has spare time, typically during those brief moments between frames when nothing urgent needs attention.
- Lesson 1988 — Using requestIdleCallback for Non-Critical WorkLesson 2074 — Deferring Non-Critical Work
- `response.ok`
- A boolean that's `true` if the status code is in the 200–299 range (success), `false` otherwise.
- Lesson 828 — The Response Object: Properties and Status HandlingLesson 854 — Response Status and StatusText
- `response.status`
- The numeric HTTP status code (200, 404, 500, etc.
- Lesson 828 — The Response Object: Properties and Status HandlingLesson 854 — Response Status and StatusText
- `response.statusText`
- A human-readable message corresponding to the status code (e.
- Lesson 828 — The Response Object: Properties and Status HandlingLesson 854 — Response Status and StatusText
- `right`
- Text aligns to the right edge
- Lesson 171 — Text Alignment and JustificationLesson 214 — Offset Properties: top, right, bottom, leftLesson 238 — Float Values and Element Behavior
- `role="combobox"`
- on the input/button that triggers the dropdown
- Lesson 930 — Select and Combobox PatternsLesson 931 — Autocomplete and Search Patterns
- `row-gap`
- controls vertical spacing between rows only:
- Lesson 320 — Grid Gaps: gap, row-gap, column-gapLesson 338 — Grid Gaps: gap, row-gap, and column- gap
- `row-reverse`
- Items flow right-to-left horizontally
- Lesson 257 — flex-direction: Controlling the Main AxisLesson 269 — flex-direction: Row and Column LayoutsLesson 270 — flex-direction: Reverse Variants
- `row`
- (default): Items flow left-to-right horizontally
- Lesson 257 — flex-direction: Controlling the Main AxisLesson 269 — flex-direction: Row and Column Layouts
- `SameSite=Lax`
- A balanced approach (now the browser default).
- Lesson 804 — SameSite Attribute for CSRF ProtectionLesson 2913 — SameSite Cookies and CSRF Protection
- `SameSite=None`
- Allows cookies to be sent with all cross-site requests.
- Lesson 804 — SameSite Attribute for CSRF ProtectionLesson 2913 — SameSite Cookies and CSRF Protection
- `SameSite=Strict`
- The strictest protection.
- Lesson 804 — SameSite Attribute for CSRF ProtectionLesson 2913 — SameSite Cookies and CSRF Protection
- `sessionStorage`
- Data disappears when the browser tab closes (like a temporary notepad)
- Lesson 770 — The Web Storage APILesson 1569 — Token-Based Authentication Flow
- `size`
- Tracks both width *and* height.
- Lesson 432 — Setting Up Container ContextLesson 2667 — Accessing Selected Files
- `space-around`
- Distributes items with equal space around each item.
- Lesson 258 — Main Axis Alignment with justify-contentLesson 274 — justify-content: Main Axis AlignmentLesson 278 — align-content: Multi-Line Cross Axis Distribution
- `space-between`
- Distributes items evenly with the first item at the start and the last item at the end.
- Lesson 258 — Main Axis Alignment with justify-contentLesson 274 — justify-content: Main Axis AlignmentLesson 278 — align-content: Multi-Line Cross Axis Distribution
- `space-evenly`
- Distributes items so all spaces (between items and at edges) are exactly equal.
- Lesson 258 — Main Axis Alignment with justify-contentLesson 274 — justify-content: Main Axis AlignmentLesson 275 — justify-content: space-evenly and Safe CenteringLesson 278 — align-content: Multi-Line Cross Axis Distribution
- `step`
- How much the value changes when using arrows (default is `1`)
- Lesson 94 — Number and Range InputsLesson 1024 — aria-current: Indicating Active Items
- `stepMismatch`
- True when a number doesn't align with the `step` attribute (e.
- Lesson 903 — Validity Properties ExplainedLesson 913 — Validity State Properties
- `stretch`
- (default) — Items expand to fill the container's cross-axis height/width.
- Lesson 259 — Cross Axis Alignment with align-itemsLesson 278 — align-content: Multi-Line Cross Axis Distribution
- `Strict`
- Cookie only sent to the same site that set it.
- Lesson 1597 — Secure and SameSite Cookie FlagsLesson 2931 — Secure Cookies: Secure and SameSite Flags
- `sub`
- Subject (user ID)
- Lesson 1579 — JWT Structure: Header, Payload, and SignatureLesson 1581 — Standard JWT Claims
- `submit`
- fires when a form is submitted (button click or Enter key)
- Lesson 733 — Form Events: submit, change, inputLesson 766 — Delegating Form Events
- `swap`
- Show fallback text immediately, then swap in the custom font when ready.
- Lesson 567 — The font-display PropertyLesson 1272 — The font-display Property Overview
- `text`
- Announce text content changes
- Lesson 1027 — aria-atomic and aria-relevantLesson 1114 — aria-relevant for Filtering Changes
- `toLocaleString()`
- uses built-in locale-aware formats without memorizing tokens:
- Lesson 2742 — Luxon: Formatting and LocalizationLesson 2757 — The toLocaleString Family of Methods
- `tooLong`
- True when the value exceeds `maxlength` (only possible programmatically, since browsers block typing past the limit).
- Lesson 903 — Validity Properties ExplainedLesson 913 — Validity State Properties
- `tooShort`
- True when the value is shorter than `minlength`.
- Lesson 903 — Validity Properties ExplainedLesson 913 — Validity State Properties
- `transform`
- `translate()`, `scale()`, `rotate()`, etc.
- Lesson 230 — Stacking Contexts Without z-indexLesson 2587 — CSS Animation Performance BenefitsLesson 2593 — GPU-Accelerated Properties
- `true`
- Generic current item (use specific values when possible)
- Lesson 1024 — aria-current: Indicating Active ItemsLesson 1798 — Fallback Behavior for New Pages
- `type`
- MIME type (usually `image/png` or `image/webp`)
- Lesson 2299 — Icons and Splash ScreensLesson 2667 — Accessing Selected Files
- `typeMismatch`
- True when the value doesn't match the input's type (e.
- Lesson 903 — Validity Properties ExplainedLesson 913 — Validity State Properties
- `url`
- The URL of the page that made the change
- Lesson 776 — The storage EventLesson 853 — Response Object Basics
- `valueMissing`
- True when a `required` field is empty.
- Lesson 903 — Validity Properties ExplainedLesson 913 — Validity State Properties
- `vh`
- (viewport height): 1vh = 1% of the viewport's height
- Lesson 384 — Viewport Units: vw, vh, vmin, vmaxLesson 407 — Viewport Units for Scaling
- `vmax`
- 1vmax = 1% of the viewport's *larger* dimension
- Lesson 384 — Viewport Units: vw, vh, vmin, vmaxLesson 407 — Viewport Units for Scaling
- `vmin`
- 1vmin = 1% of the viewport's *smaller* dimension
- Lesson 384 — Viewport Units: vw, vh, vmin, vmaxLesson 407 — Viewport Units for Scaling
- `vw`
- (viewport width): 1vw = 1% of the viewport's width
- Lesson 384 — Viewport Units: vw, vh, vmin, vmaxLesson 407 — Viewport Units for Scaling
- `width`
- Exact viewport width (rarely used)
- Lesson 394 — Width and Height Media FeaturesLesson 2040 — Styling SVG Icons with CSS
- `width=device-width`
- sets the page width to match the device's actual screen width (not a fake 980px)
- Lesson 83 — Viewport Configuration for Responsive DesignLesson 378 — The Viewport Meta TagLesson 1829 — The Viewport Meta Tag
- 1. Viewport Width
- Lesson 420 — How Browsers Choose from srcsetLesson 1214 — How Browsers Choose from srcset
- 10-100x faster
- than JavaScript bundlers on real-world projects.
- Lesson 1400 — esbuild: The Speed ChampionLesson 1403 — Turbopack and the Rust Wave
- 16.67 milliseconds
- per frame.
- Lesson 2581 — Performance OptimizationLesson 2591 — Understanding the 60fps Target
- 200 OK
- – "Here's exactly what you asked for!
- Lesson 9 — Status Codes: What the Server Says BackLesson 1485 — PUT: Replacing ResourcesLesson 1487 — DELETE: Removing ResourcesLesson 1488 — 2xx Success Status CodesLesson 1494 — Status Code Response Bodies
- 201 Created
- status code—not 200 OK.
- Lesson 1484 — POST: Creating ResourcesLesson 1488 — 2xx Success Status CodesLesson 1494 — Status Code Response Bodies
- 204 No Content
- Resource updated successfully, but the server returns no body (more efficient when the client already knows the result)
- Lesson 1485 — PUT: Replacing ResourcesLesson 1487 — DELETE: Removing ResourcesLesson 1488 — 2xx Success Status CodesLesson 1494 — Status Code Response Bodies
- 401 Unauthorized
- status code means the request lacks valid authentication credentials.
- Lesson 1490 — 4xx Client Error Codes: 400 and 401Lesson 1657 — Understanding 401 UnauthorizedLesson 1658 — Understanding 403 ForbiddenLesson 1659 — Detecting 401 Responses
- 403 Forbidden
- – "That exists, but you can't access it.
- Lesson 9 — Status Codes: What the Server Says BackLesson 1491 — 4xx Client Error Codes: 403 and 404Lesson 1658 — Understanding 403 Forbidden
- 404 Not Found
- – "That page doesn't exist.
- Lesson 9 — Status Codes: What the Server Says BackLesson 1491 — 4xx Client Error Codes: 403 and 404
- 500 Internal Server Error
- – "Something broke on my end.
- Lesson 9 — Status Codes: What the Server Says BackLesson 1493 — 5xx Server Error Status Codes
- 50ms
- (main thread quiet for at least 5 seconds)
- Lesson 1909 — Time to Interactive (TTI)Lesson 2059 — Breaking Up Long Tasks
- 75th percentile
- of all page loads.
- Lesson 1891 — LCP Thresholds and ScoringLesson 1913 — Percentile AnalysisLesson 1926 — Chrome User Experience Report (CrUX)
A
- Aborted
- Something failed (fires `onerror` or `onabort`)
- Lesson 788 — Transactions: Read, Write, and Lifecycle
- About page
- Every 86400 seconds/24 hours (rarely changes)
- Lesson 1802 — Content Freshness vs Build Time Trade-offs
- Above-the-fold content
- hydrates immediately (visible on page load)
- Lesson 1751 — Progressive Hydration
- Above-the-fold images
- The hero image or logo should load immediately (use `loading="eager"` or omit the attribute)
- Lesson 1250 — The loading='lazy' Attribute
- Absolute expiration
- Hard cutoff regardless of activity (for sensitive operations)
- Lesson 1570 — Session Storage and Management
- Absolute positioning
- anchors an element relative to its **nearest positioned ancestor** (an ancestor with `position: relative`, `absolute`, or `fixed`).
- Lesson 221 — Fixed vs Absolute Positioning
- absolute units
- measurements that always represent the same physical or screen size, regardless of parent elements or user settings.
- Lesson 154 — Absolute Units: px, pt, cm, mm, inLesson 168 — Font Size: Absolute and Relative Units
- Absolute URL
- `href="https://example.
- Lesson 72 — Hyperlinks FundamentalsLesson 1875 — Linking Sitemap in Robots.txt
- Accelerates time-to-interactive
- Browser focuses on what's immediately visible
- Lesson 1951 — What is Lazy Loading and Why It Matters
- Accept-Encoding
- header is your browser's way of saying "I can digest these compression formats.
- Lesson 2134 — Content-Encoding and Accept-Encoding Headers
- Accept-Language header or navigator.languages
- (browser/system settings)
- Lesson 2502 — Fallback Chains for Locale Resolution
- Accepted categories
- Verify their cookies appear and scripts execute
- Lesson 2974 — Testing and Auditing Cookie Consent
- access token
- (often a JWT)
- Lesson 1569 — Token-Based Authentication FlowLesson 1599 — Token Storage in Single-Page ApplicationsLesson 1600 — Refresh Token Storage StrategyLesson 1605 — Why Refresh Tokens ExistLesson 1619 — OAuth Scopes and PermissionsLesson 2923 — Token Expiration and Automatic Renewal
- Accessibility
- Screen readers and other assistive technologies can focus on the HTML structure without fighting through presentation details.
- Lesson 32 — CSS Standardization and the Separation of ConcernsLesson 44 — The Importance of Keeping Pillars SeparateLesson 65 — Headings Hierarchy (h1-h6)Lesson 113 — Table Caption with <caption>Lesson 2223 — What Lighthouse Measures and Why It Matters
- Accessibility barriers
- for screen readers navigating malformed structure
- Lesson 1446 — Why Lint HTML? Catching Errors Early
- Accessibility Insights
- includes a "Tab Stops" feature that numbers elements as you tab
- Lesson 1053 — Testing Tab Order Without a Mouse
- Accessibility pane
- (often alongside Computed, Layout, and Event Listeners tabs).
- Lesson 2184 — Accessibility Tree Inspection
- accessibility tree
- the structure assistive technologies use to navigate your page—while keeping them visually present.
- Lesson 1023 — aria-hidden: Removing from Accessibility TreeLesson 2184 — Accessibility Tree Inspection
- Accessibility violations
- Missing `alt` text, improper heading hierarchy, inadequate ARIA labels
- Lesson 1446 — Why Lint HTML? Catching Errors Early
- Accessible to all developers
- Everyone understands `font-weight`
- Lesson 1290 — Standard Properties vs Variation Settings
- Accordion-style expansion
- For navigation menus, expanding sections inline (without overlays) can feel more intuitive than trying to maintain desktop-style flyouts.
- Lesson 1171 — Mobile-Friendly Dropdown Patterns
- Accordions
- (collapsible content sections)
- Lesson 1031 — When Semantic HTML Doesn't ExistLesson 1032 — ARIA for Complex Interactive Widgets
- Action buttons
- Add visible or visually-hidden buttons near draggable items (e.
- Lesson 1207 — Drag and Drop AccessibilityLesson 2352 — Notification Actions and Click Handling
- Action-oriented
- Use verbs like "Learn," "Discover," "Get," or "Find"
- Lesson 1826 — The Meta Description Tag
- Action-Oriented Labels
- Use "Continue with Google" or "Sign in with GitHub" rather than just "Google"—makes the action explicit.
- Lesson 1624 — Social Login UI Patterns
- Actionability
- Lesson 1675 — User-Friendly Error Message Principles
- Actionable when possible
- "We're aware of the issue and working to fix it.
- Lesson 1680 — Server Error Messages (5xx)
- activate event
- , call `clients.
- Lesson 2321 — Claiming Clients ImmediatelyLesson 2397 — Versioned Cache Keys
- Activation phase
- Once all tabs close (or `skipWaiting()` is called), the new service worker activates and runs cleanup
- Lesson 2423 — Precache Update Flow
- Activation state
- Current phase in the lifecycle
- Lesson 2238 — Service Worker Registration and Lifecycle
- Active maintenance
- Recent commits and security patches
- Lesson 1626 — OAuth Libraries and Security Best Practices
- Active Mixed Content
- (scripts, stylesheets, iframes, XHR/fetch requests) is **blocked automatically**.
- Lesson 2928 — Mixed Content: Blocking and Warnings
- Active use
- – Percentage rollouts, A/B testing, targeting
- Lesson 2828 — Flag Lifecycle and Technical Debt
- Add a new class
- that contains the `background-image` CSS rule
- Lesson 1256 — Lazy Loading Background Images
- Add before animation
- Set `will-change` just before animating, then remove it afterward:
- Lesson 2596 — The Composite Layer Strategy
- Add complexity gradually
- larger screens get *additional* rules, not replacement rules
- Lesson 380 — Mobile-First Philosophy
- Add timing delays
- before removing toasts from the DOM—give screen readers time to announce before the element disappears (typically 150-200ms minimum after visual dismissal).
- Lesson 1119 — Toast Notification Patterns
- Add variable font support
- Use `@supports` to override with variable fonts only where supported
- Lesson 1292 — Browser Support and Fallbacks
- Adding elements
- After editing HTML or duplicating, new elements appear immediately in the rendered page.
- Lesson 2178 — Adding and Removing Elements
- Additive changes first
- Add new object stores/indexes without removing old ones
- Lesson 796 — IndexedDB Wrappers and Best Practices
- Adjacent Sibling (`+`)
- Selects *only* the very next sibling immediately following the element
- Lesson 124 — Combinators: Adjacent and General Sibling
- Adjusting alignment
- Fine-tune positioning when an element needs to break out of its normal flow slightly.
- Lesson 149 — Negative Margins
- Adjusting grid layouts
- when optional sections have no data
- Lesson 453 — :empty for Conditional Content Display
- Admin
- Full system access, user management, configuration
- Lesson 1628 — Role-Based Access Control (RBAC) Fundamentals
- Adobe Fonts
- (formerly Typekit) offers variable fonts to Creative Cloud subscribers.
- Lesson 581 — Finding and Loading Variable Fonts
- Advanced easing
- Custom bezier curves, bounce, elastic effects beyond CSS's limited easing functions
- Lesson 2546 — GSAP Overview and Why Use It
- Advantages
- Lesson 659 — Performance Implications of Utility-First CSSLesson 1768 — Build Time vs Request TimeLesson 2039 — Icon Systems: Sprite Sheets vs Symbol DefinitionsLesson 2879 — X-Frame-Options vs frame-ancestors
- Advertising
- or promotional content
- Lesson 52 — The <aside> ElementLesson 2966 — Essential vs Non-Essential Cookies
- After 60 seconds
- The *next* user still gets the cached version, but triggers a background rebuild
- Lesson 1796 — Configuring Revalidation Intervals
- After consent
- Lesson 2971 — Blocking Scripts Based on Consent
- After data loads
- – When resource-specific permissions arrive from the API
- Lesson 1639 — Permission Checking Fundamentals
- After demonstrating value
- Let users experience your app first
- Lesson 2346 — Permission Best Practices and Timing
- After explicit opt-in
- Show a custom UI explaining benefits *before* triggering the browser's permission prompt
- Lesson 2346 — Permission Best Practices and Timing
- After Form Submission
- Lesson 935 — Focus Management in Forms
- After generation
- The newly-generated page is cached as a static file for all future visitors
- Lesson 1789 — Fallback Pages and On-Demand Generation
- After meaningful interaction
- User completed a task (searched products, read an article, created something)
- Lesson 2360 — Strategic Prompt Timing
- AggregateRating
- schema markup that tells search engines exactly what people think about your product or service.
- Lesson 1863 — Review and Rating Schema
- Aggressive minification
- Removes whitespace, shortens variable names
- Lesson 1393 — Development vs Production Mode
- Alert
- Assertive, interrupts immediately → "Connection lost.
- Lesson 1116 — Alert Role for Urgent Messages
- Alert you immediately
- when performance drops below thresholds
- Lesson 1927 — Performance Monitoring Services
- Algorithm Optimization
- Lesson 2073 — Optimizing Heavy Computations
- Aliases
- let you rename fields in the response so they don't collide.
- Lesson 1527 — Aliases and FragmentsLesson 1534 — Aliases for Multiple Queries
- Align items
- vertically or horizontally without complex positioning tricks
- Lesson 253 — What is Flexbox and Why Use It
- Alignment tricks
- Use `align-items: center` to keep labels vertically centered with taller inputs like textareas, and `justify-content: space-between` to push labels and inputs to opposite ends if needed.
- Lesson 302 — Form Layouts with Flexbox
- all
- grid items within their respective grid cells.
- Lesson 370 — Centered Layouts with GridLesson 679 — document.querySelectorAll()Lesson 706 — childNodes vs childrenLesson 731 — Keyboard Events: keydown, keyup, keypressLesson 1211 — When to Use Native vs CustomLesson 1250 — The loading='lazy' AttributeLesson 1635 — Multiple Role Checking StrategiesLesson 1883 — Routing and Crawlability (+1 more)
- All heading levels
- (h1–h6) with actual content, not just "Heading 1"
- Lesson 594 — Documentation and Type Specimens
- All storage is cleared
- once the private session ends—nothing carries over to normal browsing
- Lesson 781 — Privacy Modes and Storage
- Allow
- Explicitly permits access (useful for allowing specific files within a disallowed directory)
- Lesson 1873 — Robots.txt Fundamentals
- Allow or redirect
- render the page if authorized, otherwise redirect to a login or error page
- Lesson 1631 — Route Protection with Role Checks
- Allowlist approach
- Store valid refresh tokens in a database with user ID and expiration.
- Lesson 1613 — Refresh Token Revocation
- alpha channels
- when you want transparent backgrounds but solid text, or vice versa.
- Lesson 184 — Alpha Transparency and OpacityLesson 192 — Background Color and Transparency
- ALPN
- (Application-Layer Protocol Negotiation) during the TLS handshake to determine which HTTP version to use.
- Lesson 2130 — Detecting and Leveraging HTTP/2 and HTTP/3
- Already loaded
- System fonts (Arial, Georgia) need no preloading
- Lesson 1295 — When to Preload Fonts vs When Not To
- Already-compressed formats
- (JPEG, PNG, MP4): Little to no benefit—don't bother
- Lesson 2132 — Gzip Compression AlgorithmLesson 2135 — What to Compress and What Not to Compress
- Also dangerous
- An attacker who can control strings passed to `eval()` can execute arbitrary code.
- Lesson 2853 — CSP Source Keywords: 'self', 'unsafe-inline', 'unsafe-eval'
- Alt Attributes
- Rules ensure every `<img>` has an `alt` attribute.
- Lesson 1449 — Accessibility Rules in HTML Linters
- Alt+S
- is safer than just **S** because the latter would interfere with typing.
- Lesson 1096 — Keyboard Shortcut Handlers
- Always call `event.preventDefault()`
- in the drop handler, or the browser will try to navigate to the dropped file instead of letting your code handle it.
- Lesson 2678 — The drop Event and DataTransfer
- Always include a fallback
- Lesson 1495 — Handling Unexpected Status Codes
- Always Update Critical Assets
- Lesson 2385 — Lifecycle Best Practices
- Always use gzip for
- Lesson 2132 — Gzip Compression Algorithm
- Always-on server instances
- (EC2, DigitalOcean droplets, traditional VPS)
- Lesson 1728 — Infrastructure and Hosting Requirements
- Ambiguous links
- Lesson 1019 — aria-label: Providing Accessible Names
- Ambiguous times
- When clocks "fall back" (3:00 AM → 2:00 AM), times between 2:00 and 3:00 occur *twice*.
- Lesson 2734 — Daylight Saving Time Edge Cases
- Analogy
- Think of ordering a meal kit.
- Lesson 12 — Client-Side vs Server-SideLesson 43 — Graceful Degradation vs Progressive EnhancementLesson 123 — Combinators: Descendant and ChildLesson 128 — Pseudo-Elements: ::before and ::afterLesson 155 — Relative Units: em and remLesson 216 — Absolute Positioning FundamentalsLesson 225 — Common Positioning PitfallsLesson 256 — The Main Axis and Cross Axis (+36 more)
- Analytics Crawlers
- Google Analytics, SEMrush, and other marketing tools need to read page content to track conversions and user paths.
- Lesson 1759 — Marketing and Landing Pages
- Analytics/Performance
- Measure traffic, user behavior, site performance
- Lesson 2969 — Granular Cookie Category Controls
- Analytics/tracking scripts
- `Network-Only` — not critical, and old data is worthless.
- Lesson 2394 — Choosing the Right Strategy per Resource
- Analyze bundles
- – understand what code is where in your build reports
- Lesson 1420 — Chunk Naming and Output
- Analyze content similarity
- Compare keywords, titles, or descriptions
- Lesson 1787 — Related Content and Computed Fields
- Ancestor filtering
- Toggle "Ancestors" to see if parent elements are interfering with event flow
- Lesson 2185 — Event Listeners Panel
- Android + Chrome
- Lesson 2290 — Remote Debugging
- Angular
- Angular's CLI includes template linting via `@angular-eslint`
- Lesson 1450 — Linting HTML in Templates and Components
- Animates anything
- Not just CSS properties—SVG attributes, canvas values, JavaScript objects
- Lesson 2560 — GSAP vs CSS Animations
- Animation
- (like GIF, but more efficient)
- Lesson 1999 — WebP: Modern Image Format BasicsLesson 2650 — Theming and Custom Styles
- Animation-ready
- Smooth transitions work naturally
- Lesson 1290 — Standard Properties vs Variation SettingsLesson 2601 — SVG Fundamentals for Data Visualization
- Animations
- Elements moving without proper transforms
- Lesson 1895 — Cumulative Layout Shift (CLS) Explained
- Annotations
- Call out specific data points with explanatory text
- Lesson 2608 — SVG Text and Labels in Charts
- Announce it immediately
- using `aria-live` or role attributes
- Lesson 1120 — Form Validation Announcements
- Announce zero results
- Users need to know when nothing matched
- Lesson 1122 — Search Result Announcements
- Announcement order
- Does content announce in a logical sequence?
- Lesson 1099 — Why Screen Reader Testing is Essential
- Anonymous tracking
- collects data with *no identifiers whatsoever*.
- Lesson 2980 — Anonymous vs Pseudonymous Tracking
- any
- available input can hover (like a touchscreen laptop with a mouse plugged in).
- Lesson 398 — Hover and Pointer Media FeaturesLesson 442 — :is() and :where() for Grouping SelectorsLesson 709 — nextElementSibling and previousElementSiblingLesson 1589 — Automatic Token Inclusion with CookiesLesson 1635 — Multiple Role Checking Strategies
- Any conceptual entity
- `/search`, `/dashboard`, `/settings`
- Lesson 1471 — Resources and Resource Identifiers
- Apache
- one of the oldest and most widely used
- Lesson 10 — What is a Web Server?Lesson 984 — Server Configuration for SPA Routing
- Apache (.htaccess)
- Lesson 974 — SEO and Server Configuration for History API Routes
- ApexCharts
- delivers feature-rich, modern charts with extensive built-in interactivity—zooming, tooltips, drill- downs—out of the box.
- Lesson 2643 — Overview of Popular Charting LibrariesLesson 2649 — Updating Charts with Live Data
- API Access
- Your app uses the token to call APIs on the user's behalf
- Lesson 1615 — OAuth 2.0 Flow Overview
- API Call Duration
- Which backend requests are dragging performance down
- Lesson 2816 — Performance Monitoring Integration
- API calls
- Monitor request frequency during development
- Lesson 2250 — console.count and console.countReset
- API data
- (feeds, user profiles): `Network-First` or `Stale-While-Revalidate` — needs to be current but should have offline fallback.
- Lesson 2394 — Choosing the Right Strategy per Resource
- API keys
- or authentication tokens for secure access
- Lesson 1781 — Headless CMS Integration Fundamentals
- API responses
- that change frequently
- Lesson 2153 — Network-First StrategyLesson 2399 — Handling Different Content Types
- API versioning
- when URL-based versioning isn't preferred
- Lesson 1504 — Custom Headers and API ConventionsLesson 2381 — Handling Version Mismatches
- APIs
- expose data and functionality in a standard format (usually REST or GraphQL)
- Lesson 1817 — Decoupling Frontend from BackendLesson 2540 — Content Negotiation vs Explicit URLs
- App Shell
- (HTML, core CSS/JS): `Cache-First` — these rarely change and are essential for the app to render.
- Lesson 2394 — Choosing the Right Strategy per Resource
- Append results
- Add new items to the existing list (don't replace)
- Lesson 1513 — Load More Button Pattern
- application
- requesting access to protected resources.
- Lesson 1616 — OAuth Roles and TerminologyLesson 2234 — Inspecting localStorage and sessionStorageLesson 2307 — Testing and ValidationLesson 2342 — Testing Background Sync in DevelopmentLesson 2414 — Debugging Workbox in DevToolsLesson 2436 — DevTools Service Worker PanelLesson 2439 — Clearing Cache StorageLesson 2440 — Unregister and Hard Reload (+1 more)
- Application → Service Workers
- section shows your worker's state, scope, and update status.
- Lesson 2414 — Debugging Workbox in DevToolsLesson 2438 — Update on Reload and Skip Waiting
- Application menus
- contain commands that execute actions within the current page—like "Copy," "Delete," or "Export.
- Lesson 1169 — Navigation Menus vs Application Menus
- Application mode
- `role="application"` tells screen readers to pass all keyboard events to your JavaScript instead of using their normal document navigation
- Lesson 1036 — ARIA for Application-Like InterfacesLesson 1165 — Menu and Menuitem Roles
- Application panel
- is your control center for everything related to a website's client-side storage, Progressive Web App (PWA) capabilities, and background processes.
- Lesson 2233 — Application Panel Overview and NavigationLesson 2235 — IndexedDB Inspection and DebuggingLesson 2237 — Cache Storage InspectionLesson 2238 — Service Worker Registration and LifecycleLesson 2239 — Web App Manifest ValidationLesson 2240 — Background Services MonitoringLesson 2241 — Storage Quota and Usage Analysis
- Application Type
- Lesson 1577 — Choosing the Right Authentication Strategy
- Apply heavy CSS blur
- to make it look soft and intentional
- Lesson 2031 — Blur-Up Technique Implementation
- Apply the adjustment
- using the `size-adjust` property you learned previously
- Lesson 1304 — Matching Font Aspect Ratios
- Applying theme classes
- at the root level (like `<body class="theme-brand-a">`) that change which custom properties are active
- Lesson 653 — Multi-Theme Architecture Patterns
- Arabic
- , **Hebrew**, **Persian (Farsi)**, and **Urdu**.
- Lesson 2516 — Understanding Right-to-Left LanguagesLesson 2531 — Pluralization Rules Across Languages
- Arbitrary values
- `w-[247px]`, `w-[80%]`, `w-[50vw]` (exact custom sizes)
- Lesson 619 — Sizing: Width and Height
- Arbitrary variants
- let you write these one-off conditions directly in your class names using square brackets.
- Lesson 642 — Arbitrary Variants
- ARIA
- stands for **Accessible Rich Internet Applications**.
- Lesson 1012 — What is ARIA and When Do You Need It?
- ARIA Attributes
- Use `role="list"` and `role="listitem"` explicitly.
- Lesson 2105 — Accessibility Considerations for Virtual ListsLesson 2184 — Accessibility Tree Inspection
- ARIA roles
- Lesson 1200 — Listbox Pattern
- ARIA states
- Lesson 1200 — Listbox Pattern
- ARIA Validity
- Linters verify that `role` attributes are valid and that ARIA attributes like `aria-label` or `aria- labelledby` are used correctly and only on elements that support them.
- Lesson 1449 — Accessibility Rules in HTML Linters
- ArrayBuffer
- represents raw binary data in JavaScript—think of it as a fixed-length container of bytes with no inherent structure.
- Lesson 2691 — Reading Files as ArrayBuffer
- Arrow Key Navigation
- Lesson 1189 — Keyboard Navigation Requirements
- Arrow keys
- Navigate options
- Lesson 930 — Select and Combobox PatternsLesson 933 — Date and Time Picker AccessibilityLesson 1073 — Arrow Key Navigation PatternsLesson 1173 — Select-Style Custom DropdownsLesson 1186 — Responsive Patterns: Tabs to AccordionLesson 1200 — Listbox PatternLesson 1206 — Date Picker PatternLesson 2175 — Inspecting and Selecting Elements
- Arrow keys move focus
- – JavaScript listens for `ArrowUp`, `ArrowDown`, `ArrowLeft`, `ArrowRight`
- Lesson 1073 — Arrow Key Navigation Patterns
- art direction
- , and `<picture>` is your tool.
- Lesson 421 — Art Direction with the Picture ElementLesson 1227 — Understanding Art Direction in Responsive ImagesLesson 1231 — Cropping for Different Aspect Ratios
- Article
- , **Event**, *and* **LocalBusiness** schemas all at once.
- Lesson 1866 — Multiple Schemas on One Page
- Ascent
- is the distance from the baseline (where letters sit) to the top of the tallest characters.
- Lesson 1302 — Measuring Font Metrics: Ascent, Descent, and Line GapLesson 1314 — Matching Fallback Font Metrics
- aspect ratio
- is the relationship between width and height (like 16:9 for widescreen or 1:1 for squares).
- Lesson 290 — Aspect Ratios and Flex ItemsLesson 396 — Aspect Ratio Media FeaturesLesson 1304 — Matching Font Aspect RatiosLesson 1838 — Open Graph Image Requirements
- Aspect ratio boxes
- using `padding-top` percentage tricks (though modern CSS `aspect-ratio` is cleaner)
- Lesson 2027 — Why Placeholders MatterLesson 2036 — Choosing the Right Strategy
- Assertions
- specific metrics like First Contentful Paint < 2s or Total Bundle Size < 300KB
- Lesson 2231 — Lighthouse CI for Continuous Monitoring
- Asset transformations
- Images get optimized, styles get processed, all transparently
- Lesson 1402 — Parcel: Zero Configuration Bundling
- Assets referenced by HTML
- directly, not through JavaScript imports
- Lesson 1379 — Public Directory and Static Assets
- Assume success
- and mark the file as complete once upload finishes
- Lesson 2720 — Upload with Optimistic UI Updates
- Astro
- Islands architecture with zero-JS-by-default, hydrating only interactive components
- Lesson 1755 — Hydration in Different Frameworks
- Asymmetric Designs
- Decorative elements like diagonal cuts, ribbon corners, or wave patterns don't auto-flip.
- Lesson 2526 — RTL-Specific Edge Cases
- async
- Order delivery, continue your day, cook **the moment it arrives** (even mid-task)
- Lesson 2792 — async vs defer AttributesLesson 2800 — Script Loading Best Practices
- Async validation
- Server-side checks (like username availability) that need complete context
- Lesson 918 — Field-Level vs Form-Level Validation
- Asynchronous
- Unlike `localStorage`'s synchronous API, IndexedDB operations don't block the main thread, keeping your UI responsive.
- Lesson 782 — What is IndexedDB and When to Use ItLesson 783 — IndexedDB vs localStorage: Key DifferencesLesson 850 — Request Body MethodsLesson 1919 — Performance Observer API
- Asynchronous Code
- Lesson 1671 — Errors That Boundaries Don't CatchLesson 2058 — Synchronous vs Asynchronous Code
- asynchronously
- (non-blocking).
- Lesson 821 — Performance CharacteristicsLesson 2687 — FileReader API Overview
- At build time
- Generate only your most critical pages (homepage, popular routes)
- Lesson 1789 — Fallback Pages and On-Demand Generation
- At the same time
- CSS, JavaScript, and images all start downloading
- Lesson 2168 — Serial vs Parallel Request Patterns
- Atomic CSS
- philosophy you learned earlier, but emphasizes pragmatic utilities over truly atomic (one- property) classes.
- Lesson 605 — What is Utility-First CSS
- Attach to shadow root
- for encapsulation
- Lesson 2485 — Templates and Slots Pattern: Reusable Component Markup
- Attacker gains access
- to cookies, tokens, or performs actions as the victim
- Lesson 2893 — Reflected XSS Attacks
- Attempt token refresh
- – If using refresh tokens, try obtaining a new access token silently
- Lesson 1657 — Understanding 401 UnauthorizedLesson 1663 — Token Refresh on 401
- Attribute selectors
- let you write CSS rules that match elements based on any HTML attribute and its value.
- Lesson 122 — Attribute SelectorsLesson 137 — Selector Performance ConsiderationsLesson 642 — Arbitrary Variants
- attribution
- Context about what caused it (often limited for security)
- Lesson 1986 — Identifying Long Tasks with Performance APILesson 2070 — The Long Tasks API
- Audit regularly
- Use Chrome DevTools' Coverage tab to identify unused tracking code.
- Lesson 2787 — Performance Impact of AnalyticsLesson 2828 — Flag Lifecycle and Technical DebtLesson 2951 — Scoped Packages and Registry Security
- Audit Trail
- Refresh token usage can be logged server-side, tracking when and where new access tokens are issued.
- Lesson 1605 — Why Refresh Tokens Exist
- Audit your actual usage
- do you need 20 functions or just 3?
- Lesson 2744 — Tree-Shaking and Bundle Size
- Australia
- references WCAG in its Disability Discrimination Act
- Lesson 991 — Legal Requirements and Standards Compliance
- Authenticate connections
- before accepting them—verify user identity
- Lesson 881 — WebSocket Security Considerations
- authentication
- and **authorization** solve completely different problems in web security.
- Lesson 1566 — Authentication vs Authorization: Core DistinctionLesson 1615 — OAuth 2.0 Flow OverviewLesson 1627 — Understanding Authorization vs AuthenticationLesson 1657 — Understanding 401 UnauthorizedLesson 1792 — Preview Modes for Draft ContentLesson 2927 — Why HTTPS is Essential for Modern Web Apps
- Authentication happens first
- Lesson 1627 — Understanding Authorization vs Authentication
- Authorization
- Bearer tokens or API keys
- Lesson 1500 — Setting Request Headers with FetchLesson 1566 — Authentication vs Authorization: Core DistinctionLesson 1615 — OAuth 2.0 Flow OverviewLesson 1627 — Understanding Authorization vs Authentication
- Authorization Code
- The server redirects back to your app with a temporary code (not a token yet!
- Lesson 1615 — OAuth 2.0 Flow Overview
- Authorization Code Flow
- (from lesson 1617), scopes are included in the initial authorization request:
- Lesson 1619 — OAuth Scopes and Permissions
- Auto
- Let the browser calculate the size (the default)
- Lesson 141 — Width and Height FundamentalsLesson 282 — flex-basis: Setting Initial Item SizeLesson 619 — Sizing: Width and Height
- Auto Rename Tag
- When you change an opening tag like `<div>`, the closing `</div>` updates automatically
- Lesson 1462 — VS Code Extensions for Web Development
- Auto-detection
- When Parcel encounters an import, it automatically determines the correct loader (CSS, images, TypeScript, etc.
- Lesson 1402 — Parcel: Zero Configuration Bundling
- Auto-margin trick
- on the button (`margin-top: auto`) pushes it to the bottom
- Lesson 305 — Pricing Table Pattern
- auto-placement algorithm
- to fill the grid.
- Lesson 321 — Automatic Placement: How Grid Items FlowLesson 353 — Auto-Placement AlgorithmLesson 357 — Implicit vs Explicit Placement
- Auto-rotation steals control
- When content automatically advances every few seconds, users who read slowly, use screen readers, or need extra time to process information may miss content entirely.
- Lesson 1187 — Why Carousels Are Challenging for Accessibility
- Automated Accessibility Tools
- Lesson 1210 — Testing Complex Widgets
- Automated end-to-end tests
- Use tools like Puppeteer to script the update flow—install V1, trigger an update, verify V2 activates, and confirm old caches are removed.
- Lesson 2435 — Testing Service Worker Updates
- Automated Tests
- Write integration tests that simulate both legitimate and malicious scenarios.
- Lesson 2916 — Testing CSRF Protection
- Automatic
- The browser manages retry logic, timing, and network detection
- Lesson 2333 — What is Background Sync and Why It Matters
- Automatic pausing
- when tab is inactive (saves battery!
- Lesson 2597 — requestAnimationFrame for Smooth Timing
- Automatic retry
- Network timeouts, temporary API failures, or loading errors that might resolve themselves.
- Lesson 1673 — Reset and Recovery Mechanisms
- Automatic role
- Browsers assign the correct `dialog` role, so screen readers announce it properly
- Lesson 1149 — The <dialog> Element Fundamentals
- Automatic scoping
- prevents style conflicts without class naming conventions like BEM
- Lesson 602 — CSS-in-JS Philosophies
- Automatic staggering
- Children animate in sequence without manual delay calculations
- Lesson 2567 — Variants for Complex Orchestration
- Automatic updates
- Services may optimize files as formats improve
- Lesson 561 — Self-Hosting vs. Font Services
- Autonomous elements
- stand alone—they're brand-new HTML tags that don't inherit from any existing element (except the base `HTMLElement`).
- Lesson 2454 — Autonomous vs Customized Built-in Elements
- AVIF
- create dramatically smaller files than JPEG or PNG—sometimes 30-50% smaller—which means faster page loads.
- Lesson 424 — Modern Image Formats with PictureLesson 1246 — Format Selection Strategy
- Avoid
- using it for standard axes (`'wght'`, `'wdth'`, `'slnt'`) unless you have no choice—it overrides the entire variation string and doesn't cascade well.
- Lesson 1290 — Standard Properties vs Variation SettingsLesson 1326 — BEM in HTML: Class Application Patterns
- Avoid animating
- `width`, `height`, `top`, `left`, `margin`—these force expensive layout recalculations.
- Lesson 539 — Transform Performance Best Practices
- Avoid dangerous patterns
- Don't use GET requests for state-changing operations
- Lesson 2907 — What is CSRF and Why Frontend Matters
- Avoid humor
- when the error is serious (data loss, payment failures)
- Lesson 1684 — Tone and Voice in Error Messages
- Avoid it
- when the visual order needs to match the HTML order for accessibility—screen readers follow the DOM, not visual placement.
- Lesson 322 — Grid Auto-Flow: row, column, and dense
- Avoid JPEG for
- Lesson 1997 — JPEG: When and How to Use It
- Avoid Over-Granularity
- Don't wrap every single component.
- Lesson 1669 — Positioning Error Boundaries in the Component Tree
- Avoid over-using it
- Each prefetch consumes resources and bandwidth.
- Lesson 1962 — DNS Prefetch for Domain Resolution
- Avoid PII When Possible
- Personally Identifiable Information (names, emails, addresses, IP addresses) carries heavy legal and ethical weight.
- Lesson 2979 — Minimizing Data Collection
- Avoid reserved names
- that could conflict with HTML parsing (e.
- Lesson 2447 — Custom Element Naming Requirements
- Avoid sensitive data
- Remember, JWTs are encoded (not encrypted)—anyone can decode them.
- Lesson 1582 — Custom Claims and Payload Design
- Avoid Technical Jargon
- Lesson 1675 — User-Friendly Error Message Principles
- Avoid transitioning `all`
- in production; specify exact properties for better performance
- Lesson 512 — Common Transition Patterns and Best Practices
- Avoid unnecessary alpha channels
- If your image doesn't need transparency, use JPEG or a format without alpha support to save bytes.
- Lesson 1998 — PNG: Transparency and Quality
- Avoid unnecessary FormData rebuilds
- in loops—create once, append multiple items.
- Lesson 895 — FormData Best Practices
- Avoid unnecessary qualification
- Lesson 1352 — Writing Low-Specificity Selectors
- Avoiding Unnecessary Work
- Lesson 2073 — Optimizing Heavy Computations
- Avoids duplication
- The visible text serves as the accessible name
- Lesson 1020 — aria-labelledby: Referencing Existing Labels
- axe DevTools
- (browser extension) automatically scans your page and lists ARIA violations with explanations.
- Lesson 1028 — ARIA Validation and Testing ToolsLesson 1053 — Testing Tab Order Without a MouseLesson 1098 — Testing Focus Management
- Axis labels
- Position text near tick marks using calculated coordinates
- Lesson 2608 — SVG Text and Labels in Charts
B
- Backdrop Interaction
- Unlike desktop where clicking the backdrop is common, mobile users might accidentally tap it while scrolling.
- Lesson 1161 — Mobile Modal Patterns
- backend
- (the server) are completely separate concerns that communicate only through a defined interface —the REST API.
- Lesson 1474 — Client-Server SeparationLesson 1817 — Decoupling Frontend from Backend
- Backend teams
- can optimize databases, change languages, or refactor logic—without touching the frontend
- Lesson 1474 — Client-Server Separation
- Backend-Only Storage
- Refresh token stays on the server (in Redis, database).
- Lesson 1600 — Refresh Token Storage Strategy
- Background and borders
- of the stacking context element itself (the "canvas")
- Lesson 232 — Stacking Order Within a Context
- Background colors
- Won't extend to match neighboring columns automatically
- Lesson 242 — Float Layout Limitations
- Background Fetch
- , **Background Sync**: Track background operations
- Lesson 2233 — Application Panel Overview and NavigationLesson 2240 — Background Services Monitoring
- Background Sync
- Track background operations
- Lesson 2233 — Application Panel Overview and NavigationLesson 2240 — Background Services MonitoringLesson 2341 — One-off Sync vs Periodic Background SyncLesson 2933 — Service Workers Require HTTPS
- Background updates
- "New messages received," "Connection restored"
- Lesson 1707 — Toast Notification Patterns and Use Cases
- Bad
- `alt="A woman with brown hair wearing a blue shirt and jeans standing in front of a white brick wall holding a silver laptop computer with a smile on her face"`
- Lesson 1147 — Common Alt Text MistakesLesson 1237 — Accessibility Considerations with PictureLesson 1676 — Error Message AnatomyLesson 1677 — Network Error Messages
- Bad (interleaved reads/writes)
- Lesson 2063 — Batch DOM Reads and Writes
- Bad pattern (thrashing)
- Lesson 547 — Avoiding Layout Thrashing
- Bad practices
- Inline styles instead of CSS, missing semantic elements
- Lesson 1446 — Why Lint HTML? Catching Errors Early
- Balanced
- "We couldn't save your changes because the email field is empty.
- Lesson 1684 — Tone and Voice in Error Messages
- Bandwidth Consumption
- Oversized images waste users' data plans and server bandwidth.
- Lesson 1995 — Why Image Optimization Matters for Performance
- Bandwidth Savings
- Lesson 1226 — Performance Impact of srcset
- Bandwidth Waste
- Over-pushing can actually slow down initial render by delaying more critical resources
- Lesson 2121 — HTTP/2 Server Push
- Banning patterns
- Deprecated components, inline styles in certain contexts
- Lesson 1451 — Custom HTML Linting Rules
- Base
- rules are the defaults—your resets and element styles without classes.
- Lesson 598 — SMACSS (Scalable and Modular Architecture)Lesson 1327 — Alternative Naming Conventions: SMACSS and OOCSS
- Base name
- Describes the image content (`hero`, `product-photo`, `team-header`)
- Lesson 1224 — Image Source Naming Conventions
- Base styles for mobile
- means writing your default CSS as if you're designing for a smartphone—no media queries yet.
- Lesson 381 — Base Styles for MobileLesson 389 — Progressive Enhancement Strategy
- Base64-encoded
- (larger but simpler):
- Lesson 2044 — Inline SVG Data URIsLesson 2855 — Generating Secure Nonces
- baseline
- is the invisible line that letters "sit" on—the bottom of most lowercase letters (excluding descenders like in *g* or *p*).
- Lesson 277 — align-items: baseline Alignment for TypographyLesson 282 — flex-basis: Setting Initial Item SizeLesson 2005 — Progressive vs Baseline Encoding
- Baseline comparisons
- flag regressions by comparing against previous builds
- Lesson 2231 — Lighthouse CI for Continuous Monitoring
- Baseline conversion rate
- Tests with very low conversion rates need longer runs
- Lesson 2827 — Statistical Significance and Sample Size
- Baseline encoding
- saves image data sequentially from top to bottom.
- Lesson 2005 — Progressive vs Baseline Encoding
- Basic
- For simple service-to-service auth or development
- Lesson 1503 — Authorization Header PatternsLesson 2757 — The toLocaleString Family of Methods
- Basic UI elements
- straightforward colors like `white` backgrounds or `black` text
- Lesson 180 — Color Keywords and Named Colors
- Batch processing
- Use ImageOptim for folders of images before committing
- Lesson 2003 — Compression Tools and Techniques
- Battery drains faster
- processing and resizing huge images
- Lesson 2007 — Responsive Images: Why Resolution Switching Matters
- Battle-Tested Strategies
- The caching patterns you've learned (cache-first, network-first, stale-while-revalidate) come pre- built, optimized, and debugged by Google's team.
- Lesson 2404 — What is Workbox and Why Use It
- BCP 47
- specification (Best Current Practice 47).
- Lesson 2496 — Understanding Locales and Language Tags
- Be transparent upfront
- about what you track and why
- Lesson 2982 — Building Trust Through Privacy-First Design
- Become fixed
- When its top edge would scroll past the viewport's top (0px from the top)
- Lesson 222 — Sticky Positioning Fundamentals
- Before consent
- Lesson 2971 — Blocking Scripts Based on Consent
- Before rendering user content
- Use `DOMPurify` to clean HTML before inserting via `innerHTML`
- Lesson 2905 — Validating and Sanitizing Input
- Before storing in localStorage
- Strip scripts that could execute when data is retrieved
- Lesson 2905 — Validating and Sanitizing Input
- Before URL construction
- Encode user input used in query parameters or paths
- Lesson 2905 — Validating and Sanitizing Input
- Before user actions
- – When deciding to show/enable buttons
- Lesson 1639 — Permission Checking Fundamentals
- Before/After Comparison
- Record a page load without hints, then with hints enabled.
- Lesson 1972 — Measuring Resource Hint Impact
- Before/After Testing
- Load a page without `srcset`, note total image KB transferred, then add `srcset` and compare
- Lesson 1226 — Performance Impact of srcset
- Below the fold
- Fonts used in footers, comments, or sections users won't see immediately
- Lesson 1295 — When to Preload Fonts vs When Not ToLesson 1942 — Component-Based Code Splitting
- Below-the-fold images
- Any image not immediately visible on page load
- Lesson 1250 — The loading='lazy' Attribute
- BEM
- for:
- Lesson 1328 — Utility Classes vs BEM ComponentsLesson 1340 — ITCSS vs Other Methodologies: When to Use WhatLesson 1350 — CSS Modules vs Other ApproachesLesson 1351 — Understanding the Specificity War Problem
- BEM components
- encapsulate a UI piece with all its structural styles and variations.
- Lesson 1328 — Utility Classes vs BEM Components
- BEM pattern example
- Lesson 1440 — Enforcing Naming Conventions
- Benefits
- Faster development once utilities are established, extreme consistency across a project, smaller CSS bundles (utilities are reused everywhere), and easier maintenance when changes are localized to markup.
- Lesson 600 — Atomic CSS and Utility-First ApproachesLesson 602 — CSS-in-JS PhilosophiesLesson 2037 — SVG Basics and Inline vs External
- Best for
- Scripts that need the full DOM ready and must run in a specific order.
- Lesson 89 — Script Loading StrategiesLesson 1340 — ITCSS vs Other Methodologies: When to Use WhatLesson 1510 — Page-Based PaginationLesson 1650 — Disabled vs Hidden UI ElementsLesson 1996 — Lossy vs Lossless CompressionLesson 2281 — Inline vs External Source Maps
- Best of both worlds
- SSG + `stale-while-revalidate` serves cached content instantly while updating behind the scenes
- Lesson 1727 — Data Freshness Trade-offs
- Best performance (modern browsers)
- AVIF first choice, WebP second choice
- Lesson 2002 — Format Selection Decision Tree
- Best positioning practices
- Lesson 2835 — Chat Widget Positioning and Accessibility
- Best practice
- Validate on blur for individual fields, but always validate on submit as a safety net.
- Lesson 910 — Validation Timing and User ExperienceLesson 1017 — Document Structure RolesLesson 1051 — Tab Order in Flex and Grid LayoutsLesson 1280 — Combining font-display with PreloadingLesson 2377 — skipWaiting() to Bypass WaitingLesson 2379 — Byte-Diff UpdatesLesson 2422 — Cache Size Limitations
- Best practice pattern
- Lesson 1300 — Preload with font-display Strategies
- Best Practices
- examines whether you're following modern web standards.
- Lesson 2223 — What Lighthouse Measures and Why It MattersLesson 2808 — Tag Manager Performance Considerations
- Best practices for titles
- Lesson 84 — The <title> Element
- Best-effort
- Default storage that browsers *may* delete under disk pressure (low space, LRU eviction)
- Lesson 2241 — Storage Quota and Usage Analysis
- Better caching efficiency
- (one file to cache instead of many)
- Lesson 579 — Variable Font Performance Benefits
- Better error messages
- More verbose warnings and stack traces
- Lesson 1393 — Development vs Production Mode
- Better for SPAs
- Can be dynamically updated without re-rendering DOM
- Lesson 1855 — JSON-LD vs Microdata vs RDFa
- Better memory efficiency
- The browser doesn't choke on massive arrays
- Lesson 1507 — Why Pagination Matters
- Better mobile performance
- when switching networks (connection migration)
- Lesson 2127 — HTTP/3 and QUIC Protocol
- Better organization
- All event logic lives in your JavaScript files
- Lesson 719 — Inline vs addEventListener
- Better perceived performance
- something visible while JS loads
- Lesson 1744 — Hydration vs. Client-Side Rendering
- Better performance
- Less memory overhead and setup code
- Lesson 760 — Basic Delegation PatternLesson 2597 — requestAnimationFrame for Smooth Timing
- Better progress reporting
- Show fine-grained progress across the entire file
- Lesson 2717 — Chunked Upload for Large Files
- Better readability
- at every screen size, not just at breakpoint widths
- Lesson 405 — Understanding Fluid Typography
- Better SEO
- Search engines receive fully-formed HTML to index
- Lesson 1718 — What is Server-Side Rendering (SSR)?
- Better TBT scores
- – Fewer long tasks during initial load means lower blocking time
- Lesson 1991 — Optimizing JavaScript Execution with Code Splitting
- Better user experience
- with instant navigation
- Lesson 975 — Client-Side Routing FundamentalsLesson 1638 — Security Considerations for Frontend Authorization
- Better UX
- Users can fix errors before moving on, reducing frustration
- Lesson 918 — Field-Level vs Form-Level ValidationLesson 2333 — What is Background Sync and Why It MattersLesson 2837 — Privacy-Friendly Embed Alternatives
- Better UX for all
- Clear navigation, good contrast, and logical structure help everyone
- Lesson 987 — What is Web Accessibility and Why It Matters
- Blackboxing
- tells the debugger to treat certain files or folders as "invisible" during stepping operations.
- Lesson 2275 — Blackboxing Third-Party Code
- Bloated JavaScript bundles
- – Hundreds of kilobytes of code that could be split or tree-shaken
- Lesson 2202 — Identifying Slow Resources
- block
- as "perpendicular to reading" (vertical in English, stacking paragraphs).
- Lesson 457 — Introduction to Logical Properties and Flow-Relative ValuesLesson 458 — Block and Inline AxesLesson 461 — Logical Position Properties (inset)Lesson 464 — Writing Modes and DirectionLesson 596 — BEM (Block Element Modifier) MethodologyLesson 1293 — Understanding Font Loading and Critical Rendering PathLesson 1320 — BEM Fundamentals: Block, Element, ModifierLesson 1321 — BEM Block Naming
- Block access entirely
- to data collection features
- Lesson 2961 — Children's Privacy and Age Verification
- Block all forms
- `form-action 'none'` (useful for static content sites)
- Lesson 2851 — The form-action Directive
- Block all media (rare)
- Lesson 2847 — The media-src Directive
- Block axis
- Runs vertically (top to bottom by default) — this defines your rows
- Lesson 314 — The Grid Axis: Rows and ColumnsLesson 458 — Block and Inline Axes
- Block or Allow
- If the resource violates the policy, the browser blocks it and logs a violation to the console
- Lesson 2840 — How CSP Works in Browsers
- Block rendering
- if not loaded with `async` or `defer`
- Lesson 2047 — The Performance Cost of Third-Party Scripts
- Block-level boxes
- in normal flow (your regular `<div>` elements)
- Lesson 232 — Stacking Order Within a Context
- Block-level elements
- (like `<div>`, `<p>`, `<h1>`) stack vertically, one on top of another.
- Lesson 207 — What is Normal Flow?Lesson 208 — Block-Level Elements in Normal FlowLesson 210 — Inline-Block Display
- Block, Element, Modifier
- three distinct parts that work together to describe your component structure in a self- documenting way.
- Lesson 1320 — BEM Fundamentals: Block, Element, Modifier
- Blocking resources
- – CSS or synchronous JavaScript that prevents other requests from starting
- Lesson 2166 — Understanding Request Waterfalls
- Blocking scripts
- – Synchronous resources that freeze page rendering
- Lesson 2202 — Identifying Slow Resources
- Blocking time
- Resources preventing page interaction
- Lesson 2173 — Measuring and Improving Waterfall Metrics
- Blocks non-consented scripts
- automatically or provides APIs to check consent status
- Lesson 2973 — Consent Management Platforms (CMPs)
- Blocks the request
- until the page is fully generated server-side, then serves it.
- Lesson 1774 — Fallback Strategies
- Blog posts
- Every 3600 seconds/1 hour (content rarely changes after publishing)
- Lesson 1802 — Content Freshness vs Build Time Trade-offs
- Blogs and Content Sites
- Lesson 1776 — When to Use SSG
- Blogs and news sites
- with periodic publishing schedules fit naturally.
- Lesson 1822 — When Jamstack Fits Best
- Blur radius
- (optional): How soft the shadow edges are (0 = sharp, higher = softer)
- Lesson 176 — Text ShadowLesson 205 — Text Shadow
- Body
- Convert your JavaScript object to a JSON string using `JSON.
- Lesson 830 — Making POST Requests with JSON DataLesson 2351 — Displaying Notifications with showNotification()
- Body copy variations
- at different sizes with sample paragraphs
- Lesson 594 — Documentation and Type Specimens
- Body text
- Typically cap between `20px–24px` for comfortable reading
- Lesson 410 — Preventing Overly Large Text
- bold
- (just visually)
- Lesson 67 — Bold, Italic, and UnderlineLesson 694 — Setting Element Content: textContent vs innerHTML
- bookmarkable
- or **shareable** URLs
- Lesson 1483 — GET: Retrieving ResourcesLesson 1518 — URL State Management
- Bookmarkable content
- where users must return to the same language version reliably
- Lesson 2540 — Content Negotiation vs Explicit URLs
- Boolean Flag Object
- Lesson 1640 — Permission Data Structures
- Bootstrap 5
- offers RTL support via a separate compiled stylesheet (`bootstrap.
- Lesson 2527 — RTL in CSS Frameworks
- Border
- = the box edges (visible line around the element)
- Lesson 3 — IP Addresses and Domain NamesLesson 139 — The Box Model: Content, Padding, Border, MarginLesson 265 — Flexbox and the Box ModelLesson 2176 — Viewing and Understanding the Box Model
- Borders
- `px` (crisp, predictable)
- Lesson 159 — Absolute vs Relative: Choosing the Right UnitLesson 265 — Flexbox and the Box Model
- both
- the DOM and CSSOM are ready.
- Lesson 22 — Parsing CSS into the CSSOMLesson 1071 — Skip Links vs LandmarksLesson 1090 — Focus Trap ImplementationLesson 2103 — Virtual Grid LayoutsLesson 2137 — Pre-Compression vs Dynamic CompressionLesson 2706 — Server-Side Validation RequirementLesson 2879 — X-Frame-Options vs frame-ancestors
- Bottom detail pane
- Click any request to see headers, preview, response, timing breakdown, and cookies.
- Lesson 2196 — Network Panel Overview and Interface
- Bottom sheets
- Menus that slide up from the screen bottom work naturally with thumb reach and feel native on mobile devices.
- Lesson 1171 — Mobile-Friendly Dropdown Patterns
- Bottom-Up
- or **Call Tree** tabs
- Lesson 2053 — Measuring Third-Party Script ImpactLesson 2220 — CPU Profiling and Bottom-Up View
- Bottom-Up tab
- (below the chart): Groups time by function name, showing which functions consumed the most total time across your recording.
- Lesson 2069 — Identifying Long Tasks in DevTools
- Bottom-Up View
- Flips the perspective—it groups time by the *leaf* functions (the ones doing the actual work) regardless of how they were called.
- Lesson 2220 — CPU Profiling and Bottom-Up View
- Bottom/Right negative margins
- pull *following elements* closer to the current element
- Lesson 149 — Negative Margins
- Bracket notation
- lets you watch dynamic keys or array indices.
- Lesson 2272 — Watching Object Properties and Nested Values
- Bracket Pair Colorizer
- (or built-in bracket colorization): Color-codes matching brackets so nested code is easier to parse visually
- Lesson 1462 — VS Code Extensions for Web Development
- Brand consistency
- Your company's signature typeface appears exactly as intended
- Lesson 558 — Introduction to Web Fonts
- Breach detection
- If both the legitimate user and an attacker try to use different versions of the refresh token, the server can detect suspicious activity and revoke all tokens for that session.
- Lesson 1611 — Token Rotation on Refresh
- BreadcrumbList
- schema is structured data that explicitly tells search engines about this navigation hierarchy, often resulting in those helpful breadcrumb links appearing directly in Google search results (like "Home > Products > Shoes").
- Lesson 1860 — Breadcrumb Schema for Navigation
- Breadcrumbs
- (console logs, network requests, UI interactions before the error)
- Lesson 2287 — Error Monitoring Services
- Break it down
- Even complex inputs eventually submit simple form values.
- Lesson 920 — Custom Validation for Complex Inputs
- Break on
- → **subtree modifications**.
- Lesson 2257 — DOM Breakpoints: Subtree ModificationsLesson 2259 — DOM Breakpoints: Node Removal
- Breakdown by type
- How much localStorage, IndexedDB, Cache Storage, etc.
- Lesson 2241 — Storage Quota and Usage Analysis
- Breaking it down
- Lesson 559 — The @font-face RuleLesson 2930 — Strict-Transport-Security (HSTS) Header
- breakpoints
- to change font sizes at specific viewport widths.
- Lesson 405 — Understanding Fluid TypographyLesson 1469 — Debugging Configuration in VS Code
- Brief, non-interactive content only
- if users need to interact, use a popover or dialog instead
- Lesson 1204 — Tooltip Pattern
- Broad reach matters most
- – You need one codebase serving web, mobile, and desktop users
- Lesson 2370 — When to Choose PWA vs Native
- Broadcast Channel API
- to send messages between your service worker and all open tabs whenever a cached resource is updated.
- Lesson 2411 — Broadcast Updates for Cache Changes
- Broken functionality
- JavaScript in old tabs might call APIs the new worker handles differently
- Lesson 2377 — skipWaiting() to Bypass Waiting
- Broken roving tabindex
- Multiple items remain `tabindex="0"` simultaneously, creating duplicate tab stops.
- Lesson 1086 — Testing Custom Navigation
- Brotli (br)
- Modern algorithm with better compression than gzip, especially for text files
- Lesson 2131 — Understanding HTTP Compression Basics
- Browser advertises support
- The browser sends an `Accept-Encoding` header listing compression algorithms it understands (e.
- Lesson 2131 — Understanding HTTP Compression Basics
- Browser caching
- Popular fonts (like Google's) might already be cached by visitors
- Lesson 561 — Self-Hosting vs. Font ServicesLesson 1483 — GET: Retrieving Resources
- Browser cleanup
- When disk space is scarce, browsers may automatically purge Cache API or even IndexedDB
- Lesson 823 — Persistence and Durability
- Browser crashes
- Eventually, the tab or browser may run out of memory entirely
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- Browser Decision
- Stores the file and notes how long it can be reused
- Lesson 2141 — HTTP Caching Fundamentals
- Browser decompresses
- The browser automatically decompresses the file before using it
- Lesson 2131 — Understanding HTTP Compression Basics
- Browser developer tools
- can help debug sitemap fetch issues
- Lesson 1876 — Testing and Validating Sitemaps and Robots.txt
- Browser DevTools
- have built-in accessibility inspectors (Chrome, Firefox, Edge) that show you the accessibility tree —how assistive technologies "see" your page.
- Lesson 1028 — ARIA Validation and Testing ToolsLesson 1063 — Testing Focus Visibility
- Browser DevTools Coverage Tool
- Lesson 1974 — Identifying Critical CSS
- Browser DevTools Network Tab
- Compare file sizes loaded on different viewport widths
- Lesson 1226 — Performance Impact of srcset
- Browser DevTools Performance Tab
- lets you record a page load and see the exact JavaScript tasks running during hydration.
- Lesson 1756 — Measuring Hydration Performance
- Browser differences
- Safari, Chrome Mobile, and Samsung Internet all render differently
- Lesson 387 — Testing on Real Devices
- Browser extensions
- Look for `chrome-extension://` or `moz-extension://` URIs—often false positives
- Lesson 2870 — Analyzing CSP Violation Reports
- Browser history
- that works with back/forward buttons
- Lesson 975 — Client-Side Routing FundamentalsLesson 1518 — URL State Management
- Browser Process
- The manager—handles the address bar, bookmarks, and coordinates everything
- Lesson 17 — Browser Architecture Overview
- Browser renders the page
- it reads the HTML and displays it on your screen
- Lesson 15 — Putting It All Together: A Complete Page Load
- Browser Stores It
- Your browser saves that cookie locally.
- Lesson 797 — What Are Cookies and How They Work
- Browser Support
- Lesson 1246 — Format Selection Strategy
- Browser support is critical
- While modern browsers support logical properties well, legacy browsers (IE11) don't.
- Lesson 465 — When to Use Logical vs Physical Properties
- Browser vulnerabilities
- XSS attacks can easily grab tokens from URLs
- Lesson 1618 — Implicit Flow and Why to Avoid It
- Browser-friendly
- Uses standard HTTP, which browsers understand natively
- Lesson 1470 — What is REST and Why It Matters
- Browser-only APIs
- Code like `window.
- Lesson 1746 — Hydration Mismatch ErrorsLesson 1747 — Avoiding Hydration Mismatches
- Browsers
- can provide better default behaviors
- Lesson 39 — HTML's Role: Document Structure and Semantics
- BrowserStack
- let you test on hundreds of real devices remotely through your browser.
- Lesson 387 — Testing on Real Devices
- Budget for initial load
- 0KB (lazy-load or require user interaction)
- Lesson 1934 — Image and Media Asset Budgets
- Build
- The workflow installs dependencies and runs your build command (like `npm run build`)
- Lesson 1810 — GitHub Pages
- Build a custom endpoint
- that receives reports and stores them in a database:
- Lesson 2872 — Collecting and Monitoring Reports
- Build artifacts
- Compiled output in `dist/` or `build/`
- Lesson 1434 — Ignoring Files with .eslintignore
- Build automation
- Use Sharp in your bundler/CI pipeline for consistent optimization
- Lesson 2003 — Compression Tools and Techniques
- Build Caching
- Cache intermediate build artifacts—processed images, compiled Markdown, transformed data.
- Lesson 1788 — Build Performance with Large Datasets
- Build hooks
- that trigger rebuilds when content changes
- Lesson 1781 — Headless CMS Integration Fundamentals
- Build once
- Author components using vanilla Custom Elements or a lightweight abstraction like Lit
- Lesson 2487 — Design System Distribution
- Build time
- The framework fetches data, runs your components, and generates complete HTML files for every route
- Lesson 1721 — What is Static Site Generation (SSG)?Lesson 1779 — Static Generation with Dynamic Data SourcesLesson 1781 — Headless CMS Integration FundamentalsLesson 1782 — Markdown and MDX for Content
- Build times are acceptable
- for your deployment workflow
- Lesson 1793 — Choosing Between Full SSG and Hybrid Approaches
- Build-time checks
- that fail your CI/CD pipeline if coverage drops below a threshold
- Lesson 2536 — Translation Coverage and Missing Key Detection
- Build-time scanning
- A plugin or custom script parses your HTML files
- Lesson 2865 — Build Tools and Automatic Hash Generation
- Build-time variables
- get baked into your static files during the build process.
- Lesson 1811 — Environment Variables
- Building a library
- Rollup excels at creating clean, tree-shakeable output.
- Lesson 1408 — Choosing the Right Bundler
- Building an application
- Vite offers the best developer experience with fast HMR and modern defaults.
- Lesson 1408 — Choosing the Right Bundler
- Building reusable components
- A card component with `padding-block: 1rem; padding-inline: 2rem;` works correctly whether users read left-to-right or right-to-left.
- Lesson 465 — When to Use Logical vs Physical Properties
- Builds a tree structure
- that mirrors the cascade and inheritance rules of CSS
- Lesson 22 — Parsing CSS into the CSSOM
- Built-In Cache Management
- Features like cache expiration, size limits, and versioned caching are handled automatically with simple configuration options.
- Lesson 2404 — What is Workbox and Why Use It
- Built-in presets
- like `"eslint:recommended"` (the official starter set)
- Lesson 1429 — Extending Configurations
- Built-in types
- `Date`, `RegExp`, `Map`, `Set`, `ArrayBuffer`, `Blob`, `File`
- Lesson 2088 — Structured Clone Algorithm and Data Transfer
- Bundle size
- Polyfills can add 50-150KB to your initial load
- Lesson 2495 — Browser Support and Polyfill ConsiderationsLesson 2654 — Choosing the Right LibraryLesson 2743 — Day.js: Lightweight Alternative
- Bundle your own code
- , but carefully consider whether to bundle third-party scripts.
- Lesson 2800 — Script Loading Best Practices
- Bundles JavaScript and CSS
- for interactivity and styling
- Lesson 1722 — The SSG Build and Delivery Process
- button
- (what they actually clicked)
- Lesson 749 — event.target vs event.currentTargetLesson 1206 — Date Picker Pattern
- Button consequences
- Lesson 1021 — aria-describedby: Additional Context
- Buttons
- (`<button>`) - Trigger actions
- Lesson 1043 — Natively Focusable ElementsLesson 1060 — Focus Styles for Different Element Types
- Buttons (`<button>`)
- perform actions — submit forms, open modals, toggle visibility, or trigger JavaScript functions.
- Lesson 1002 — Buttons vs Links: Choosing Correctly
- Buttons with only icons
- A `<button>` element is perfectly semantic, but if it contains only an icon (like a magnifying glass), screen readers can't describe its purpose.
- Lesson 1033 — Enhancing Incomplete Native Elements
- By content type
- separate sitemaps for products, blog posts, category pages
- Lesson 1872 — Sitemap Index Files for Large Sites
- By date
- monthly or yearly archives (sitemap-2024-01.
- Lesson 1872 — Sitemap Index Files for Large Sites
- Bypass for network
- Skip the service worker temporarily, letting all requests go directly to the network (essential for debugging cache issues)
- Lesson 2238 — Service Worker Registration and LifecycleLesson 2322 — Testing Service Workers LocallyLesson 2436 — DevTools Service Worker Panel
- byte-by-byte comparison
- of the downloaded file against what it already has.
- Lesson 2379 — Byte-Diff UpdatesLesson 2431 — Automatic Update ChecksLesson 2432 — Byte-Diffing and Update Detection
C
- C (Chroma)
- Color intensity/saturation (0 = gray, higher = vibrant)
- Lesson 493 — LCH and OKLCH: Perceptually Uniform Color Models
- Cache API
- is a browser storage mechanism specifically designed to store HTTP request-response pairs.
- Lesson 809 — What is the Cache API and Why It MattersLesson 816 — Cache API vs localStorage and IndexedDBLesson 820 — Capacity and LimitsLesson 821 — Performance CharacteristicsLesson 822 — Data Structure RequirementsLesson 823 — Persistence and DurabilityLesson 824 — Security and Privacy ConsiderationsLesson 825 — Cross-Tab and Offline Scenarios (+1 more)
- Cache Hit Rate
- The percentage of requests served from cache.
- Lesson 2403 — Analytics and Cache Performance Monitoring
- Cache Hit Rates
- Measure how often users get cached pages versus triggering regenerations.
- Lesson 1805 — Monitoring and Debugging ISR
- Cache Ignorance
- The server doesn't know what's already in the browser cache, potentially pushing resources the client already has
- Lesson 2121 — HTTP/2 Server Push
- Cache Key Normalization
- CDNs should normalize the `Accept-Encoding` header in cache keys—otherwise you'd get separate cache entries for `gzip, deflate` vs `gzip` vs `gzip, deflate, br`, fragmenting your cache and reducing hit rates.
- Lesson 2140 — Compression and CDN Configuration
- Cache Management
- You can inspect, update, or clean up cached resources in response to user actions or app state changes.
- Lesson 818 — Cache API Outside Service Workers
- Cache Miss Rate
- Requests that bypassed cache and hit the network.
- Lesson 2403 — Analytics and Cache Performance Monitoring
- Cache Size
- Monitor how much storage you're consuming.
- Lesson 2403 — Analytics and Cache Performance Monitoring
- Cache Storage
- Inspect cached resources from the Cache API (used with service workers)
- Lesson 2233 — Application Panel Overview and NavigationLesson 2237 — Cache Storage InspectionLesson 2414 — Debugging Workbox in DevToolsLesson 2439 — Clearing Cache Storage
- Cache Storage API
- gives service workers direct control over a browser-managed cache separate from HTTP caching.
- Lesson 2151 — Service Worker Cache API
- Cache Then Network
- strategy is like checking your pantry for dinner ingredients *while* simultaneously ordering fresh groceries for delivery.
- Lesson 2392 — Cache Then Network Strategy
- Cache version conflicts
- Check if old cache versions are still present
- Lesson 2425 — Debugging Cache Strategies
- Cache-Control headers
- Set short max-age values for translation files while using ETags for efficient revalidation.
- Lesson 2535 — Managing Translation Updates in Production
- Cache-First
- works best for:
- Lesson 2155 — Cache Strategy SelectionLesson 2399 — Handling Different Content Types
- Cache-First Strategy
- (also called "Cache, falling back to network") checks the Service Worker cache *first* for every request.
- Lesson 2152 — Cache-First StrategyLesson 2153 — Network-First StrategyLesson 2387 — Cache-First Strategy
- Cacheability Constraint
- requires that every response from the server clearly label itself as either *cacheable* or *non- cacheable*.
- Lesson 1478 — Cacheability Constraint
- Cacheable
- Tools can cache query structures separately from their values
- Lesson 1532 — Query Arguments and Variables
- Cached content
- Static assets serve from memory at scale without hitting your origin
- Lesson 2157 — CDN Performance Benefits
- CacheOnly
- serves exclusively from cache, never touching the network.
- Lesson 2408 — Built-In Caching Strategies
- Caching Directives
- Lesson 2199 — Request and Response Headers
- Caching navigation requests
- without fallbacks traps users on broken pages
- Lesson 2443 — Common Service Worker Pitfalls
- Caching Results
- Lesson 2073 — Optimizing Heavy Computations
- Calculate
- which items should be visible based on scroll position
- Lesson 2098 — Virtual Scrolling Fundamentals
- Calculate angles
- Convert each data value into a percentage of the total, then multiply by 360° (or 2π radians)
- Lesson 2607 — Creating Pie and Donut Charts
- Calculate chunks
- Divide the file size by your chosen chunk size (e.
- Lesson 2717 — Chunked Upload for Large Files
- Calculate cumulative positions
- (item 0 at 0px, item 1 at 0+height₀, item 2 at 0+height₀+height₁, etc.
- Lesson 2101 — Variable-Height Item Virtualization
- Calculate dimensions
- when you know only one measurement
- Lesson 1261 — Understanding Aspect Ratio in Web Design
- Calculate override percentages
- to make the fallback match the web font
- Lesson 1314 — Matching Fallback Font Metrics
- Calculate the adjustment factor
- Divide the web font's ratio by the fallback's ratio
- Lesson 1304 — Matching Font Aspect Ratios
- Calculates remaining space
- (container width minus 200px)
- Lesson 328 — Mixing fr Units with Fixed Sizes
- Calculates specificity
- to know which styles win when rules conflict
- Lesson 22 — Parsing CSS into the CSSOM
- Calibre
- , and **New Relic** provide ongoing surveillance—like having a security camera instead of taking occasional photos.
- Lesson 1927 — Performance Monitoring Services
- Call `.focus()` programmatically
- after the route transition completes
- Lesson 1091 — Route Change Focus Management
- call stack
- which function called which, all the way back to the starting point.
- Lesson 2191 — Console.trace() and Stack TracesLesson 2270 — The Call Stack and Stack Frames
- Call Stack panel
- shows you the entire chain of function calls.
- Lesson 2270 — The Call Stack and Stack Frames
- Call Tree
- tabs
- Lesson 2053 — Measuring Third-Party Script ImpactLesson 2220 — CPU Profiling and Bottom-Up View
- Call Tree View
- Shows the execution flow from top-level functions down to nested calls.
- Lesson 2220 — CPU Profiling and Bottom-Up View
- Call-to-action
- "Upgrade to Pro" or "Request access from your manager" buttons guide users forward
- Lesson 1652 — Placeholder Content for Unauthorized Users
- Canada
- uses WCAG through the Accessible Canada Act
- Lesson 991 — Legal Requirements and Standards Compliance
- Cancel all pending requests
- immediately using abort controllers or your HTTP client's cancellation mechanism
- Lesson 1664 — Preventing Repeated 401/403 Requests
- Cannot
- be moved using `top`, `bottom`, `left`, or `right` properties (these have no effect)
- Lesson 212 — Static PositioningLesson 964 — The State Object: Storing Navigation DataLesson 1596 — HttpOnly Cookies for TokensLesson 1666 — Error Boundary Concept in Component SystemsLesson 2483 — Styling Slotted Content with ::slotted()Lesson 2759 — Date Style and Time Style Options
- canonical URL
- is the preferred, "official" version of a page that you declare when duplicate or very similar content exists at multiple URLs.
- Lesson 1846 — What is a Canonical URL?Lesson 1850 — Canonical URLs vs 301 Redirects
- Capsize
- are automation tools that handle all this complexity for you.
- Lesson 1307 — Automatic Fallback Generation ToolsLesson 1316 — Tools for Calculating Fallback Metrics
- Captive Portals
- Hotel or coffee shop WiFi that requires login will show as "online" even though you can't reach any external servers yet.
- Lesson 1699 — Limitations of Browser Offline Detection
- Captures user choices
- (accept all, reject all, customize by category)
- Lesson 2973 — Consent Management Platforms (CMPs)
- Card type control
- Using `summary_large_image` instead of default `summary`
- Lesson 1842 — Twitter Cards vs Open Graph Fallbacks
- Carousels
- (image or content rotators)
- Lesson 1031 — When Semantic HTML Doesn't ExistLesson 1032 — ARIA for Complex Interactive WidgetsLesson 1072 — When Custom Navigation is Needed
- Cascade-friendly
- You can override them independently
- Lesson 1290 — Standard Properties vs Variation Settings
- Catches Errors Early
- Lesson 1424 — What is ESLint and Why Use It
- Categories
- Choose what to audit—Performance, Accessibility, Best Practices, SEO, PWA
- Lesson 2224 — Running Lighthouse in Chrome DevTools
- Category-first
- `--color-brand-500`, `--space-md`, `--font-heading-xl`
- Lesson 1368 — Theme Documentation and Design Tokens
- Caution
- Only prefetch what's truly likely.
- Lesson 1964 — Prefetch for Future NavigationLesson 2320 — Skipping the Waiting PhaseLesson 2830 — Async and Defer Script Loading
- CCPA
- (California Consumer Privacy Act) mandate explicit consent and disclosure for most cookies beyond strictly necessary ones.
- Lesson 2965 — Cookie Consent Legal Requirements
- CDN
- (Content Delivery Network) that caches responses
- Lesson 1479 — Layered System ArchitectureLesson 2547 — Installing GSAP and Basic Setup
- CDN benefits
- Global distribution often means faster delivery
- Lesson 561 — Self-Hosting vs. Font Services
- CDN Edge Delivery
- Static files can be cached at CDN edge locations worldwide.
- Lesson 1723 — SSG Performance Characteristics
- Center
- Headings, hero text, short decorative passages
- Lesson 171 — Text Alignment and JustificationLesson 533 — Transform Origin Point
- Center content
- both horizontally and vertically with minimal code
- Lesson 253 — What is Flexbox and Why Use It
- Centering a single item
- Lesson 289 — margin: auto for Item Positioning
- Centralized control
- Change one parent's state to trigger animations throughout a component tree
- Lesson 2567 — Variants for Complex Orchestration
- Centralized session store
- All servers share one Redis/database (adds network overhead and a single point of failure)
- Lesson 1575 — Scalability Considerations
- Centralizing theme definitions
- in your configuration using the theme function to reference reusable values
- Lesson 653 — Multi-Theme Architecture Patterns
- Challenges
- HTML becomes more verbose, there's a learning curve for your utility naming system, and it requires discipline to avoid recreating the same utility patterns repeatedly.
- Lesson 600 — Atomic CSS and Utility-First Approaches
- Change without notice
- , potentially introducing performance regressions
- Lesson 2047 — The Performance Cost of Third-Party Scripts
- changed portion
- .
- Lesson 1027 — aria-atomic and aria-relevantLesson 1113 — aria-atomic for Complete Updates
- Characteristics
- Lesson 1741 — Synthetic vs Real User Monitoring
- Chart.js
- is the lightweight champion—simple, canvas-based, and perfect for common chart types without heavy customization needs.
- Lesson 2643 — Overview of Popular Charting LibrariesLesson 2649 — Updating Charts with Live Data
- Charts and diagrams
- Lesson 2001 — SVG for Vector Graphics
- Chat widgets
- Show a chat icon that loads the full chat library only when clicked
- Lesson 2050 — Script Loading Facades
- Check a single field
- Lesson 904 — The checkValidity() Method
- Check an entire form
- Lesson 904 — The checkValidity() Method
- Check application state
- – Review the DOM, network requests, and storage at this precise moment
- Lesson 2253 — What Are Breakpoints and Why Use Them
- Check authorization
- Does the user have permission to view this route?
- Lesson 982 — Route Guards and Navigation Hooks
- Check browser console
- Framework warnings usually point to the mismatched element
- Lesson 1746 — Hydration Mismatch Errors
- Check dependencies
- a clean package can still import malicious sub-dependencies
- Lesson 2947 — Reviewing Package Source Code
- Check focus visibility
- at every step—can you always see where you are?
- Lesson 1098 — Testing Focus Management
- Check for context
- – Does the alt text make sense with the text before and after it?
- Lesson 1146 — Testing Alt Text with Screen Readers
- Check function inputs
- Lesson 2192 — Console.assert() for Runtime Checks
- Check the Console
- for violation reports after each page load
- Lesson 2881 — CSP Header Testing and Debugging
- Check the parent chain
- Walk up the DOM tree from your problem element.
- Lesson 235 — Debugging Stacking Issues
- Check timing issues
- add small delays if announcements are missed
- Lesson 1125 — Testing Announcements Across Screen Readers
- Check your analytics first
- Look at actual browser usage data from your user base.
- Lesson 2495 — Browser Support and Polyfill Considerations
- Checkboxes
- Users can select *multiple* options (like toppings on a pizza)
- Lesson 96 — Checkbox and Radio InputsLesson 897 — The required Attribute
- Checkboxes for selective clearing
- Unregistered service workers, localStorage, IndexedDB, cookies, cache storage
- Lesson 2242 — Clear Storage and Testing Fresh States
- Child
- a node directly below
- Lesson 663 — The DOM Tree StructureLesson 704 — Parent-Child Relationships in the DOMLesson 709 — nextElementSibling and previousElementSibling
- Choose animation libraries for
- Lesson 2583 — CSS Transitions vs. Animation Libraries
- Choose CSS transitions for
- Lesson 2583 — CSS Transitions vs. Animation Libraries
- Choose external when
- Lesson 2046 — SVG Performance Best Practices
- Choose inline when
- Lesson 2046 — SVG Performance Best Practices
- Choose Menu Button when
- Lesson 1163 — Accessible Dropdown Patterns Overview
- Choose Navigation Menu when
- Lesson 1163 — Accessible Dropdown Patterns Overview
- Choose SSE when
- Lesson 882 — Choosing Between SSE and WebSockets
- Choose the right variant
- Use PNG-8 for simple graphics when smooth transparency isn't critical.
- Lesson 1998 — PNG: Transparency and Quality
- Choose trigger types wisely
- Lesson 2808 — Tag Manager Performance Considerations
- Choose WebSockets when
- Lesson 882 — Choosing Between SSE and WebSockets
- Choose your modern replacement
- Lesson 244 — Migrating from Float Layouts
- Chrome DevTools
- Lesson 1706 — Testing Offline Scenarios
- Chrome DevTools Performance Panel
- gives you frame-by-frame analysis.
- Lesson 1318 — Testing and Measuring Font-Related CLS
- Chrome/Edge
- ~10MB per origin
- Lesson 772 — Storage Capacity and LimitsLesson 781 — Privacy Modes and StorageLesson 1055 — Default Browser Focus StylesLesson 1243 — AVIF: Next-Generation Image FormatLesson 1249 — Understanding Native Lazy Loading
- Chrome/Edge (Desktop & Android)
- Lesson 2362 — Platform-Specific Install Patterns
- Chrome/Edge DevTools
- Lesson 557 — Testing Reduced Motion Implementations
- Chunk delivery intervals
- how smoothly chunks arrive (gaps create visual stuttering)
- Lesson 1740 — Streaming Metrics
- Chunk size matters
- Aim for chunks between 20-50KB after compression.
- Lesson 1950 — Code Splitting Trade-offs and Best Practices
- Chunked uploading
- means dividing a large `File` object into sequential slices using the `Blob.
- Lesson 2717 — Chunked Upload for Large Files
- CI/CD automation
- Add validation to your build pipeline to catch errors before deployment:
- Lesson 1452 — Integrating with W3C Validator
- Circular layouts
- Use `cos()` and `sin()` to position items around a circle's circumference.
- Lesson 489 — Math Functions: sin(), cos(), tan(), and Trigonometry
- Clarity
- Developers know where to look—HTML for structure, CSS for appearance.
- Lesson 32 — CSS Standardization and the Separation of ConcernsLesson 113 — Table Caption with <caption>Lesson 1675 — User-Friendly Error Message Principles
- Class declaration
- You extend `HTMLButtonElement` instead of `HTMLElement`
- Lesson 2453 — Extending Built-in Elements
- Class selector
- Targets elements with a specific class → `.
- Lesson 3 — IP Addresses and Domain NamesLesson 121 — Basic Selectors: Type, Class, and ID
- Class selectors
- Reusable styles for groups of elements (most common)
- Lesson 121 — Basic Selectors: Type, Class, and ID
- Class-Based Strategy
- Lesson 640 — Dark Mode Variants
- Classes, attributes, and pseudo-classes
- (0,0,1,0) - Moderate power
- Lesson 132 — Specificity Order: Inline, IDs, Classes, Elements
- Classes, attributes, pseudo-classes
- 10 points each
- Lesson 135 — Calculating Specificity in Complex Selectors
- Clean edges
- The container's padding remains undisturbed
- Lesson 279 — gap: Modern Spacing Between Flex Items
- Clean Up Old Caches
- Lesson 2385 — Lifecycle Best Practices
- Clean up old cookies
- Remove expired or unused cookies with `removeItem` patterns
- Lesson 805 — Cookie Size Limitations
- Clean up on success
- Remove successfully sent requests from the queue
- Lesson 2401 — Background Sync for Failed Requests
- Cleaner code
- Animation logic lives in reusable objects instead of scattered inline props
- Lesson 2567 — Variants for Complex Orchestration
- Cleanup
- – Eventually stop reading from old storage and remove legacy code
- Lesson 1604 — Migrating Between Storage Strategies
- Clear all authentication state
- – Remove both access and refresh tokens from storage (cookies, memory, wherever you keep them)
- Lesson 1610 — Handling Failed Refresh Attempts
- Clear Branding
- Use official brand colors and logos (Google blue, Facebook blue, GitHub black).
- Lesson 1624 — Social Login UI Patterns
- Clear categorization
- distinguish between strictly necessary, functional, analytics, and advertising cookies
- Lesson 2965 — Cookie Consent Legal Requirements
- Clear contracts
- Custom element APIs define exactly what properties/attributes each boundary accepts
- Lesson 2489 — Micro-Frontend Architecture Boundaries
- Clear documentation
- Especially for error handling
- Lesson 1626 — OAuth Libraries and Security Best Practices
- Clear exit mechanism
- Let editors return to the public view
- Lesson 1792 — Preview Modes for Draft Content
- Clear explanation
- Tell users exactly what happened: "We couldn't find that page" is better than cryptic codes.
- Lesson 1681 — Not Found and Resource Errors
- Clear messaging
- "You don't have permission to access this resource" is better than "Error 403" or technical jargon.
- Lesson 1662 — Handling 403: Access Denied UILesson 1702 — Offline UI Indicators
- Clear old data
- Lesson 777 — Error Handling and QuotaExceededError
- Clear site data button
- The nuclear option that wipes everything checked
- Lesson 2242 — Clear Storage and Testing Fresh States
- Clear stored credentials
- – Remove invalid tokens from storage to prevent repeated failed requests
- Lesson 1657 — Understanding 401 Unauthorized
- Clear the flag
- only after successfully refreshing the token or redirecting to login
- Lesson 1664 — Preventing Repeated 401/403 Requests
- Clearfix dance
- Every float container needs clearing (those clearfix techniques you learned)
- Lesson 242 — Float Layout Limitations
- client
- (app) requests access, the **authorization server** issues tokens, and the **resource server** protects and serves the data.
- Lesson 1616 — OAuth Roles and TerminologyLesson 2539 — Path-Based Locale Routing
- Client Diversity
- Lesson 1577 — Choosing the Right Authentication Strategy
- Client errors (4xx)
- usually mean retrying won't help:
- Lesson 1687 — Understanding When to Retry Network Requests
- Client ID
- (public identifier) and **Client Secret** (confidential key).
- Lesson 1620 — Social Login Integration Basics
- Client initiates
- Browser sends a special HTTP request with `Upgrade: websocket` header
- Lesson 877 — WebSocket Fundamentals
- Client stores the token
- typically in `localStorage`, `sessionStorage`, or memory
- Lesson 1569 — Token-Based Authentication Flow
- Client-Driven Queries
- Lesson 1519 — What is GraphQL?
- Client-side evaluation
- means your JavaScript code in the browser fetches flag configurations and decides which features to show.
- Lesson 2820 — Client-Side vs Server-Side Feature Flags
- Client-Side Rendering (CSR)
- presents the biggest SEO challenge.
- Lesson 1724 — SEO Implications of Each ApproachLesson 1728 — Infrastructure and Hosting RequirementsLesson 1731 — First Contentful Paint (FCP)Lesson 1744 — Hydration vs. Client-Side Rendering
- client-side routing
- .
- Lesson 960 — What is the History API and Why It MattersLesson 975 — Client-Side Routing Fundamentals
- Cloaking risk
- Serving drastically different content to bots versus users violates search engine guidelines— content must be equivalent
- Lesson 1881 — Dynamic Rendering and Bot Detection
- Clock dependency
- If the server clock is wrong, or the client's clock differs from the server's, caching breaks
- Lesson 2143 — Expires Header
- Clocks and time
- Lesson 2521 — Icons and Visual Elements in RTL
- Clone the template
- in your component's constructor or `connectedCallback`
- Lesson 2485 — Templates and Slots Pattern: Reusable Component Markup
- Closed Mode
- prevents external access by making the `shadowRoot` property return `null`.
- Lesson 2462 — Open vs Closed Shadow DOM
- Closing modals
- Focus should return to the element that triggered the modal
- Lesson 1087 — Focus Management Fundamentals
- Closure
- appears if your function is nested inside another—these are "captured" variables from parent functions
- Lesson 2273 — Using the Scope Panel to Inspect Variables
- Closure scope
- Variables from outer functions that the current function has access to
- Lesson 2273 — Using the Scope Panel to Inspect Variables
- Closures
- that unintentionally hold references to large objects
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- Cloudflare Pages
- Manage through the dashboard under Settings → Environment Variables
- Lesson 1811 — Environment VariablesLesson 1823 — Jamstack Ecosystem and Platforms
- CLS (Cumulative Layout Shift)
- Images without dimensions cause layout shifts as they load, destroying your CLS score
- Lesson 1995 — Why Image Optimization Matters for Performance
- CLS measures visual stability
- how much content unexpectedly moves around as the page loads.
- Lesson 1888 — The Three Core Web Vitals: LCP, FID, and CLS
- Cluster
- Groups items horizontally with wrapping and equal gaps.
- Lesson 1336 — The Objects Layer: Layout Primitives and Structure
- CNAME Record
- Points your domain to another domain (common for `www` subdomain)
- Lesson 1812 — Custom Domains and DNSLesson 2160 — CDN Configuration Basics
- Code snippets
- the class names or CSS needed to apply each style
- Lesson 594 — Documentation and Type Specimens
- Code splitting
- divides your JavaScript bundle into multiple smaller "chunks.
- Lesson 1939 — What is Code Splitting and Why It Matters
- Code Transformation
- Through loaders and plugins, Webpack can transform TypeScript to JavaScript, compile Sass to CSS, optimize images, and much more — all during the bundling process.
- Lesson 1387 — What is Webpack and Why Use It
- Cognitive disabilities
- Users with conditions affecting memory or attention benefit from clear, consistent layouts
- Lesson 987 — What is Web Accessibility and Why It Matters
- Cognitive overload
- Automatic motion can be distracting for users with attention disorders or vestibular conditions.
- Lesson 1187 — Why Carousels Are Challenging for Accessibility
- Cold starts
- measure how long it takes to boot up your dev server from scratch (like turning on a computer).
- Lesson 1405 — Comparing Build TimesLesson 1738 — Server Response Time
- Collects metadata
- like last modification dates from your data
- Lesson 1871 — Generating Sitemaps Automatically
- Color
- (optional): The shadow's color (defaults to text color if omitted)
- Lesson 176 — Text ShadowLesson 202 — Box Shadow BasicsLesson 205 — Text ShadowLesson 494 — LAB and OKLAB Color FunctionsLesson 1712 — Toast Types and Visual Hierarchy
- Color coding
- Use amber/yellow for offline (not red—it's not an error, just a status)
- Lesson 1702 — Offline UI IndicatorsLesson 1917 — Reading Performance Flame Charts
- Color Highlight
- Shows actual colors inline when you write `#3498db` or `rgb(52, 152, 219)`
- Lesson 1462 — VS Code Extensions for Web Development
- Color scales
- For mapping data to color palettes
- Lesson 2630 — Scales: Mapping Data to Visual Properties
- Color Scheme Testing
- Lesson 1063 — Testing Focus Visibility
- Color stops
- Define where each color begins (e.
- Lesson 487 — Gradient Functions: linear-gradient() and radial-gradient()
- Colors
- `color`, `background-color`, `border-color`
- Lesson 509 — Properties That Can and Cannot TransitionLesson 610 — Theme Configuration OverviewLesson 2552 — Animating CSS Properties
- columns
- are visible horizontally.
- Lesson 2103 — Virtual Grid LayoutsLesson 2188 — Console.table() for Structured Data
- Combine `skipWaiting()` with `clients.claim()`
- Lesson 2385 — Lifecycle Best Practices
- Combine into Render Tree
- → The browser merges the DOM and CSSOM to create a "render tree" containing only the visible elements with their styles
- Lesson 20 — The Critical Rendering Path
- Combine with `object-fit`
- to control how images fill their reserved space
- Lesson 1270 — Cumulative Layout Shift (CLS) and Images
- Combining Defenses
- Layer CSRF protections by using `SameSite` cookies (lesson 2913) alongside token-based verification.
- Lesson 2915 — CSRF Protection in SPAs
- Combining sources
- Merging data from localStorage, user input, and uploaded files into one request
- Lesson 892 — Creating FormData Without Forms
- Combining with report-only
- Use `Content-Security-Policy` (enforcing) alongside `Content-Security-Policy-Report-Only` (monitoring)
- Lesson 2877 — Multiple CSP Headers and Policies
- Comboboxes
- (searchable select dropdowns)
- Lesson 1031 — When Semantic HTML Doesn't ExistLesson 1032 — ARIA for Complex Interactive WidgetsLesson 1072 — When Custom Navigation is Needed
- Command-line validation
- Install `vnu` (the Nu Html Checker, which powers the W3C validator):
- Lesson 1452 — Integrating with W3C Validator
- Commit
- Type a message in the text box at the top and click the checkmark to commit staged changes
- Lesson 1468 — Git Integration and Source Control Panel
- Common approaches
- Lesson 1574 — Session Invalidation and Logout
- Common chunk splitting
- goes further: extracting code shared *across multiple routes* into a separate bundle.
- Lesson 1948 — Vendor and Common Chunk Splitting
- Common mistake
- Lesson 2877 — Multiple CSP Headers and Policies
- Common opportunities include
- Lesson 2226 — Interpreting Opportunities and Diagnostics
- Common placeholder techniques
- Lesson 2027 — Why Placeholders Matter
- Common strategies
- Lesson 1088 — Moving Focus After Element Removal
- Common use cases
- Lesson 1492 — 4xx Client Error Codes: 409, 422, and 429
- Communicate with servers
- Fetch new data in the background (though you haven't learned the details yet)
- Lesson 41 — JavaScript's Role: Adding Interactivity
- Community Activity
- Check commit frequency, number of contributors, and whether pull requests are reviewed and merged.
- Lesson 2946 — Evaluating Package Health Before Installing
- Community packages
- like `"eslint-config-airbnb"` or `"eslint-config-standard"`
- Lesson 1429 — Extending Configurations
- Community plugins
- solve countless other needs, from markdown processing to image optimization to Progressive Web App support.
- Lesson 1383 — Vite Plugins
- Compare competitors
- by running parallel tests against their sites
- Lesson 1927 — Performance Monitoring Services
- Compare contexts, not elements
- If Element A (with `z-index: 9999`) won't appear above Element B (with `z-index: 1`), check their *parents*.
- Lesson 235 — Debugging Stacking Issues
- Comparing multiple objects
- with the same structure (like API responses)
- Lesson 2188 — Console.table() for Structured Data
- Compensating for padding
- Pull an element back into alignment after padding pushed it away.
- Lesson 149 — Negative Margins
- complement
- it rather than repeat it.
- Lesson 1143 — Context-Dependent Alt TextLesson 2699 — File Extension Validation
- Complete
- All operations succeeded (fires `oncomplete`)
- Lesson 788 — Transactions: Read, Write, and LifecycleLesson 1113 — aria-atomic for Complete Updates
- Complete control
- over every visual element and interaction
- Lesson 2642 — D3 vs Higher-Level Charting Libraries
- Completing multi-step processes
- After submitting a form step, focus should move to the next step or confirmation message
- Lesson 1087 — Focus Management Fundamentals
- Complex calculations
- Calculate angles, slopes, or geometric patterns mathematically rather than guessing values.
- Lesson 489 — Math Functions: sin(), cos(), tan(), and Trigonometry
- Complex components
- Coordinate multiple visual changes across icons, text, and backgrounds simultaneously.
- Lesson 638 — Group Hover and Focus
- Complex configuration
- Modern development needed simpler defaults
- Lesson 1369 — What Vite Is and Why It Exists
- Complex data relationships
- requiring indexing and querying
- Lesson 782 — What is IndexedDB and When to Use It
- Complex data transformations
- using scales, generators, and layouts
- Lesson 2642 — D3 vs Higher-Level Charting Libraries
- Complex legacy projects
- benefit from Webpack's mature ecosystem.
- Lesson 1398 — When Webpack Makes Sense vs Modern Alternatives
- Complex operations become simple
- Want to add 3 months to a date while respecting month-end boundaries?
- Lesson 2735 — Why Use Date Libraries Over Native Date
- Complex sequencing
- Staggered animations, timelines with precise control over delays and overlaps
- Lesson 2546 — GSAP Overview and Why Use ItLesson 2560 — GSAP vs CSS Animations
- Complex State Management
- Lesson 2490 — When NOT to Use Web Components
- Complex widget relationships
- Nested menus, collapsible tree structures, or tab panels with dynamic content
- Lesson 1036 — ARIA for Application-Like Interfaces
- Complex, Nested Data Requirements
- Lesson 1555 — When GraphQL Shines
- Complexity
- Requires careful configuration to push only what's beneficial
- Lesson 2121 — HTTP/2 Server Push
- Component-based approaches
- (like BEM or OOCSS) group related styles into reusable classes:
- Lesson 654 — Utility-First vs Component-Based CSS: Understanding the Trade-offs
- Component-based responsive design
- means building components that respond to *their own container* using container queries, not the viewport.
- Lesson 439 — Component-Based Responsive Design
- Component-by-component refactoring
- Pick isolated components (buttons, cards, headers) and convert them one at a time.
- Lesson 660 — Migration Strategies: Adding Tailwind to Existing Projects
- Component-level access control
- means creating wrapper components that check permissions and only render their children if the user has the required role.
- Lesson 1632 — Component-Level Access Control
- Component-level styles
- (like a card or button) often benefit from BEM's naming clarity:
- Lesson 604 — Mixing Methodologies Pragmatically
- Component-relative sizing
- `em` (contextual)
- Lesson 159 — Absolute vs Relative: Choosing the Right Unit
- Components
- where items should grow or shrink together
- Lesson 309 — Flexbox vs Grid DecisionLesson 599 — ITCSS (Inverted Triangle CSS) Layer ModelLesson 1331 — What is ITCSS? The Inverted Triangle ApproachLesson 1339 — ITCSS Layer Ordering and Import StrategyLesson 2496 — Understanding Locales and Language Tags
- Components layer
- is where you build the recognizable, reusable pieces of your user interface.
- Lesson 1337 — The Components Layer: UI Patterns and Widgets
- Composite
- .
- Lesson 25 — Paint and CompositeLesson 540 — The Browser's Rendering PipelineLesson 543 — Composite-Only AnimationsLesson 1985 — Understanding the Main Thread and Browser Rendering PipelineLesson 2591 — Understanding the 60fps TargetLesson 2592 — The Rendering PipelineLesson 2595 — Using transform Instead of Position
- Compositing
- happens when the browser has multiple layers and needs to combine them in the correct order to produce the final image you see.
- Lesson 2217 — Paint and Composite Layers
- compositor thread
- a separate processing lane that runs independently of the main JavaScript thread.
- Lesson 2587 — CSS Animation Performance BenefitsLesson 2591 — Understanding the 60fps Target
- Compression Bypass Rules
- Configure which file types bypass compression (already-compressed images, videos) to avoid wasting edge server CPU.
- Lesson 2140 — Compression and CDN Configuration
- Compression/Decompression
- Unpacking zip files or compressing data before sending to servers.
- Lesson 2094 — Real-World Use Cases: Heavy Computation
- Compromised CDNs
- Malicious code injected into third-party resources
- Lesson 842 — Request Integrity and Subresource Integrity
- Compromising maintainer accounts
- to publish malicious updates
- Lesson 2943 — Understanding Supply Chain Attacks
- Computed fields
- are values calculated during the build process by analyzing your content data—they're not stored in your CMS, but generated on the fly from existing information.
- Lesson 1787 — Related Content and Computed Fields
- Computed Properties
- The final accessibility role, name, description, and value the browser exposes
- Lesson 2184 — Accessibility Tree Inspection
- Computed tab
- shows the final, calculated values for every CSS property—the browser's definitive answer after resolving inheritance, cascading, and specificity.
- Lesson 2179 — Inspecting and Modifying CSS PropertiesLesson 2183 — Computed Tab and Final Styles
- Con
- Significantly increases your JavaScript bundle size (often 50–200% larger)
- Lesson 2281 — Inline vs External Source Maps
- Concatenating files
- (bundling multiple CSS/JS files into one) to reduce request count
- Lesson 2119 — HTTP/1.1 Limitations and Connection Management
- Conditional Breakpoints
- to pause only when specific async conditions are met (like a particular response status).
- Lesson 2266 — Breakpoints in Async CodeLesson 2267 — Breakpoint Strategies for Different Scenarios
- Conditional loading
- means your analytics code only initializes after the user grants permission—no tracking happens until they say "yes.
- Lesson 2788 — Consent Management for AnalyticsLesson 2793 — Dynamic Script Loading with JavaScript
- Conditional rendering during hydration
- means deliberately showing *nothing* or a placeholder on the server, then revealing browser- specific content only after hydration completes.
- Lesson 1748 — Conditional Rendering During Hydration
- Conditional sampling
- Only profile when performance thresholds are crossed
- Lesson 2294 — Performance Profiling in Production
- Conditionally rendered
- (admin panels visible only to certain users)
- Lesson 1942 — Component-Based Code Splitting
- Configuration in `.stylelintrc.json`
- Lesson 1442 — Integrating with Prettier
- Configuration object
- how to track items and what animations to use
- Lesson 2576 — useTransition for Mounting/Unmounting
- Configuration required
- These features aren't always enabled by default—you must explicitly configure them.
- Lesson 2884 — CSS-in-JS and CSP Compatibility
- Configure DNS records
- at your registrar to point to your hosting provider
- Lesson 1812 — Custom Domains and DNS
- Configuring Your Audit
- Lesson 2224 — Running Lighthouse in Chrome DevTools
- Conflicting Semantics
- Lesson 1037 — Common ARIA Anti-Patterns to Avoid
- Conic gradients
- rotate around a center point like a pie chart or rainbow wheel, changing colors as they sweep in a circle.
- Lesson 190 — Gradients: Radial and Conic
- Connect with `aria-describedby`
- on the trigger element (not `aria-labelledby`—tooltips supplement, they don't replace labels)
- Lesson 1204 — Tooltip Pattern
- Connection established
- The HTTP connection transforms into a persistent WebSocket connection
- Lesson 877 — WebSocket Fundamentals
- Cons
- Requires an extra tap, "hidden" content some users miss
- Lesson 383 — Mobile Navigation PatternsLesson 403 — Organizing Media Queries in CSSLesson 1570 — Session Storage and ManagementLesson 1584 — Where to Store JWTs: localStorage vs sessionStorageLesson 1704 — Polling vs Event-Driven DetectionLesson 1915 — Synthetic vs Real User Monitoring (RUM)Lesson 2528 — Translation File Formats and StructureLesson 2820 — Client-Side vs Server-Side Feature Flags
- Consent before tracking
- Users must opt-in to non-essential cookies
- Lesson 2780 — Privacy-First Analytics Philosophy
- Consent Management Platform
- is a third-party service that handles the entire lifecycle of user consent—displaying banners, capturing preferences, storing choices, and blocking scripts accordingly.
- Lesson 2973 — Consent Management Platforms (CMPs)
- Conservative Updates
- Avoid breaking changes in service worker updates when possible.
- Lesson 2381 — Handling Version Mismatches
- Consider app criticality
- Banking apps might justify more frequent checks; a recipe site probably doesn't.
- Lesson 2434 — Update Frequency Best Practices
- Consider rendering order
- The browser paints from bottom to top in document order.
- Lesson 2612 — SVG Performance Considerations
- Consider these polyfill costs
- Lesson 2495 — Browser Support and Polyfill Considerations
- Consider your users
- Are they mostly on fast connections (desktop, fiber)?
- Lesson 1950 — Code Splitting Trade-offs and Best Practices
- consistency
- and makes global changes simple—update one custom property, and every element using it updates automatically.
- Lesson 588 — Font Weight ScaleLesson 654 — Utility-First vs Component-Based CSS: Understanding the Trade-offsLesson 1062 — Focus Rings in Design SystemsLesson 1652 — Placeholder Content for Unauthorized UsersLesson 2006 — Build-Time Image Optimization Pipeline
- Consistency is everything
- Your baseline is only valuable if you can recreate the same test environment later:
- Lesson 1928 — Establishing Performance Baselines
- Consistent 60fps
- Even with dozens of simultaneous animations across different properties
- Lesson 2546 — GSAP Overview and Why Use It
- Consistent parsing
- No more browser-specific quirks when parsing date strings—libraries provide reliable, predictable parsing.
- Lesson 2735 — Why Use Date Libraries Over Native Date
- Consistent styling
- across multiple charts with minimal configuration
- Lesson 2642 — D3 vs Higher-Level Charting Libraries
- Console
- Watch messages from the JavaScript engine, including errors and logs.
- Lesson 26 — Browser Developer ToolsLesson 869 — Debugging CORS IssuesLesson 2090 — Worker Scope and Available APIsLesson 2354 — Testing Push Notifications LocallyLesson 2414 — Debugging Workbox in DevTools
- Console Errors
- Lesson 2228 — Best Practices and Security AuditsLesson 2810 — Setting Up Sentry for Frontend
- Consolidate messages
- Instead of announcing "Item added, Item added, Item added," wait and announce "3 items added.
- Lesson 1124 — Avoiding Announcement Spam
- Constraint validation
- is the browser's built-in system that automatically checks whether form inputs meet specific requirements *before* the form is submitted.
- Lesson 896 — What is Constraint Validation?
- Construct the CSSOM
- CSS is parsed into a CSS Object Model, a tree structure mapping styles to elements.
- Lesson 1973 — Understanding Critical Rendering Path
- Construct the DOM
- The browser parses HTML markup into a Document Object Model tree, representing the structure of your page.
- Lesson 1973 — Understanding Critical Rendering Path
- Construct the new URL
- with the target locale (`/fr/products/123`)
- Lesson 2510 — Redirecting Based on Language Change
- Constructor
- Set up initial state and prepare your element
- Lesson 2445 — Defining a Custom Element Class
- Consume anywhere
- React devs use `<company-button>`, Vue devs use `<company-button>`, Angular devs use `<company-button>`—identical markup, identical behavior
- Lesson 2487 — Design System Distribution
- Container queries
- let you style an element based on the size of its *parent container*, not the viewport.
- Lesson 430 — What Are Container Queries?
- Container queries solve this
- by letting elements respond to their *parent container's* size instead.
- Lesson 2656 — Container Queries for Chart Layouts
- Container-edge wrapping
- When an inline element reaches the right edge of its parent container, it wraps to the next line— just like text wrapping in a word processor.
- Lesson 209 — Inline Elements in Normal Flow
- containing block
- comes in.
- Lesson 217 — The Containing Block ConceptLesson 224 — Sticky Positioning Containing Block
- Contains
- `[class*="btn"]` matches when the attribute *contains* the text anywhere
- Lesson 122 — Attribute Selectors
- Content
- = the gift itself (your text/image)
- Lesson 3 — IP Addresses and Domain NamesLesson 32 — CSS Standardization and the Separation of ConcernsLesson 139 — The Box Model: Content, Padding, Border, MarginLesson 196 — Background AttachmentLesson 263 — Understanding Flex Item Sizing BasicsLesson 265 — Flexbox and the Box ModelLesson 282 — flex-basis: Setting Initial Item SizeLesson 2176 — Viewing and Understanding the Box Model (+1 more)
- Content changes frequently
- Delegation handles new elements automatically—no need to rebind listeners after DOM updates.
- Lesson 767 — Delegation vs Direct Binding
- Content changes infrequently
- SSG with periodic rebuilds gives blazing speed with acceptable staleness
- Lesson 1727 — Data Freshness Trade-offs
- Content Delivery Network (CDN)
- a network of servers distributed globally.
- Lesson 1722 — The SSG Build and Delivery ProcessLesson 2156 — What is a CDN and Why Use One
- Content download
- – receiving the actual data
- Lesson 2166 — Understanding Request WaterfallsLesson 2169 — Connection Overhead and TimingLesson 2198 — Understanding the Request Waterfall
- Content editors
- manage content in the CMS interface (Contentful, Sanity, Strapi)
- Lesson 1781 — Headless CMS Integration Fundamentals
- Content Information
- Lesson 2199 — Request and Response Headers
- Content is sequential
- or meant to be read in order (use headings and natural flow)
- Lesson 1175 — Tabs Pattern Overview and When to Use Them
- Content is syndicated
- across multiple domains but you don't control redirects
- Lesson 1850 — Canonical URLs vs 301 Redirects
- Content is very short
- (not worth the cognitive load of switching)
- Lesson 1175 — Tabs Pattern Overview and When to Use Them
- Content negotiation
- `Vary: Accept-Encoding` is the most common—cache separate compressed and uncompressed versions.
- Lesson 2149 — Vary HeaderLesson 2497 — The Accept-Language HeaderLesson 2540 — Content Negotiation vs Explicit URLs
- Content should determine layout
- When you want items to wrap naturally based on their size and available space, Flexbox's content- driven approach shines.
- Lesson 377 — When to Choose Grid Over Flexbox
- Content Type
- Lesson 1246 — Format Selection Strategy
- Content updates
- A news article or product page has changed on the server
- Lesson 813 — Deleting Cached Entries
- Content-first websites
- like news sites, blogs, documentation portals, and online magazines should think twice about SPAs.
- Lesson 1886 — When to Avoid SPAs for SEO
- Content-focused experience
- – Your app primarily displays information rather than using device hardware extensively
- Lesson 2370 — When to Choose PWA vs Native
- Content-Heavy or CMS-Driven Sites
- Lesson 656 — When Traditional CSS Is a Better Choice
- Content-Type
- (if used) must be `application/x-www-form-urlencoded`, `multipart/form-data`, or `text/plain`
- Lesson 861 — Simple vs Preflight RequestsLesson 1500 — Setting Request Headers with Fetch
- Context and relationships
- `<label>` properly associates text with form inputs
- Lesson 997 — Why Semantic HTML Matters for Accessibility
- Context gets lost
- Screen reader users may not understand which slide they're on, how many slides exist, or how to navigate between them without explicit ARIA labels and roles.
- Lesson 1187 — Why Carousels Are Challenging for Accessibility
- Context matters
- banking apps need shorter windows than a blog comment system
- Lesson 1583 — JWT Expiration and the exp Claim
- Context menu actions
- Before displaying or executing options
- Lesson 1641 — Checking Permissions Before Actions
- Context menus
- Provide keyboard-accessible menus with movement options
- Lesson 1207 — Drag and Drop Accessibility
- Context preservation
- Show enough information (titles, categories) so users understand what they're missing without exposing sensitive data
- Lesson 1652 — Placeholder Content for Unauthorized Users
- Context-specific triggers
- In a recipe app, after they've saved their third recipe
- Lesson 2360 — Strategic Prompt Timing
- Contextual Error Messages
- Lesson 1670 — Fallback UI Design Patterns
- Continue
- Repeat until no `next_cursor` is returned (end of data)
- Lesson 1509 — Cursor-Based Pagination
- Continuous Reading
- Insert + Down arrow (NVDA) or Control + Option + A (VoiceOver) reads from current position to the end
- Lesson 1103 — Basic Screen Reader Navigation Commands
- contract
- as long as the endpoints, HTTP methods, and response formats remain consistent, both sides stay decoupled.
- Lesson 1474 — Client-Server SeparationLesson 2955 — Legal Bases for Data Processing
- control
- (your rules).
- Lesson 2364 — Installation and Distribution ModelsLesson 2369 — Update Mechanisms
- Control caching logic
- You decide what to cache and when, unlike browser HTTP caching which follows server headers
- Lesson 809 — What is the Cache API and Why It Matters
- Control overflow
- When content *must* extend beyond its container (like a wide data table), use `overflow-x`:
- Lesson 385 — Avoiding Horizontal Scroll
- controls
- Lesson 2238 — Service Worker Registration and LifecycleLesson 2571 — useAnimation Hook for Imperative Control
- Conversion
- Encourage upgrades or role requests
- Lesson 1652 — Placeholder Content for Unauthorized Users
- Conversion events
- Goal completions like purchases, sign-ups, downloads, or any action you define as valuable.
- Lesson 2779 — Understanding Analytics and User Behavior Tracking
- Convert precaching lists
- If you manually cache arrays of URLs during the `install` event, extract those into a manifest.
- Lesson 2415 — Migration from Manual Service Workers
- Cook on order
- (fallback): Less common dishes made when requested, then kept warm
- Lesson 1799 — ISR with Dynamic Routes
- Cookie sent
- Server responds with `Set-Cookie` header containing session ID
- Lesson 1568 — Cookie-Based Authentication Flow
- Cookie-stored preference
- (persists across sessions)
- Lesson 2502 — Fallback Chains for Locale Resolution
- Cookies
- ~4KB per cookie (tiny!
- Lesson 808 — When to Use Cookies vs Other StorageLesson 821 — Performance CharacteristicsLesson 822 — Data Structure RequirementsLesson 823 — Persistence and DurabilityLesson 824 — Security and Privacy ConsiderationsLesson 825 — Cross-Tab and Offline ScenariosLesson 826 — Decision FrameworkLesson 2233 — Application Panel Overview and Navigation (+3 more)
- coordinate system
- of your SVG.
- Lesson 2043 — SVG viewBox and SizingLesson 2614 — Getting the 2D Rendering Context
- Copy as cURL
- Creates a command-line instruction you can paste into your terminal
- Lesson 2205 — Copying and Replaying Requests
- Copy as fetch
- Generates JavaScript code using the Fetch API
- Lesson 2205 — Copying and Replaying Requests
- Copy those specific rules
- into a new file or `<style>` block
- Lesson 1975 — Extracting Critical CSS Manually
- Core CSS and JavaScript
- files that power your main interface should always be precached.
- Lesson 2418 — Precaching Static Assets
- Core functionality
- (remembering cart contents, preference cookies)
- Lesson 2960 — Legitimate Interest vs Consent
- Core JavaScript
- All standard built-ins (Array, Object, Promise, etc.
- Lesson 2090 — Worker Scope and Available APIs
- Core Web Vital
- that quantifies how much your page's main thread is blocked during the critical loading period.
- Lesson 2075 — Total Blocking Time (TBT) Metric
- Core Web Vitals Hit
- Images directly affect the metrics you've been tracking:
- Lesson 1995 — Why Image Optimization Matters for Performance
- Correct approach
- Each paginated page should typically be self-referencing canonical, unless the content truly duplicates page 1.
- Lesson 1851 — Common Canonical URL Mistakes
- Correct order
- Lesson 1233 — The Order of <source> Elements Matters
- Correlation with Errors
- Did that error happen during an already-slow operation?
- Lesson 2816 — Performance Monitoring Integration
- Correlation with frame drops
- (when GC runs during animations)
- Lesson 2219 — Memory Allocation and Garbage Collection
- CORS (Cross-Origin Resource Sharing)
- is the mechanism that allows servers to explicitly permit cross-origin requests.
- Lesson 860 — What is CORS and Why It Exists
- CORS Headers
- Lesson 2199 — Request and Response Headers
- Cost optimization
- You can negotiate better rates and dynamically route traffic to the most cost-effective provider based on volume tiers or regional pricing.
- Lesson 2164 — Multi-CDN Strategies
- CPU usage
- Color-coded sections show what type of work consumed time (scripting, rendering, painting)
- Lesson 2211 — Performance Panel Overview and Recording
- Crawl budget
- is the number of pages Googlebot will crawl on your site within a given timeframe.
- Lesson 1878 — Googlebot's JavaScript Rendering
- Create a code challenge
- Hash the verifier with SHA-256 and base64-encode it
- Lesson 1623 — PKCE for Public Clients
- Create an `Image` instance
- Lesson 2700 — Image Dimension Validation
- Create animations
- Move elements, fade things in/out, or create complex visual effects
- Lesson 41 — JavaScript's Role: Adding Interactivity
- Create choreographed sequences
- where one change follows another
- Lesson 506 — The transition-delay Property
- Create events that bubble
- Use `new MouseEvent()` or `new Event()` with `bubbles: true`
- Lesson 769 — Testing Delegated Event Handlers
- Create responsive layouts
- where items automatically adjust their size and order
- Lesson 253 — What is Flexbox and Why Use It
- Create responsive type scales
- by adjusting `wght` and `wdth` axes based on viewport size
- Lesson 582 — Variable Fonts in Design Systems
- Create the Render Tree
- The browser combines DOM and CSSOM, calculating which elements are visible and their computed styles.
- Lesson 1973 — Understanding Critical Rendering Path
- Creates a flex container
- the element with `display: flex` becomes the parent coordinator
- Lesson 254 — Enabling Flexbox with display: flex
- Creating a Blob
- from that string with MIME type `'text/javascript'`
- Lesson 2092 — Inline Workers with Blob URLs
- Creating new elements
- Right-click any element in the Elements panel and choose "Edit as HTML.
- Lesson 2178 — Adding and Removing Elements
- Creating the Grid Container
- Lesson 625 — Grid Utilities: Template and Placement
- Critical
- The `<img>` tag is not optional—it's where the `alt` text lives and what older browsers display.
- Lesson 1228 — The <picture> Element StructureLesson 1294 — The <link rel="preload"> Syntax for FontsLesson 1629 — Storing User Roles in the FrontendLesson 1963 — Preconnect for Early ConnectionsLesson 1976 — Critical CSS Extraction ToolsLesson 2021 — Eager Loading Above the FoldLesson 2944 — Reading npm Audit Reports
- Critical above-the-fold images
- should use `loading='eager'` or omit the `loading` attribute entirely (which defaults to eager behavior).
- Lesson 1252 — Lazy Loading and Above-the-Fold Images
- Critical and above-the-fold
- Your main heading font that appears immediately when the page loads
- Lesson 1295 — When to Preload Fonts vs When Not To
- Critical precached assets
- that you know will always be in cache (app shell, offline page)
- Lesson 2390 — Cache-Only Strategy
- Critical Rendering Path
- Lesson 672 — The Critical Rendering PathLesson 1293 — Understanding Font Loading and Critical Rendering PathLesson 2167 — Critical Path Analysis
- Critical rule
- Only variables prefixed with `VITE_` are exposed to your client-side code.
- Lesson 1378 — Environment Variables in Vite
- Critical vs Non-Critical
- Ask yourself: "If this fails, should the whole page break?
- Lesson 1669 — Positioning Error Boundaries in the Component Tree
- Critters
- (from GoogleChromeLabs) is specifically designed for build tools like Webpack.
- Lesson 1976 — Critical CSS Extraction Tools
- Crop intelligently
- when using art direction (different crops for mobile vs desktop)
- Lesson 1261 — Understanding Aspect Ratio in Web Design
- cross axis
- runs perpendicular (at a 90-degree angle) to the main axis.
- Lesson 256 — The Main Axis and Cross AxisLesson 259 — Cross Axis Alignment with align-itemsLesson 276 — align-items: Cross Axis AlignmentLesson 278 — align-content: Multi-Line Cross Axis Distribution
- Cross-browser consistency
- GSAP normalizes browser quirks automatically
- Lesson 2546 — GSAP Overview and Why Use It
- Cross-device thinking
- Don't assume mouse-only interactions.
- Lesson 745 — Event Type Selection and Best Practices
- Cross-domain canonical
- If you republish content from another site:
- Lesson 1847 — The rel="canonical" Link Element
- Cross-domain canonicals
- solve this by pointing from the republished page to the original source, even when they're on completely different domains.
- Lesson 1849 — Cross-Domain Canonicals
- Cross-field dependencies
- When validating against multiple fields (like confirming a password matches or checking dates are in order)
- Lesson 918 — Field-Level vs Form-Level Validation
- Cross-Origin Requests
- Simulate an attack from a different domain using tools like Postman or curl.
- Lesson 2916 — Testing CSRF Protection
- Cross-platform consistency
- The same token approach works identically across iOS, Android, web, desktop apps, and IoT devices.
- Lesson 1576 — Mobile and Native App Authentication
- Cross-Site Request Forgery (CSRF)
- attacks by controlling when browsers send cookies with cross-origin requests.
- Lesson 1597 — Secure and SameSite Cookie Flags
- Cross-Site Scripting (XSS)
- CSP blocks inline scripts and `eval()` by default, forcing all JavaScript to come from approved external files.
- Lesson 2839 — What is Content Security Policy?Lesson 2892 — What is XSS and Why It Matters
- CSP hashes
- provide a way to whitelist *specific, unchanging* inline code by calculating a cryptographic hash of its exact content.
- Lesson 2859 — Understanding CSP Hashes
- CSP's `upgrade-insecure-requests` directive
- (which you learned earlier) automatically upgrades HTTP requests to HTTPS, but it's a *safety net*, not a replacement for proper source updates.
- Lesson 2929 — Upgrading Resources to HTTPS
- CSR
- Seconds to minutes (JavaScript execution required)
- Lesson 1724 — SEO Implications of Each ApproachLesson 1725 — Initial Load Time ComparisonLesson 1726 — Subsequent Navigation PatternsLesson 1729 — Choosing the Right Rendering Strategy
- CSR (Client-Side Rendering)
- fetches data *after* the page loads in the browser.
- Lesson 1727 — Data Freshness Trade-offs
- CSR advantages
- Lesson 1744 — Hydration vs. Client-Side Rendering
- CSR Approach
- Browser downloads JavaScript, executes it, fetches data, *then* renders the largest content element.
- Lesson 1732 — Largest Contentful Paint (LCP)
- CSR challenges
- Lesson 1744 — Hydration vs. Client-Side Rendering
- CSR Fallbacks
- For heavily personalized pages (like dashboards), consider pure client-side rendering.
- Lesson 1763 — SSR and Authentication Requirements
- CSRF attacks fail
- because a malicious site cannot force your browser to add custom headers to cross-origin requests.
- Lesson 1573 — Bearer Token Authentication
- CSRF Tokens
- Generate a unique, unpredictable token for each session or request.
- Lesson 1572 — CSRF Vulnerability in Cookie Auth
- CSS
- , the **W3C CSS specifications** live at `https://www.
- Lesson 37 — Web Standards Today: Finding Current SpecificationsLesson 40 — CSS's Role: Separation of PresentationLesson 45 — How the Pillars Work TogetherLesson 2197 — Recording and Filtering Network Activity
- CSS Custom Properties
- , commonly called **CSS variables**, are entities you define in your CSS that hold specific values you can reuse throughout your stylesheet.
- Lesson 467 — What are CSS Custom Properties?Lesson 1332 — The Settings Layer: Design Tokens and Variables
- CSS enhancement
- Makes everything look polished and organized, but if CSS fails to load, the HTML still functions.
- Lesson 42 — Progressive Enhancement Philosophy
- CSS Files
- Lesson 1375 — Importing Assets in ViteLesson 2158 — Types of Assets to Serve from CDNsLesson 2167 — Critical Path Analysis
- CSS isolation
- Styles defined in the shadow DOM don't leak out, and external styles (mostly) don't leak in.
- Lesson 2460 — Shadow DOM vs Light DOM
- CSS Keyframes
- give you more control for complex animations like sliding in from the side with a bounce:
- Lesson 1710 — Animation and Transitions for Toasts
- CSS Modules
- are a build-time solution that automatically generates unique class names for your styles.
- Lesson 601 — CSS Modules and Scoped StylesLesson 602 — CSS-in-JS PhilosophiesLesson 1341 — What Are CSS ModulesLesson 1350 — CSS Modules vs Other ApproachesLesson 1351 — Understanding the Specificity War Problem
- CSS over inline attributes
- Define reusable styles in `<style>` blocks rather than inline attributes—fewer bytes, better caching, faster parsing.
- Lesson 2612 — SVG Performance Considerations
- CSS Peek
- Jump directly to CSS definitions from your HTML—click a class name and see where it's styled
- Lesson 1462 — VS Code Extensions for Web Development
- CSS pixels
- are abstract reference units that browsers use for consistent sizing.
- Lesson 379 — Device Pixels vs CSS Pixels
- CSS provides the styling
- Lesson 45 — How the Pillars Work Together
- CSS reset
- , where you zero out default browser styles.
- Lesson 130 — The Universal Selector and Its Uses
- CSS Resets
- aggressively strip away all browser defaults, setting everything to zero.
- Lesson 1334 — The Generic Layer: Resets and Normalize
- CSS shorthand
- Lesson 1466 — Emmet for Faster HTML and CSS Writing
- CSS Transitions
- work great for simple enter/exit effects.
- Lesson 1710 — Animation and Transitions for Toasts
- CSS transitions win when
- Lesson 2583 — CSS Transitions vs. Animation Libraries
- CSS variables
- , are entities you define in your CSS that hold specific values you can reuse throughout your stylesheet.
- Lesson 467 — What are CSS Custom Properties?
- CSS-in-JS
- (like styled-components) keeps styles in JavaScript, enabling dynamic styling based on props.
- Lesson 1350 — CSS Modules vs Other Approaches
- CSS-in-JS (styled-components, etc.)
- Lesson 2284 — Source Maps for CSS and Preprocessors
- CSSOM
- (CSS Object Model).
- Lesson 22 — Parsing CSS into the CSSOMLesson 23 — Constructing the Render Tree
- CSSStyleDeclaration
- interface, which every element's `style` object implements.
- Lesson 476 — Custom Properties and JavaScript
- CSV
- could be useful for exporting data to spreadsheets
- Lesson 1475 — Resource RepresentationLesson 2957 — Right to Access and Data Portability
- Ctrl+Arrow
- moves focus without changing selection, **Space** toggles selection
- Lesson 1200 — Listbox Pattern
- Cumulative Layout Shift (CLS)
- Correct dimensions prevent images from resizing after load
- Lesson 428 — Performance Implications of Responsive ImagesLesson 1301 — Why Fallback Font Matching MattersLesson 1311 — Understanding Font-Related Layout ShiftLesson 1887 — What Are Core Web Vitals and Why They MatterLesson 2027 — Why Placeholders MatterLesson 2033 — Aspect Ratio BoxesLesson 2225 — Understanding the Performance Score
- Currency formatting
- uses `NumberFormat` with style options:
- Lesson 2534 — Date, Number, and Currency Formatting
- Curve generators
- control *how* the connecting lines between data points are drawn.
- Lesson 2635 — Area and Curve Generators
- Custom actions in URLs
- `/api/users/123/activate` instead of a state change via `PATCH`
- Lesson 1481 — RESTful vs REST-ish APIs
- custom axes
- for unique properties specific to their typeface.
- Lesson 574 — Font Variation AxesLesson 575 — The font-variation-settings PropertyLesson 1287 — Introduction to Variable FontsLesson 1288 — Variable Font Axes
- Custom Builds
- Lesson 1356 — Managing Third-Party CSS Conflicts
- Custom controls
- (elements with `tabindex="0"`) need especially clear indicators since their interactive nature isn't obvious:
- Lesson 1060 — Focus Styles for Different Element Types
- Custom dimensions
- and **user properties** let you attach this context to your analytics data, enabling powerful segmentation like "How do premium users navigate differently than free users?
- Lesson 2786 — Custom Dimension and User Properties
- custom events
- to signal anything meaningful in your application—like "user-logged-in" or "cart-updated".
- Lesson 744 — Custom Events: Creating and DispatchingLesson 2782 — Event Tracking Fundamentals
- Custom frameworks
- require manual configuration: generate logical property utilities (`margin-inline-start` instead of `margin-left`) or build a compilation step that creates RTL-specific stylesheets with flipped directional properties.
- Lesson 2527 — RTL in CSS Frameworks
- custom headers
- (anything beyond simple headers like `Accept`, `Content-Type`, or `Accept-Language` with limited values), the browser must ask the server for permission first.
- Lesson 865 — Custom Headers and PreflightLesson 1504 — Custom Headers and API Conventions
- Custom interactions
- A grid of cells that users can navigate with arrow keys needs `role="grid"` and `role="gridcell"`
- Lesson 1036 — ARIA for Application-Like Interfaces
- Custom listboxes
- Arrow keys to select items, not Tab through each
- Lesson 1072 — When Custom Navigation is Needed
- Custom logging
- lets you track which resources are cached or served from cache.
- Lesson 2412 — Custom Plugins and Middleware
- Custom Logic
- Hook in with `setCustomValidity()` for business rules
- Lesson 911 — Understanding Constraint Validation API
- Custom methods
- Define unique behaviors specific to your element
- Lesson 2445 — Defining a Custom Element Class
- Custom metrics
- can measure cache hit rates or response times by combining multiple callbacks.
- Lesson 2412 — Custom Plugins and Middleware
- Custom Monitoring Solutions
- (like Real User Monitoring tools) offer:
- Lesson 2232 — Lighthouse Limitations and Complementary Tools
- Custom properties
- are real CSS that browsers understand natively and can be manipulated at runtime
- Lesson 467 — What are CSS Custom Properties?Lesson 477 — Custom Properties vs Preprocessor Variables
- Customizable Standards
- Lesson 1424 — What is ESLint and Why Use It
- Customization Needs
- Lesson 2654 — Choosing the Right Library
- customized built-in elements
- come in.
- Lesson 2453 — Extending Built-in ElementsLesson 2454 — Autonomous vs Customized Built-in Elements
D
- Dangerous APIs avoided
- `eval()`, `Function()`, `setTimeout(string)`, `setInterval(string)`
- Lesson 2906 — XSS Prevention Checklist
- Dashboard data
- where seeing something immediately beats waiting for perfection
- Lesson 2392 — Cache Then Network Strategy
- Dashboard reports
- showing coverage percentages per locale
- Lesson 2536 — Translation Coverage and Missing Key Detection
- data
- that naturally belongs in rows and columns.
- Lesson 120 — When to Use Tables vs. CSS GridLesson 2351 — Displaying Notifications with showNotification()
- Data Fetching Efficiency
- Make one bulk API request instead of thousands of individual calls.
- Lesson 1788 — Build Performance with Large Datasets
- Data grids/tables
- Arrow keys for two-dimensional cell navigation
- Lesson 1072 — When Custom Navigation is Needed
- Data labels
- Place values above bars or next to data points
- Lesson 2608 — SVG Text and Labels in Charts
- data layer
- is a JavaScript object (often named `dataLayer`) that acts as a single source of truth for all tracking data on your site.
- Lesson 2790 — Analytics Data Layer PatternsLesson 2801 — What is a Tag Manager and Why Use OneLesson 2806 — Data Layer Implementation
- Data Parsing
- Converting large CSV files to JSON, parsing complex XML documents, or processing spreadsheet data.
- Lesson 2094 — Real-World Use Cases: Heavy Computation
- Data portability
- Users can request their data in a usable format
- Lesson 2953 — Understanding GDPR and CCPA Fundamentals
- Data Sync
- Native apps often use proprietary sync engines or platform SDKs (like CloudKit or Firebase).
- Lesson 2368 — Offline Capabilities Comparison
- Data tables
- Apply `overflow-x: auto` to make wide tables scrollable without affecting the page's vertical scroll.
- Lesson 246 — overflow-x and overflow-y for directional controlLesson 1110 — Creating a Screen Reader Testing Checklist
- Data theft
- Access sensitive information visible on the page
- Lesson 2892 — What is XSS and Why It Matters
- Date and time
- Lesson 57 — The <time> Element
- Date with time
- Lesson 1007 — Time Element for Dates and Durations
- date-fns
- treats dates as immutable and provides pure functions that always return new values instead of mutating existing dates.
- Lesson 2736 — date-fns: Philosophy and InstallationLesson 2744 — Tree-Shaking and Bundle SizeLesson 2746 — Migrating from Moment.js
- Date/number formatting
- (when tied to language conventions)
- Lesson 2503 — Geolocation vs Language Detection
- DDoS mitigation
- Many CDNs include traffic filtering and rate limiting
- Lesson 2157 — CDN Performance Benefits
- Dead code elimination
- removes unused styles automatically during bundling
- Lesson 602 — CSS-in-JS Philosophies
- Debounce
- Search inputs, form validation, window resize handlers (wait for final size)
- Lesson 1989 — Debouncing and Throttling Event HandlersLesson 2064 — Debouncing and Throttling Events
- Debounce announcements
- Wait until the user finishes an action (like typing) before announcing the result.
- Lesson 1124 — Avoiding Announcement Spam
- Debouncing
- Waits until scrolling stops before running your function
- Lesson 737 — Scroll Events and Performance ConsiderationsLesson 916 — Async Validation PatternsLesson 1118 — Announcement Timing and DelaysLesson 1989 — Debouncing and Throttling Event HandlersLesson 2064 — Debouncing and Throttling Events
- Debugging data transformations
- where you need to spot differences quickly
- Lesson 2188 — Console.table() for Structured Data
- Declarative Nature
- You describe the target state; React Spring figures out how to get there smoothly.
- Lesson 2573 — React Spring Core Concepts
- Decorative icons
- when text already conveys the meaning
- Lesson 1023 — aria-hidden: Removing from Accessibility Tree
- Decorative motion
- enhances aesthetics but doesn't affect comprehension.
- Lesson 555 — Essential Motion vs Decorative Motion
- Decorative or rare
- Special fonts used only in small UI elements
- Lesson 1295 — When to Preload Fonts vs When Not To
- Decorative text
- that's part of the visual design, not core content
- Lesson 1273 — font-display: block Strategy
- Decouple deployment from release
- You can deploy code to production with features "hidden" behind disabled flags, then enable them later without redeploying.
- Lesson 2819 — What Are Feature Flags and Why Use Them
- deep clone
- copies the entire subtree: all nested elements, text content, and attributes.
- Lesson 700 — Cloning Elements with cloneNodeLesson 2475 — Cloning Template Content with content.cloneNode()
- Deep integration
- with SVG manipulation or the enter-update-exit pattern
- Lesson 2642 — D3 vs Higher-Level Charting Libraries
- Deep linking
- External links can point directly to specific filtered states.
- Lesson 1518 — URL State Management
- default
- Most common—balanced performance and freshness
- Lesson 841 — Request Caching: cache, reload, no-cache, force-cacheLesson 2550 — Duration, Delay, and Repeat
- Default focus style
- for standard interactive elements (buttons, links)
- Lesson 1062 — Focus Rings in Design Systems
- Default locale
- (your application's fallback, e.
- Lesson 2502 — Fallback Chains for Locale ResolutionLesson 2504 — Handling Unsupported Locales
- Defense in depth
- Layer policies from different configuration sources (application + infrastructure)
- Lesson 2877 — Multiple CSP Headers and Policies
- Defense strategies
- Lesson 2951 — Scoped Packages and Registry Security
- Defensive permission checks
- wait for verification before rendering anything.
- Lesson 1647 — Optimistic vs Defensive Permission Checks
- defer
- downloading that image or iframe until the user scrolls close enough to view it.
- Lesson 1250 — The loading='lazy' AttributeLesson 2792 — async vs defer AttributesLesson 2800 — Script Loading Best Practices
- Defer browser-specific content
- Use `useEffect` (runs only on client, after hydration) for anything that depends on `window`, `document`, or browser APIs
- Lesson 1747 — Avoiding Hydration Mismatches
- Defer critical rendering
- Use `async` or `defer` attributes so third-party scripts don't block HTML parsing.
- Lesson 2829 — Embedding Third-Party Scripts Safely
- Defer dynamic content
- Render time-sensitive or browser-specific content only after hydration completes
- Lesson 1746 — Hydration Mismatch Errors
- Define fallback stacks
- Choose system fonts that match your web font's metrics to minimize layout shift
- Lesson 572 — Web Font Best Practices Checklist
- Define precise weight tokens
- instead of jumping from 400 to 700—use `625` for subheadings
- Lesson 582 — Variable Fonts in Design Systems
- Define structure once
- in a `<template>` with `<slot>` placeholders
- Lesson 2485 — Templates and Slots Pattern: Reusable Component Markup
- Define two CSS classes
- one without the background image (initial state) and one with it (loaded state)
- Lesson 1956 — Lazy Loading Background Images
- Defining Columns
- Lesson 625 — Grid Utilities: Template and Placement
- Degrade gracefully
- Disable features that depend on the missing script
- Lesson 2797 — Error Handling for External Scripts
- DELETE
- Remove a resource
- Lesson 833 — Handling Different HTTP Methods: PUT, PATCH, DELETELesson 1470 — What is REST and Why It MattersLesson 1691 — Idempotent Request DesignLesson 2234 — Inspecting localStorage and sessionStorage
- Deleting content
- When a user deletes an item in a list, focus should move to a logical nearby element (the next item, previous item, or a parent container)
- Lesson 1087 — Focus Management Fundamentals
- Deleting records
- uses the `delete()` method, which removes a record by its key.
- Lesson 791 — Updating and Deleting Records
- Dependencies
- "Don't send this stream until that one completes"
- Lesson 2123 — Stream Prioritization in HTTP/2
- Dependency Management
- Webpack analyzes your code's `import` and `require` statements to understand which files depend on which.
- Lesson 1387 — What is Webpack and Why Use It
- Deploy
- These pre-built HTML, CSS, and JavaScript files are uploaded to a hosting service or CDN
- Lesson 1721 — What is Static Site Generation (SSG)?Lesson 1810 — GitHub Pages
- Deployment
- serves pre-rendered pages to users
- Lesson 1781 — Headless CMS Integration FundamentalsLesson 2537 — Collaboration with Translators and Translation Services
- Deprecated APIs
- Lesson 2228 — Best Practices and Security Audits
- Deprecated elements
- Using outdated tags like `<font>` or `<center>`
- Lesson 1446 — Why Lint HTML? Catching Errors Early
- Depth limiting
- is simpler: the server counts how many levels deep a query nests and rejects anything beyond a maximum depth (commonly 5-10 levels).
- Lesson 1544 — Query Complexity and Depth Limiting
- Descent
- is the distance below the baseline, reserved for letters that hang down like 'g', 'y', or 'p'.
- Lesson 1302 — Measuring Font Metrics: Ascent, Descent, and Line GapLesson 1314 — Matching Fallback Font Metrics
- Description lists
- (`<dl>`) pair terms (`<dt>`) with definitions (`<dd>`), perfect for glossaries or metadata.
- Lesson 1001 — Lists: Ordered, Unordered, and Description
- Descriptive text
- "Contact Information" not just "Info"
- Lesson 1104 — Heading Navigation and Structure TestingLesson 1130 — Icon-Only Buttons and Links
- Deserializing (String → Object)
- Lesson 775 — Storing Complex Data with JSON
- Design freedom
- Thousands of typefaces beyond the basic system fonts
- Lesson 558 — Introduction to Web Fonts
- Design Phase
- Accessibility starts with wireframes and mockups.
- Lesson 994 — Accessibility in the Development Lifecycle
- Design System Components
- Build your button library, form controls, or data visualization widgets as Web Components.
- Lesson 2494 — Hybrid Approach with Frameworks
- Desired confidence level
- Higher confidence requires more data
- Lesson 2827 — Statistical Significance and Sample Size
- Desktop (1200px wide)
- Show the full horizontal group shot
- Lesson 1227 — Understanding Art Direction in Responsive Images
- Desktop / Laptop
- Lesson 391 — Common Breakpoint Values
- Desktop licenses
- typically allow you to install fonts on your computer for creating graphics, but *not* for web embedding via `@font-face`.
- Lesson 563 — Font Licensing and Legal Considerations
- Desktop-First (max-width)
- Start with styles for large screens, then add media queries that apply *when the screen is at most* a certain width.
- Lesson 392 — min-width vs max-width Strategies
- Detached DOM nodes
- still referenced in JavaScript
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- Detailed source maps
- Easy debugging that maps back to original source files
- Lesson 1393 — Development vs Production Mode
- Detect location
- from IP addresses or request headers
- Lesson 1762 — Geographic and Personalized Content
- Detect the error
- (check response status or error message)
- Lesson 2911 — CSRF Tokens in Form Submissions
- Detect the failure
- When a `fetch()` in your Service Worker fails (network error, timeout, or user offline), catch that error
- Lesson 2401 — Background Sync for Failed Requests
- Detect the update
- Listen for the `updatefound` event on your service worker registration, and watch for the new worker entering the `installed` state while an old one is still active (meaning it's waiting).
- Lesson 2430 — Prompting Users for Updates
- Detect trigger
- Use Intersection Observer for visibility or click handlers for interaction
- Lesson 2799 — Lazy Loading Third-Party Widgets
- Detecting Online/Offline State
- techniques you learned, then retrieve and replay all queued requests.
- Lesson 2329 — Queue Failed Requests
- Detection
- If the *old* refresh token is used again, the server knows something is wrong—either:
- Lesson 2924 — Refresh Token Rotation
- Detection logic
- Lesson 2019 — Lazy Loading Images with JavaScript Fallback
- Detects the change
- through its built-in file watcher
- Lesson 1374 — Hot Module Replacement (HMR) in Vite
- Developer experience
- Upload once, optimization happens invisibly
- Lesson 2006 — Build-Time Image Optimization PipelineLesson 2368 — Offline Capabilities ComparisonLesson 2404 — What is Workbox and Why Use ItLesson 2865 — Build Tools and Automatic Hash Generation
- Developer experience focus
- If your team values quick iteration and simple setup over maximum control, modern tools remove Webpack's learning curve.
- Lesson 1398 — When Webpack Makes Sense vs Modern Alternatives
- development
- and **production**.
- Lesson 616 — Development vs Production BuildsLesson 2280 — Generating Source Maps in Build Tools
- Development complexity
- You'll need conditional loading logic
- Lesson 2495 — Browser Support and Polyfill Considerations
- Development configuration example
- Lesson 1349 — Naming Hash Configuration
- Development detection
- Allow HTTP only in local development environments
- Lesson 2932 — Detecting HTTPS in JavaScript
- Development Experience
- Combined with features like hot module replacement, Webpack creates a smooth development workflow.
- Lesson 1387 — What is Webpack and Why Use It
- Development Phase
- As you build features—whether forms, navigation, or interactive components—you apply semantic HTML, ARIA attributes, and keyboard support from day one.
- Lesson 994 — Accessibility in the Development Lifecycle
- Device
- Desktop or Mobile (this affects viewport size and simulated hardware)
- Lesson 2224 — Running Lighthouse in Chrome DevTools
- Device fingerprinting
- creates a unique identifier based on device characteristics like browser version, screen resolution, installed fonts, timezone, and other semi-stable attributes.
- Lesson 2925 — Fingerprinting and Token Binding
- Device fingerprints
- created from browser characteristics, screen resolution, installed fonts, and timezone settings can uniquely identify users across sessions.
- Lesson 2956 — Personal Data in the Frontend
- Device pixel ratio
- (standard or high-density display?
- Lesson 417 — Width Descriptors (w) in srcsetLesson 1217 — Device Pixel Ratio and srcset
- Device pixels
- (also called physical pixels or hardware pixels) are the actual tiny lights built into your screen.
- Lesson 379 — Device Pixels vs CSS Pixels
- Device-specific content
- `Vary: User-Agent` (use cautiously—creates many cache entries).
- Lesson 2149 — Vary Header
- DevTools first
- Resize through all your breakpoints slowly, watching for layout breaks
- Lesson 404 — Testing Media Queries Across Devices
- DevTools Network Throttling
- lets you simulate different network speeds and conditions.
- Lesson 2332 — Testing Offline Experiences
- DevTools-only helpers
- that give you shorthand methods for common debugging tasks, especially DOM querying.
- Lesson 2194 — Console Utilities and $ Shortcuts
- Diagnostics
- provide additional context about your page's behavior but don't directly translate to time savings.
- Lesson 2226 — Interpreting Opportunities and Diagnostics
- dialog
- is a conversation window that opens on top of your main content.
- Lesson 1148 — Dialog vs Modal: Semantic DifferencesLesson 1206 — Date Picker Pattern
- Dialog headings
- that announce content to screen readers
- Lesson 1046 — tabindex='-1' for Programmatic Focus
- Dialogs/Modals
- Focus trapping and context need explicit markup
- Lesson 1032 — ARIA for Complex Interactive Widgets
- Different Background Colors
- Lesson 1063 — Testing Focus Visibility
- Different HTML tags
- Features worked in one browser but not the other
- Lesson 29 — The Browser Wars and Their Legacy
- different images
- at different breakpoints?
- Lesson 421 — Art Direction with the Picture ElementLesson 1842 — Twitter Cards vs Open Graph Fallbacks
- Different locales, different rules
- Lesson 2771 — Intl.NumberFormat Basics
- Direct binding
- means calling `addEventListener()` on each element individually.
- Lesson 767 — Delegation vs Direct Binding
- Direct Cache Reads
- Your app can check the cache first before making network requests, implementing your own cache-first strategy without a service worker.
- Lesson 818 — Cache API Outside Service Workers
- direct children
- now:
- Lesson 268 — display: flex and Creating a Flex ContainerLesson 2483 — Styling Slotted Content with ::slotted()
- Direction
- `to right`, `to bottom`, `45deg`, etc.
- Lesson 487 — Gradient Functions: linear-gradient() and radial-gradient()
- Directive Matching
- The browser finds the relevant directive (`script-src`, `img-src`, etc.
- Lesson 2840 — How CSP Works in Browsers
- directives
- (instructions) that tell browsers and intermediary caches exactly how to handle your resources.
- Lesson 2142 — Cache-Control DirectivesLesson 2874 — CSP Header Format and Syntax
- Disable
- elements when:
- Lesson 1634 — Disabled vs Hidden ElementsLesson 1650 — Disabled vs Hidden UI Elements
- Disabled State
- The button is visible but grayed out and unresponsive.
- Lesson 1655 — Action Button StatesLesson 2969 — Granular Cookie Category Controls
- Disabling vs Removing
- Disabling a breakpoint keeps it in place but stops execution from pausing there.
- Lesson 2264 — Disabling and Managing Breakpoints
- Disclosure widgets
- reveal/hide content using `aria-expanded` on a button
- Lesson 1172 — Disclosure Widgets vs True Menus
- Discovers all routes
- by scanning your pages directory or querying your content source
- Lesson 1871 — Generating Sitemaps Automatically
- Discovery through search matters
- – Users should find you via Google, not just app stores
- Lesson 2370 — When to Choose PWA vs Native
- Discussion and Refinement
- Lesson 36 — Browser Vendors and the Standards Process
- Dismiss
- Hide the notification but continue retrying in background
- Lesson 1694 — User Feedback During Retries
- Dismissal Patterns
- If users repeatedly dismiss your prompt, that's a signal your timing or messaging needs adjustment.
- Lesson 2361 — Install Analytics and Metrics
- Dismissibility
- Let users close toasts, but keep persistent indicators visible
- Lesson 1702 — Offline UI Indicators
- Dispatch on child elements
- Call `dispatchEvent()` on the actual target element
- Lesson 769 — Testing Delegated Event Handlers
- Display
- It renders everything visually on your screen as the webpage you see
- Lesson 16 — What is a Web Browser?Lesson 911 — Understanding Constraint Validation API
- Display a fallback placeholder
- – Show a generic image or icon indicating the content failed
- Lesson 2025 — Handling Failed Lazy Load Requests
- Display properties
- Lesson 541 — Properties That Trigger Reflow
- Display violations inline
- with colored underlines (red for errors, yellow for warnings)
- Lesson 1464 — Inline Error Highlighting with ESLint
- Display-P3
- is a wider color space that can display about **25% more colors** than sRGB.
- Lesson 491 — Understanding Color Spaces: sRGB, Display-P3, and Beyond
- Displays the consent banner
- with legally compliant wording and UI
- Lesson 2973 — Consent Management Platforms (CMPs)
- Distribute space
- evenly between elements, even when their sizes aren't fixed
- Lesson 253 — What is Flexbox and Why Use It
- Distributed load
- Traffic spreads across dozens or hundreds of edge servers
- Lesson 2157 — CDN Performance Benefits
- DNS (Domain Name System)
- acts like the internet's phone book—it translates human-readable domain names into server IP addresses.
- Lesson 1812 — Custom Domains and DNS
- DNS lookup
- to convert that domain name into an IP address.
- Lesson 1962 — DNS Prefetch for Domain ResolutionLesson 2166 — Understanding Request WaterfallsLesson 2169 — Connection Overhead and TimingLesson 2198 — Understanding the Request Waterfall
- DNS lookup happens
- your browser asks DNS servers "What's the IP address for example.
- Lesson 15 — Putting It All Together: A Complete Page Load
- DNS lookup time
- – Translating the domain name to an IP address
- Lesson 1907 — Time to First Byte (TTFB)
- DNS prefetch
- (which resolves domain names), prefetch actually downloads complete resources like JavaScript files, CSS, images, or even entire HTML documents.
- Lesson 1964 — Prefetch for Future Navigation
- DNS-prefetch
- Third-party domains you'll definitely access (analytics, fonts, APIs)
- Lesson 88 — Preloading and Resource HintsLesson 1961 — Understanding Resource Hints Overview
- Do allow
- essential functionality like authentication and security
- Lesson 2977 — Respecting Do Not Track and Global Privacy Control
- Do Not Track (DNT)
- An older header (`DNT: 1`) indicating the user doesn't want to be tracked.
- Lesson 2977 — Respecting Do Not Track and Global Privacy Control
- Do Not Track signals
- Must honor browser-level privacy preferences
- Lesson 2953 — Understanding GDPR and CCPA Fundamentals
- Document differences
- note which readers need workarounds
- Lesson 1125 — Testing Announcements Across Screen Readers
- Document Nodes
- (type 9) represent the entire document itself — the root of the DOM tree.
- Lesson 664 — Node Types in the DOM
- Document Object Model
- is a programming interface that represents your HTML document as a tree of objects.
- Lesson 662 — What is the DOM and Why It Exists
- Document Object Model (DOM)
- a tree-like structure of objects that represents your webpage.
- Lesson 21 — Parsing HTML into the DOM
- Document outline makes sense
- Could someone understand the page structure from headings alone?
- Lesson 1104 — Heading Navigation and Structure Testing
- Document schemas
- Keep a changelog of what each version contains
- Lesson 796 — IndexedDB Wrappers and Best Practices
- Document State
- Information about scroll position, form values, and other page conditions
- Lesson 961 — The History Stack and Navigation States
- Document Structure
- Headings create a logical outline of your content.
- Lesson 65 — Headings Hierarchy (h1-h6)Lesson 1110 — Creating a Screen Reader Testing Checklist
- Document structure roles
- organize content (`heading`, `list`, `table`)
- Lesson 1014 — ARIA Roles: Defining Element PurposeLesson 1017 — Document Structure Roles
- Document Type Declaration
- (or DOCTYPE) is the very first line you write in an HTML file.
- Lesson 79 — The Document Type Declaration
- Documentation
- Longer intervals (hours/days) since content rarely changes
- Lesson 1796 — Configuring Revalidation Intervals
- Documentation Quality
- Poor or missing documentation often correlates with poor code quality and security practices.
- Lesson 2946 — Evaluating Package Health Before Installing
- Documentation Sites
- Lesson 1776 — When to Use SSGLesson 1822 — When Jamstack Fits Best
- Documented consent
- you must keep records of when and how consent was obtained
- Lesson 2965 — Cookie Consent Legal Requirements
- Does it need transparency
- Lesson 2002 — Format Selection Decision Tree
- Does something
- with the current element (log it, modify it, collect data, etc.
- Lesson 712 — Walking the DOM Tree Recursively
- doesn't
- reject for HTTP errors like 404 or 500.
- Lesson 828 — The Response Object: Properties and Status HandlingLesson 2732 — Missing Date Arithmetic OperationsLesson 2901 — Framework Auto-Escaping
- DOM
- (your HTML structure) and the **CSSOM** (your CSS styles)?
- Lesson 23 — Constructing the Render TreeLesson 662 — What is the DOM and Why It ExistsLesson 671 — DOM vs HTML Source
- DOM Breakpoints
- on elements that multiple async operations modify to see which code path reaches them first.
- Lesson 2267 — Breakpoint Strategies for Different Scenarios
- DOM Construction
- As it parses, it builds the DOM tree node by node
- Lesson 672 — The Critical Rendering Path
- DOM tree
- (Document Object Model) that you're familiar with, and the **accessibility tree**—a simplified version containing only the information assistive technologies like screen readers need.
- Lesson 2184 — Accessibility Tree Inspection
- DOM-based
- Each element is accessible to screen readers and can be styled with CSS
- Lesson 2601 — SVG Fundamentals for Data Visualization
- Domain
- = recipient's address
- Lesson 5 — What is a URL?Lesson 778 — Security and Same-Origin PolicyLesson 860 — What is CORS and Why It ExistsLesson 2209 — Tracking Third-Party RequestsLesson 2630 — Scales: Mapping Data to Visual Properties
- Domain and Range
- Every scale has two key components:
- Lesson 2630 — Scales: Mapping Data to Visual Properties
- Domain Name System (DNS)
- is like a massive phone book for the Internet.
- Lesson 4 — DNS: The Phone Book of the Internet
- Domain set explicitly
- Cookie is sent to that domain *and all subdomains* (`Domain=example.
- Lesson 1602 — Domain and Path Restrictions for Cookies
- domain sharding
- splitting resources across multiple subdomains (`cdn1.
- Lesson 2119 — HTTP/1.1 Limitations and Connection ManagementLesson 2125 — HTTP/2 Anti-Patterns: Domain Sharding and Spriting
- DOMContentLoaded
- fires when the HTML document has been completely parsed and the DOM tree is built, but *before* images, stylesheets, and other external resources finish loading.
- Lesson 738 — Window and Document Events: load, DOMContentLoaded, resize
- DOMPurify
- is the gold-standard library for client-side HTML sanitization.
- Lesson 2904 — DOMPurify for HTML Sanitization
- Don't
- use it for every single group of links — footer links or social media icons typically don't need `<nav>`.
- Lesson 48 — The <nav> ElementLesson 49 — The <main> ElementLesson 243 — When Floats Are Still AppropriateLesson 1116 — Alert Role for Urgent MessagesLesson 1953 — Lazy Loading IframesLesson 2723 — Retry Logic for Failed Uploads
- Don't break functionality
- Your component must work perfectly even if animations are disabled.
- Lesson 1185 — Animated Transitions and Accessibility
- Don't build
- behavioral profiles for personalization
- Lesson 2977 — Respecting Do Not Track and Global Privacy Control
- Don't collect personal data
- – No tracking across sites or building user profiles
- Lesson 2785 — Privacy-Focused Alternatives
- Don't deploy them publicly
- Keep source maps off your production server entirely, using them only locally or in staging environments.
- Lesson 2282 — Production Source Maps: Security and Privacy
- Don't hardcode redirect URIs
- Register exact URIs with providers and validate them server-side—mismatches create open redirect vulnerabilities.
- Lesson 1626 — OAuth Libraries and Security Best Practices
- Don't lazy-load critical images
- Above-the-fold images, logos, and key product images should load immediately for both users and crawlers.
- Lesson 1257 — Lazy Loading and SEO Considerations
- Don't load
- non-essential tracking scripts (Google Analytics, Facebook Pixel)
- Lesson 2977 — Respecting Do Not Track and Global Privacy Control
- Don't overuse it
- Applying `will-change` to every element or leaving it on permanently wastes memory.
- Lesson 544 — The will-change PropertyLesson 1963 — Preconnect for Early Connections
- Don't self-host
- when the CDN offers significant edge network benefits, shared cache hits across sites, or automatic updates are critical (security patches).
- Lesson 2051 — Self-Hosting Third-Party Resources
- Don't share
- user data with third-party advertisers
- Lesson 2977 — Respecting Do Not Track and Global Privacy Control
- Don't skip levels
- don't jump from `<h2>` to `<h4>` without an `<h3>` in between
- Lesson 999 — Heading Hierarchy and Page Outline
- Don't spam
- Consider debouncing rapid updates (wait ~300ms after typing stops)
- Lesson 1122 — Search Result Announcements
- Don't use cookies
- – No consent banners required in most jurisdictions
- Lesson 2785 — Privacy-Focused Alternatives
- Don't use it
- for critical above-the-fold content or your Largest Contentful Paint (LCP) image—those should load immediately with `loading="eager"` (or no attribute, since eager is the default).
- Lesson 2017 — Native Lazy Loading with loading Attribute
- Don't use it for
- arbitrary addresses mentioned in your content (like "the store is located at.
- Lesson 1010 — Address Element for Contact Information
- Don't use SVG for
- Lesson 1244 — SVG: Scalable Vector Graphics for the Web
- Dot notation
- works for simple, known property names.
- Lesson 2272 — Watching Object Properties and Nested Values
- Double-check package names
- before installing (especially popular libraries)
- Lesson 2951 — Scoped Packages and Registry Security
- Double-Submit Cookie Pattern
- Send the CSRF token both as a cookie and as a request parameter—the server verifies they match.
- Lesson 1572 — CSRF Vulnerability in Cookie Auth
- Down Arrow
- keys, just like they can in native desktop applications.
- Lesson 1078 — Vertical Navigation in MenusLesson 1166 — Keyboard Navigation in MenusLesson 1178 — Keyboard Navigation in TabsLesson 1199 — Building an Accessible Combobox
- Download
- Visit nvaccess.
- Lesson 1101 — Setting Up NVDA on WindowsLesson 1507 — Why Pagination MattersLesson 2537 — Collaboration with Translators and Translation Services
- Download Counts
- Weekly downloads signal community trust and usage.
- Lesson 2946 — Evaluating Package Health Before Installing
- Download the script
- , often without compression optimizations
- Lesson 2047 — The Performance Cost of Third-Party Scripts
- Download unpredictably
- , since you don't control their servers or caching
- Lesson 2047 — The Performance Cost of Third-Party Scripts
- Downloads in parallel
- , then executes **immediately when ready** (pausing the parser if still running).
- Lesson 2048 — async vs defer for Script Loading
- Downsampling
- Show fewer points while preserving visual trends
- Lesson 2612 — SVG Performance ConsiderationsLesson 2652 — Performance with Large Datasets
- Downside
- If users have many tabs or slow connections, forcing them to "visit" every tab while arrowing through can be annoying or performance-heavy.
- Lesson 1180 — Automatic vs Manual Tab Activation
- DPR of 2
- 1 CSS pixel = 4 device pixels (2×2 grid) — common on modern phones
- Lesson 379 — Device Pixels vs CSS Pixels
- DPR of 3
- 1 CSS pixel = 9 device pixels (3×3 grid) — high-end displays
- Lesson 379 — Device Pixels vs CSS Pixels
- Drag-and-drop
- interfaces with no button-based alternatives
- Lesson 1196 — Touch Gesture Accessibility Considerations
- Dramatic effects
- `1s` to `3s` (deliberate and attention-grabbing)
- Lesson 503 — The transition-duration Property
- Draw the arc
- Use SVG's `M` (move), `A` (arc), and `L` (line) path commands to create each slice
- Lesson 2607 — Creating Pie and Donut Charts
- Drawbacks
- Lesson 602 — CSS-in-JS PhilosophiesLesson 2037 — SVG Basics and Inline vs ExternalLesson 2039 — Icon Systems: Sprite Sheets vs Symbol Definitions
- Dropdown Menu
- Lesson 2506 — Language Switching UI Patterns
- Dropdown menus
- Arrow keys to navigate menu items, Escape to close
- Lesson 1072 — When Custom Navigation is Needed
- DSN
- (Data Source Name) is your unique project identifier from Sentry's dashboard.
- Lesson 2810 — Setting Up Sentry for Frontend
- Dual interaction modes
- typing to search/filter and keyboard navigation to browse options
- Lesson 1198 — Combobox Pattern Fundamentals
- Dual-mode patterns
- Implement both drag-drop AND keyboard shortcuts (like arrow keys + modifier keys)
- Lesson 1207 — Drag and Drop Accessibility
- Dual-read period
- – Your auth logic checks both locations for tokens, preferring the new one if present
- Lesson 1604 — Migrating Between Storage Strategies
- Duplicate content
- shown for visual emphasis but redundant aurally
- Lesson 1023 — aria-hidden: Removing from Accessibility Tree
- Duplicate data
- Don't repeat the same schema multiple times unnecessarily
- Lesson 1868 — Structured Data Best Practices and Common Mistakes
- Duplicate dependencies
- Multiple chunks containing the same code that should be in a shared vendor bundle
- Lesson 1949 — Analyzing Bundle Size and Split Points
- Duplicate work
- server renders, then client re-renders to hydrate
- Lesson 1744 — Hydration vs. Client-Side Rendering
- Duration
- controls speed:
- Lesson 629 — Transitions and Animation UtilitiesLesson 1007 — Time Element for Dates and DurationsLesson 1986 — Identifying Long Tasks with Performance APILesson 2070 — The Long Tasks APILesson 2202 — Identifying Slow ResourcesLesson 2213 — Identifying Long Tasks and Blocking ScriptsLesson 2972 — Cookie Policy Pages and Transparency
- Duration and timing
- Lesson 2565 — Transition Configuration
- Duration vs Physics
- Where GSAP or CSS animations specify "animate over 300ms," React Spring says "animate with tension: 170, friction: 26.
- Lesson 2573 — React Spring Core Concepts
- During Development (Lab)
- Use tools like Lighthouse or WebPageTest in controlled environments to catch issues early.
- Lesson 1914 — Performance Measurement Overview
- During Tab/Shift+Tab
- Lesson 1090 — Focus Trap Implementation
- Dynamic
- Easier to adjust programmatically than hex codes
- Lesson 182 — RGB and RGBA FunctionsLesson 279 — gap: Modern Spacing Between Flex ItemsLesson 1943 — Dynamic Import Syntax and Promises
- Dynamic changes
- Do live regions actually announce updates naturally?
- Lesson 1099 — Why Screen Reader Testing is Essential
- Dynamic compression
- means your server compresses files on-the-fly for each request.
- Lesson 2137 — Pre-Compression vs Dynamic Compression
- dynamic content
- safely
- Lesson 14 — Localhost and Development ServersLesson 760 — Basic Delegation PatternLesson 1110 — Creating a Screen Reader Testing ChecklistLesson 1975 — Extracting Critical CSS ManuallyLesson 2136 — Compression Levels and Trade-offsLesson 2392 — Cache Then Network StrategyLesson 2862 — Nonces vs Hashes: When to Use Each
- Dynamic fetching
- Replace build-time data queries with request-time queries
- Lesson 1792 — Preview Modes for Draft Content
- Dynamic forms
- Building requests from user interactions spread across multiple UI elements
- Lesson 892 — Creating FormData Without Forms
- Dynamic imports
- load modules on-demand using the `import()` function syntax.
- Lesson 1940 — Static vs Dynamic ImportsLesson 1941 — Route-Based Code Splitting
- Dynamic personalization
- without origin latency: Show different content based on user location, device, or cookies—all processed at the edge.
- Lesson 2163 — CDN Edge Functions and Workers
- Dynamic styling
- using JavaScript variables and props becomes seamless
- Lesson 602 — CSS-in-JS Philosophies
- Dynamic Table
- A session-specific table that remembers headers you've sent before.
- Lesson 2122 — HTTP/2 Header Compression with HPACK
- Dynamic values
- Animating to values you don't know until runtime (CSS requires predefined keyframes)
- Lesson 2546 — GSAP Overview and Why Use It
- Dynamic, personalized content
- (dashboards, user profiles, feeds) often needs **CSR** or **SSR** depending on SEO requirements.
- Lesson 1729 — Choosing the Right Rendering Strategy
- Dynamically injected content
- Ads, embeds, or banners that push existing content
- Lesson 1895 — Cumulative Layout Shift (CLS) Explained
- Dynamically load
- Use the dynamic script loading techniques you learned in lesson 2793
- Lesson 2799 — Lazy Loading Third-Party Widgets
E
- E-commerce
- Static product pages, dynamic cart and availability
- Lesson 1778 — Hybrid ApproachesLesson 2782 — Event Tracking Fundamentals
- Early, synchronous resources
- that must complete before rendering starts
- Lesson 2167 — Critical Path Analysis
- Ease of testing
- Quickly swap fonts during design without downloading files
- Lesson 561 — Self-Hosting vs. Font Services
- Easier logout
- Delete the token from secure storage—done.
- Lesson 1576 — Mobile and Native App Authentication
- Easier to maintain
- Update data without touching presentation markup
- Lesson 1855 — JSON-LD vs Microdata vs RDFa
- Easily accessible
- linked in footers, during signup, and in settings
- Lesson 2981 — Transparent Data Practices
- Easing functions
- Lesson 2565 — Transition Configuration
- Easy withdrawal
- consent can be withdrawn as easily as it was given
- Lesson 2965 — Cookie Consent Legal Requirements
- ECMAScript
- the official specification that defines how the language should work.
- Lesson 33 — JavaScript's Creation and Standardization as ECMAScript
- Edge Compression
- Many CDNs offer "edge compression" that compresses at their servers.
- Lesson 2140 — Compression and CDN Configuration
- Edge functions
- transform that warehouse into a mini factory—it can now *modify* the contents before shipping them out.
- Lesson 2163 — CDN Edge Functions and Workers
- Edge Rendering
- Use edge functions close to users to handle authentication and rendering, reducing geographic latency.
- Lesson 1763 — SSR and Authentication Requirements
- Education
- Explain what the feature does and why it's valuable
- Lesson 1652 — Placeholder Content for Unauthorized Users
- Efficient memory management
- Go's garbage collector is optimized for throughput, and the language encourages efficient memory usage patterns
- Lesson 1400 — esbuild: The Speed Champion
- Efficient tree-shaking
- Users of your library get minimal bundle sizes
- Lesson 1401 — Rollup: The Library Bundler
- Element
- A part inside the block that doesn't make sense on its own.
- Lesson 596 — BEM (Block Element Modifier) MethodologyLesson 709 — nextElementSibling and previousElementSiblingLesson 1320 — BEM Fundamentals: Block, Element, Modifier
- Element List
- Insert + F7 (NVDA) or Control + Option + U (VoiceOver) shows all headings, links, or landmarks
- Lesson 1103 — Basic Screen Reader Navigation Commands
- Element Nodes
- (type 1) represent HTML tags like `<div>`, `<p>`, or `<button>`.
- Lesson 664 — Node Types in the DOM
- Element selector
- Targets all elements of a type → `p { color: blue; }` styles all paragraphs
- Lesson 3 — IP Addresses and Domain Names
- Elements
- – Bare HTML element styles (no classes)
- Lesson 599 — ITCSS (Inverted Triangle CSS) Layer ModelLesson 666 — Elements vs NodesLesson 1225 — Testing srcset BehaviorLesson 1320 — BEM Fundamentals: Block, Element, ModifierLesson 1322 — BEM Element Naming with Double UnderscoresLesson 1331 — What is ITCSS? The Inverted Triangle ApproachLesson 1339 — ITCSS Layer Ordering and Import Strategy
- Elements and pseudo-elements
- (0,0,0,1) - Least powerful
- Lesson 132 — Specificity Order: Inline, IDs, Classes, Elements
- Elements are added/removed dynamically
- (user-generated content, infinite scrolling)
- Lesson 767 — Delegation vs Direct Binding
- Elements Layer
- sits right after Generic (resets/normalize) and establishes default styling for plain HTML tags— those without any classes attached.
- Lesson 1335 — The Elements Layer: Unclassed HTML Styling
- Elements needing clarification
- Lesson 1019 — aria-label: Providing Accessible Names
- Elements panel
- is your window into the live DOM (Document Object Model) of your web page.
- Lesson 2174 — Elements Panel Overview and NavigationLesson 2182 — Forcing Element StatesLesson 2184 — Accessibility Tree InspectionLesson 2257 — DOM Breakpoints: Subtree ModificationsLesson 2258 — DOM Breakpoints: Attribute ModificationsLesson 2259 — DOM Breakpoints: Node Removal
- Elements with `tabindex="0"`
- (though this is an override, not native)
- Lesson 1043 — Natively Focusable Elements
- Elements/Inspector Panel
- See the actual DOM tree structure we discussed—every HTML element, its attributes, and how it's nested.
- Lesson 26 — Browser Developer Tools
- em
- and **rem** scale based on font sizes.
- Lesson 155 — Relative Units: em and remLesson 168 — Font Size: Absolute and Relative Units
- Embed a tiny image
- (usually 20-40 pixels wide, under 1KB)
- Lesson 2031 — Blur-Up Technique Implementation
- Embedded iframes
- Maps, videos, or widgets lower on the page
- Lesson 1250 — The loading='lazy' Attribute
- Emergency kill switch
- If a feature causes problems in production, disable it immediately without rolling back your entire deployment.
- Lesson 2819 — What Are Feature Flags and Why Use Them
- Encode CSS metacharacters
- Escape characters like `{`, `}`, `;`, `\`, quotes, parentheses, and angle brackets
- Lesson 2900 — CSS Context Encoding
- Encryption
- means all data between browser and server is scrambled using strong cryptography.
- Lesson 2927 — Why HTTPS is Essential for Modern Web Apps
- End
- Jump to last item (already covered)
- Lesson 1081 — Page Up and Page DownLesson 1166 — Keyboard Navigation in MenusLesson 1178 — Keyboard Navigation in TabsLesson 1205 — Slider and Range Controls
- Enforces Consistent Style
- Lesson 1424 — What is ESLint and Why Use It
- Enforcing team conventions
- Required classes, specific attribute formats
- Lesson 1451 — Custom HTML Linting Rules
- Engagement
- time on page, content interactions, search queries
- Lesson 2782 — Event Tracking Fundamentals
- Engagement metrics
- Clicks, button interactions, form submissions, scroll depth, time spent on specific sections, and video play rates.
- Lesson 2779 — Understanding Analytics and User Behavior Tracking
- Ensure data consistency
- Server and client must receive identical initial data
- Lesson 1746 — Hydration Mismatch Errors
- Ensuring discoverability
- Pages with few internal links or deep in your site hierarchy might otherwise be missed
- Lesson 1869 — What is a Sitemap and Why It Matters
- Enter
- and **Space** keys, matching the expected behavior of native buttons.
- Lesson 1084 — Enter and Space ActivationLesson 1173 — Select-Style Custom DropdownsLesson 1180 — Automatic vs Manual Tab ActivationLesson 1189 — Keyboard Navigation RequirementsLesson 1199 — Building an Accessible ComboboxLesson 1200 — Listbox PatternLesson 2576 — useTransition for Mounting/UnmountingLesson 2629 — Selections and the Enter-Update-Exit Pattern (+1 more)
- Enter or Space
- Activate the focused tab and show its panel
- Lesson 1178 — Keyboard Navigation in TabsLesson 1183 — Keyboard Support for Accordions
- Enter/Space
- Open/close the list
- Lesson 930 — Select and Combobox PatternsLesson 933 — Date and Time Picker AccessibilityLesson 1093 — Dropdown and Popup FocusLesson 1201 — Tree View PatternLesson 1206 — Date Picker Pattern
- Enterprise constraints
- sometimes dictate tooling choices.
- Lesson 1398 — When Webpack Makes Sense vs Modern Alternatives
- Enterprise SPA (high-sensitivity data)
- Lesson 1603 — Token Storage Best Practices by Use Case
- entire document
- , including scrolled areas.
- Lesson 730 — Mouse Position and CoordinatesLesson 750 — Event Coordinates: pageX, clientX, screenX, and offsetX
- Environment differences
- Server might have different data or configuration than what's loaded client-side.
- Lesson 1746 — Hydration Mismatch Errors
- EOT
- (Embedded OpenType) was Microsoft's proprietary format, only needed for IE6-8.
- Lesson 560 — Font File Formats: WOFF2, WOFF, TTF, EOT
- Equal flexible items
- `flex: 1` (same as `flex: 1 1 0`) makes all items grow equally from zero basis.
- Lesson 291 — Combining Item Properties Effectively
- Error boundaries
- act like `try-catch` blocks for your component tree, but they work *declaratively* rather than imperatively.
- Lesson 1666 — Error Boundary Concept in Component SystemsLesson 1947 — Error Boundaries for Failed Chunk Loading
- Error Handling
- Network failures shouldn't block form submission permanently.
- Lesson 916 — Async Validation Patterns
- Error messages are clear
- When validation fails, users should hear what went wrong
- Lesson 1106 — Forms Mode and Input Testing
- Error toasts
- 7–10 seconds or manual-only (critical info)
- Lesson 1709 — Toast Timing and Auto-DismissLesson 1712 — Toast Types and Visual Hierarchy
- errors
- (must fix), **warnings** (should review), and **info messages** (suggestions).
- Lesson 1452 — Integrating with W3C ValidatorLesson 2244 — console.warn and console.error
- esbuild
- (for JavaScript) and **CSS minifiers** to compress files dramatically.
- Lesson 1381 — Production Build OptimizationsLesson 1399 — The Modern Bundler LandscapeLesson 1405 — Comparing Build TimesLesson 1406 — Plugin Ecosystems
- Escape
- Close without selecting
- Lesson 930 — Select and Combobox PatternsLesson 1093 — Dropdown and Popup FocusLesson 1170 — Nested and Flyout MenusLesson 1173 — Select-Style Custom DropdownsLesson 1199 — Building an Accessible ComboboxLesson 1206 — Date Picker Pattern
- Escape key
- should still work to close the modal (native `<dialog>` elements handle this automatically with `showModal()`).
- Lesson 1151 — Focus Trapping in Modals
- Escape key handling
- The dialog closes automatically when users press Escape
- Lesson 1149 — The <dialog> Element Fundamentals
- Escape other control characters
- (tabs, carriage returns, etc.
- Lesson 2898 — JavaScript Context Encoding
- ESLint extension
- Shows linting errors and warnings directly in your editor (connects with the ESLint setup you learned earlier)
- Lesson 1462 — VS Code Extensions for Web Development
- ESM-native development
- means serving JavaScript modules directly to the browser without bundling them first during development.
- Lesson 1404 — ESM-Native Development
- essential
- for responsive design—it's the foundation that allows your page to adapt naturally to different screen sizes.
- Lesson 83 — Viewport Configuration for Responsive DesignLesson 2966 — Essential vs Non-Essential Cookies
- Essential for core functionality
- Your app shell, main CSS, critical JavaScript
- Lesson 2416 — Understanding Precaching
- Essential Images
- like your logo, icons, and critical UI graphics should be precached.
- Lesson 2418 — Precaching Static Assets
- Essential motion
- is animation that communicates important information or aids understanding.
- Lesson 555 — Essential Motion vs Decorative Motion
- Essential security features
- (fraud detection, preventing abuse)
- Lesson 2960 — Legitimate Interest vs Consent
- Establish a z-index scale
- early: Reserve ranges like 1-10 for minor overlays, 100-200 for dropdowns, and 1000+ for modals.
- Lesson 236 — Practical Stacking Patterns
- Establish connections
- (TCP handshake, TLS negotiation)
- Lesson 2047 — The Performance Cost of Third-Party Scripts
- ETag
- (entity tag) is a unique identifier the server sends in a response header that represents a specific version of a resource—like a fingerprint.
- Lesson 1506 — Conditional Requests with ETag and If-None-MatchLesson 2144 — ETag and ValidationLesson 2161 — Cache Control Headers for CDNs
- Ethical tracking
- collects only what's necessary to improve your service—like counting page views, measuring load times, or understanding which features users engage with most.
- Lesson 2975 — Understanding Ethical vs Invasive Tracking
- Event bubbling
- describes how, after an event fires on the target element, it "bubbles up" through each parent element in the DOM tree, triggering any event listeners attached along the way.
- Lesson 720 — Event Bubbling PhaseLesson 722 — Event Target vs currentTargetLesson 749 — event.target vs event.currentTargetLesson 759 — Event Bubbling as the FoundationLesson 2681 — Preventing Multiple Event Fires
- Event capturing
- (also called the "capture phase") is when the event travels *down* through the DOM tree, starting from the `document` and moving through each ancestor until it reaches the actual target element.
- Lesson 721 — Event Capturing PhaseLesson 722 — Event Target vs currentTarget
- Event debugging
- Track how many times a click handler fires
- Lesson 2250 — console.count and console.countReset
- event delegation
- scenarios.
- Lesson 710 — closest() for Ancestor LookupLesson 722 — Event Target vs currentTargetLesson 767 — Delegation vs Direct Binding
- Event Handler Errors
- Lesson 1671 — Errors That Boundaries Don't Catch
- Event handlers are registered
- (buttons, links, and inputs work)
- Lesson 1733 — Time to Interactive (TTI)
- Event Handling
- Listen for the `invalid` event to respond to failures
- Lesson 911 — Understanding Constraint Validation API
- Event Listener Breakpoints
- sidebar.
- Lesson 2260 — Event Listener BreakpointsLesson 2267 — Breakpoint Strategies for Different Scenarios
- Event Listeners
- tab (usually next to Styles and Computed).
- Lesson 2185 — Event Listeners PanelLesson 2312 — The Service Worker File StructureLesson 2450 — disconnectedCallback: Element Removal
- event loop
- and **task queue**.
- Lesson 2056 — The Event Loop and Task QueueLesson 2068 — How Long Tasks Block Interactivity
- Event Name
- – a clear identifier like `button_click`, `add_to_cart`, or `video_play`
- Lesson 2782 — Event Tracking Fundamentals
- event object
- that captures everything about what just happened.
- Lesson 746 — The Event Object: What It Is and Why It MattersLesson 747 — Accessing the Event Object in Handlers
- event retargeting
- .
- Lesson 2471 — Event Retargeting in Shadow DOMLesson 2488 — Long-Lived Widgets and Embeds
- Event-specific details
- (mouse coordinates, which key was pressed, form values)
- Lesson 746 — The Event Object: What It Is and Why It Matters
- every
- `<p>` inside an `<article>`, whether it's a direct child or nested inside other elements like `<div>` or `<section>`.
- Lesson 123 — Combinators: Descendant and ChildLesson 2701 — Multiple File Validation
- Every 24 hours
- If a service worker has been active for a day, the browser forces an update check on the next event it handles
- Lesson 2378 — Update Checks and TriggeringLesson 2431 — Automatic Update Checks
- Every CSS property
- that affects the element, including ones you didn't explicitly set
- Lesson 2183 — Computed Tab and Final Styles
- Every page
- should have a self-referencing canonical unless it's explicitly a duplicate of another page.
- Lesson 1848 — Self-Referencing Canonicals
- every request
- sent to that domain—even if the request didn't originate from your application.
- Lesson 1572 — CSRF Vulnerability in Cookie AuthLesson 1589 — Automatic Token Inclusion with CookiesLesson 2933 — Service Workers Require HTTPS
- Every subsequent request
- includes the token in the `Authorization` header:
- Lesson 1569 — Token-Based Authentication Flow
- everything
- , even the "blank" pages.
- Lesson 667 — Text Nodes and WhitespaceLesson 1197 — Understanding Complex Widget Patterns
- Exact Data Fetching
- Lesson 1519 — What is GraphQL?
- Exact match
- `[type="email"]` targets elements where the type attribute equals exactly "email"
- Lesson 122 — Attribute SelectorsLesson 978 — Route Matching StrategiesLesson 1514 — Query String FilteringLesson 2504 — Handling Unsupported Locales
- exact same function reference
- , not just a function that looks the same.
- Lesson 725 — removeEventListener() MethodLesson 2110 — Event Listeners That Outlive Their Elements
- exactly
- the data your chart displays—same values, same structure.
- Lesson 2661 — Accessible Data Tables as FallbacksLesson 2860 — Generating SHA-256 Hashes
- Exactly one `<img>` element
- – The actual image tag that displays content and acts as the fallback
- Lesson 1228 — The <picture> Element Structure
- Examine the call stack
- – Trace exactly which functions called which to reach this point
- Lesson 2253 — What Are Breakpoints and Why Use Them
- Example approach
- Lesson 766 — Delegating Form Events
- Example combination
- `border-2 border-blue-500 rounded-lg` creates a 2px thick blue border with nicely rounded corners.
- Lesson 623 — Border Utilities: Width, Color, and Radius
- Example configuration
- Lesson 646 — Custom Spacing and Sizing Scales
- Example conflict
- Lesson 132 — Specificity Order: Inline, IDs, Classes, Elements
- Example CSP header
- Lesson 2859 — Understanding CSP HashesLesson 2864 — Strict-Dynamic and Nonce Propagation
- Example decision
- Banking app → High security need → `HttpOnly` cookies with `SameSite=Strict` + refresh token rotation + token binding.
- Lesson 2926 — Token Storage Decision Matrix
- Example flow
- Lesson 2266 — Breakpoints in Async CodeLesson 2325 — Offline-First UI PatternsLesson 2915 — CSRF Protection in SPAs
- Example problem
- New York is `UTC-5` in winter but `UTC-4` in summer (DST).
- Lesson 2752 — Named Timezones vs Offsets
- Example scenario
- Lesson 8 — HTTP Methods: GET and POSTLesson 27 — Browser Compatibility and Vendor PrefixesLesson 146 — Margin Collapse: Vertical MarginsLesson 1736 — Total Blocking Time (TBT)
- Example scenarios
- Lesson 1094 — Dynamic Content Focus Management
- Example workflow
- Select a `<div>`, click "+", change the selector to `.
- Lesson 2181 — Adding New CSS Rules and Classes
- Examples requiring ARIA
- Lesson 1032 — ARIA for Complex Interactive Widgets
- Excellent FCP and LCP
- HTML arrives complete, no waiting for JavaScript
- Lesson 1767 — What is Static Site Generation?
- Exception Breakpoints
- as a safety net.
- Lesson 2266 — Breakpoints in Async CodeLesson 2267 — Breakpoint Strategies for Different Scenarios
- Excessive JavaScript execution
- during page load
- Lesson 2222 — Performance Insights and Recommendations
- Excessive verbosity
- Does your page announce too much redundant information?
- Lesson 1099 — Why Screen Reader Testing is Essential
- Exchange code with verifier
- When trading the authorization code for tokens, send the original `code_verifier`
- Lesson 1623 — PKCE for Public Clients
- Execute JavaScript
- When the parser encounters `<script>` tags, it must pause DOM construction, execute the script, then resume (this is why JavaScript blocks rendering).
- Lesson 1973 — Understanding Critical Rendering Path
- Exit
- Old DOM elements that no longer have matching data (empty chairs after guests leave)
- Lesson 2629 — Selections and the Enter-Update-Exit Pattern
- Expandable sections
- When collapsing content, return to the trigger
- Lesson 1092 — Focus Restoration Patterns
- Expanded state
- `aria-expanded="true"` or `"false"` indicates whether a parent node is open
- Lesson 1201 — Tree View Pattern
- Expanding/collapsing content
- Lesson 2570 — Layout Animations with layout Prop
- Expected behaviors
- Buttons activate on Space/Enter; links follow on Enter
- Lesson 997 — Why Semantic HTML Matters for Accessibility
- Expected effect size
- Smaller differences (like 2% vs 2.
- Lesson 2827 — Statistical Significance and Sample Size
- expiration policies
- Lesson 2114 — Cache Structures That Grow IndefinitelyLesson 2422 — Cache Size Limitations
- Explicit association
- (shown above): Label and input are separate, connected by `for` and `id`.
- Lesson 102 — The <label> Element and for Attribute
- Explicit consent before tracking
- You must ask permission before setting cookies (except strictly necessary ones)
- Lesson 2953 — Understanding GDPR and CCPA Fundamentals
- Explicit grid
- tracks are the ones *you* define using properties like `grid-template-columns` and `grid- template-rows`.
- Lesson 313 — Explicit vs Implicit Grid
- explicit placement
- (like `grid-column: 2`), the algorithm places those first, then fills in the auto-placed items around them.
- Lesson 353 — Auto-Placement AlgorithmLesson 357 — Implicit vs Explicit Placement
- Explicit URL Imports
- Lesson 1375 — Importing Assets in Vite
- Explicit URLs
- mean each locale has its own distinct URL path (`/en/`, `/fr/`, `/es/`), making language part of the resource identifier itself.
- Lesson 2540 — Content Negotiation vs Explicit URLs
- exponential backoff
- for retries: short delays at first, then progressively longer waits.
- Lesson 2338 — Sync Event Lifecycle and TimingLesson 2339 — Handling Sync Failures and RetriesLesson 2723 — Retry Logic for Failed Uploads
- extend
- the defaults (add new breakpoints) or completely **replace** them:
- Lesson 614 — Configuring BreakpointsLesson 644 — Extending the Default ThemeLesson 1429 — Extending Configurations
- Extending the theme
- lets you add your own values while keeping all of Tailwind's defaults intact.
- Lesson 644 — Extending the Default Theme
- Extract the authorization code
- from the `code` parameter
- Lesson 1621 — Redirect URIs and Callback Handling
- Extract the dominant color
- from your image during build time (using tools or manual sampling)
- Lesson 2028 — Solid Color Placeholders
- Extract the extension
- by finding the last dot and taking everything after it
- Lesson 2699 — File Extension Validation
- Extract the new token
- from the response or a refreshed meta tag
- Lesson 2911 — CSRF Tokens in Form Submissions
- Extraction
- Automatically extract all translatable strings from your codebase into a source language file (usually English)
- Lesson 2537 — Collaboration with Translators and Translation Services
- Extremely large codebase
- esbuild or Turbopack for build time savings
- Lesson 1408 — Choosing the Right Bundler
- Extremely short block period
- (~100ms): Text invisible, waiting for web font
- Lesson 1275 — font-display: fallback Strategy
- Extrinsic sizing
- means *you* explicitly set the dimensions using properties like `width` and `height`.
- Lesson 151 — Intrinsic vs Extrinsic Sizing
F
- facade
- is essentially a lightweight impostor that *looks* like the real thing but doesn't do the expensive work until necessary.
- Lesson 2050 — Script Loading FacadesLesson 2837 — Privacy-Friendly Embed Alternatives
- Failed refresh with rotation
- Revoke token family on reuse detection (lesson 1612)
- Lesson 1613 — Refresh Token Revocation
- Fallback chains
- prevent broken UI when translations are missing.
- Lesson 2532 — Nested Translation Keys and Fallback Chains
- Fallback Font Generator
- is a web-based tool where you input your web font name and fallback font, and it calculates and displays the CSS you need — ready to copy and paste into your stylesheet.
- Lesson 1316 — Tools for Calculating Fallback Metrics
- Fallback for older browsers
- Browsers that don't understand `<picture>` will ignore it entirely and just render the `<img>`, ensuring your content still displays.
- Lesson 1234 — The Mandatory <img> Fallback
- Fallback required
- Use `<picture>` element with AVIF → WebP → JPEG hierarchy
- Lesson 2002 — Format Selection Decision Tree
- Familiar patterns
- Feels like modern JavaScript you already know
- Lesson 796 — IndexedDB Wrappers and Best Practices
- FAQs
- Each question is a header; answers are hidden until clicked
- Lesson 1181 — Accordion Pattern Overview and Structure
- Fast connections, legacy users
- → Skip AVIF, use WebP with JPEG fallback
- Lesson 1246 — Format Selection Strategy
- Fast rebuilds
- Minimal optimization for quicker compile times
- Lesson 1393 — Development vs Production Mode
- Faster connection establishment
- (one round trip instead of multiple)
- Lesson 2127 — HTTP/3 and QUIC Protocol
- Faster initial content display
- Users see content before JavaScript executes
- Lesson 1718 — What is Server-Side Rendering (SSR)?
- Faster load times
- Assets arrive quicker from nearby servers
- Lesson 2156 — What is a CDN and Why Use One
- Faster page loads
- (fewer round trips to the server)
- Lesson 579 — Variable Font Performance BenefitsLesson 2837 — Privacy-Friendly Embed Alternatives
- Faster Resolution
- Stack traces with source maps pinpoint the exact line in your original code, not minified production bundles.
- Lesson 2809 — Why Client-Side Error Tracking Matters
- Faster TTI
- Less code to parse and execute means quicker interactivity
- Lesson 1752 — Islands Architecture
- Fathom
- – Similar philosophy, emphasizes speed and simplicity, offers uptime monitoring too.
- Lesson 2785 — Privacy-Focused Alternatives
- FCP
- marks when users see *anything* meaningful on screen.
- Lesson 1717 — CSR Performance CharacteristicsLesson 1731 — First Contentful Paint (FCP)
- Feature flags
- or A/B testing identifiers
- Lesson 1504 — Custom Headers and API ConventionsLesson 2289 — Production Console AccessLesson 2295 — Rollback and Hotfix Workflows
- Feature gating
- Disable sensitive features on insecure connections
- Lesson 2932 — Detecting HTTPS in JavaScript
- Feature-based
- `auth`, `profile`, `settings`, `checkout`
- Lesson 2529 — Namespace Organization for Large Applications
- Feature-Level Boundaries
- Wrap major features or routes separately.
- Lesson 1669 — Positioning Error Boundaries in the Component Tree
- Features
- Consider what your project needs now and might need later.
- Lesson 1815 — Platform Selection Criteria
- Fetch Event
- and **IndexedDB Inspection**, you can intercept failed requests, serialize their details, and save them.
- Lesson 2329 — Queue Failed Requests
- Fetch from network
- if not cached, optionally storing the response for future use
- Lesson 2386 — Service Worker Cache API Fundamentals
- Fewer failed requests
- Prevent users from trying actions that will fail
- Lesson 1638 — Security Considerations for Frontend Authorization
- Fewer memory allocations
- = faster page load and better performance
- Lesson 763 — Performance Benefits of Delegation
- FID
- (measures actual first interaction delay) and **TBT** (measures blocking time).
- Lesson 1909 — Time to Interactive (TTI)Lesson 1986 — Identifying Long Tasks with Performance API
- FID measures interactivity
- the delay between when a user first interacts with your page (clicks a button, taps a link) and when the browser can actually respond.
- Lesson 1888 — The Three Core Web Vitals: LCP, FID, and CLS
- FID/INP
- Smaller initial bundles reduce main thread blocking, improving interactivity
- Lesson 1939 — What is Code Splitting and Why It Matters
- Field data
- (like Chrome User Experience Report) shows real-world impact and helps prioritize what actually matters to users
- Lesson 1914 — Performance Measurement OverviewLesson 1926 — Chrome User Experience Report (CrUX)
- Field Metrics
- (Real User Monitoring/RUM) come from actual visitors using your site in the wild.
- Lesson 1912 — Field vs Lab Metrics
- Field type is identified
- "Edit text," "checkbox," "combo box," etc.
- Lesson 1106 — Forms Mode and Input Testing
- Fields
- Properties on object types that define what data they contain
- Lesson 1520 — The GraphQL Type SystemLesson 1521 — Schema Definition Language (SDL)Lesson 1523 — Object Types and Fields
- File content
- Scan for malicious payloads (scripts in images, executable code)
- Lesson 2706 — Server-Side Validation Requirement
- File size
- How many kilobytes each format requires
- Lesson 1248 — Measuring Format Performance ImpactLesson 2706 — Server-Side Validation Requirement
- File Size Requirements
- Lesson 1246 — Format Selection Strategy
- File type
- Check MIME type *and* inspect file headers (magic bytes), not just extensions
- Lesson 2706 — Server-Side Validation Requirement
- FileList
- (just like you get from a file input element) containing all the dropped files.
- Lesson 2678 — The drop Event and DataTransfer
- Filename
- Sanitize to prevent directory traversal attacks (`.
- Lesson 2706 — Server-Side Validation Requirement
- Filmstrip View
- This shows thumbnail screenshots captured throughout the loading process.
- Lesson 1925 — WebPageTest for Deep AnalysisLesson 2221 — Screenshots and Filmstrip View
- Filtering
- is deciding which events to ignore completely (leaves blowing).
- Lesson 2815 — Filtering and Sampling Errors
- Filters
- `filter` properties like `blur()` or `brightness()`
- Lesson 509 — Properties That Can and Cannot Transition
- Finding all focusable elements
- inside the modal (buttons, links, inputs, elements with `tabindex="0"`)
- Lesson 1050 — Focus Trapping in Modal Dialogs
- Fine-grained animations
- with precise timing and orchestration
- Lesson 2642 — D3 vs Higher-Level Charting Libraries
- Fine-grained control
- Pause, reverse, seek to specific timestamps, or adjust speed mid-animation
- Lesson 2546 — GSAP Overview and Why Use ItLesson 2842 — The script-src Directive
- Firefox
- ~10MB per origin
- Lesson 772 — Storage Capacity and LimitsLesson 781 — Privacy Modes and StorageLesson 1055 — Default Browser Focus StylesLesson 1243 — AVIF: Next-Generation Image FormatLesson 1249 — Understanding Native Lazy LoadingLesson 2362 — Platform-Specific Install Patterns
- Firefox DevTools
- Lesson 557 — Testing Reduced Motion Implementations
- first
- (subtle, close) appears on top
- Lesson 203 — Multiple Box ShadowsLesson 424 — Modern Image Formats with PictureLesson 525 — The animation ShorthandLesson 1222 — Multiple Media Conditions in sizesLesson 1233 — The Order of <source> Elements MattersLesson 2194 — Console Utilities and $ Shortcuts
- First Contentful Paint
- .
- Lesson 1743 — The Hydration Process FlowLesson 1749 — Performance Cost of HydrationLesson 1902 — First Contentful Paint (FCP)Lesson 1909 — Time to Interactive (TTI)Lesson 1995 — Why Image Optimization Matters for PerformanceLesson 2123 — Stream Prioritization in HTTP/2
- First Contentful Paint (FCP)
- , and **Largest Contentful Paint (LCP)**.
- Lesson 1725 — Initial Load Time ComparisonLesson 1736 — Total Blocking Time (TBT)Lesson 1738 — Server Response TimeLesson 1762 — Geographic and Personalized ContentLesson 1902 — First Contentful Paint (FCP)Lesson 1908 — Total Blocking Time (TBT)Lesson 1983 — Measuring Critical Resource ImpactLesson 2225 — Understanding the Performance Score
- First Impression Performance
- Landing pages live or die by first impression.
- Lesson 1759 — Marketing and Landing Pages
- First Input Delay
- (1734) improves since the main thread isn't busy hydrating static content.
- Lesson 1750 — Partial Hydration Concepts
- First Input Delay (FID)
- measures interactivity.
- Lesson 1887 — What Are Core Web Vitals and Why They MatterLesson 1908 — Total Blocking Time (TBT)Lesson 2066 — Measuring the ImpactLesson 2794 — Script Loading Performance Impact
- First Request
- Lesson 1506 — Conditional Requests with ETag and If-None-MatchLesson 1509 — Cursor-Based PaginationLesson 1795 — Stale-While-Revalidate PatternLesson 1796 — Configuring Revalidation IntervalsLesson 2145 — Last-Modified Header
- First request (cache miss)
- Similar to SSG—instant from CDN.
- Lesson 1801 — ISR Performance Characteristics
- First Rule of ARIA
- is "Don't use ARIA if semantic HTML exists.
- Lesson 1031 — When Semantic HTML Doesn't Exist
- First time creation
- When you open a database that doesn't exist yet
- Lesson 785 — Database Versioning and onupgradeneeded
- first value
- in the list appears **closest to the user** (on top), and the **last value** appears at the back.
- Lesson 198 — Multiple BackgroundsLesson 273 — flex-flow: Shorthand for Direction and WrapLesson 952 — Reading Query Parameters
- First Visit
- You visit `example.
- Lesson 797 — What Are Cookies and How They WorkLesson 2208 — Identifying 304 Not Modified Responses
- First-party tracking
- refers to data collection by the website you're actually visiting.
- Lesson 2976 — First-Party vs Third-Party Tracking
- fixed
- for dramatic parallax effects or stationary hero sections
- Lesson 196 — Background AttachmentLesson 211 — The position Property: OverviewLesson 221 — Fixed vs Absolute Positioning
- Fixed expiration
- Session dies after N minutes from creation
- Lesson 1570 — Session Storage and Management
- Fixed positioning
- removes an element entirely from the normal document flow and positions it relative to the **viewport** (the browser window).
- Lesson 220 — Fixed PositioningLesson 221 — Fixed vs Absolute PositioningLesson 1708 — Positioning and Stacking Toasts
- Fixed spacing scale
- `w-4`, `w-8`, `w-64` (uses your spacing theme)
- Lesson 619 — Sizing: Width and Height
- Fixed-height chat boxes
- Use `overflow-y: auto` with `overflow-x: hidden` to allow vertical scrolling while preventing horizontal overflow from breaking your layout.
- Lesson 246 — overflow-x and overflow-y for directional control
- flame chart
- .
- Lesson 1994 — Profiling Main-Thread Performance with Chrome DevToolsLesson 2212 — Reading the Timeline: Main Thread Activity
- Flame Chart (default view)
- Shows chronological execution.
- Lesson 2069 — Identifying Long Tasks in DevTools
- flex container
- , and all of its direct children automatically become **flex items**.
- Lesson 254 — Enabling Flexbox with display: flexLesson 255 — The Flex Container and Flex ItemsLesson 259 — Cross Axis Alignment with align-itemsLesson 268 — display: flex and Creating a Flex ContainerLesson 276 — align-items: Cross Axis AlignmentLesson 279 — gap: Modern Spacing Between Flex Items
- flex items
- (direct children of a `display: flex` container) and **grid items** (direct children of a `display: grid` container) break this rule.
- Lesson 231 — Flexbox and Grid ContextsLesson 254 — Enabling Flexbox with display: flexLesson 255 — The Flex Container and Flex ItemsLesson 268 — display: flex and Creating a Flex Container
- Flexbox
- for one-dimensional layouts (rows *or* columns, navigation bars, card layouts)
- Lesson 244 — Migrating from Float LayoutsLesson 253 — What is Flexbox and Why Use ItLesson 377 — When to Choose Grid Over FlexboxLesson 1708 — Positioning and Stacking Toasts
- Flexbox solves this elegantly
- Lesson 304 — Icon and Text Alignment
- Flexibility
- – swap token mappings without touching component logic
- Lesson 1367 — Component-Level Theme VariablesLesson 2404 — What is Workbox and Why Use It
- Flexible with limits
- `flex: 1 1 300px` with `max-width: 600px` lets an item grow from 300px baseline but never exceed 600px.
- Lesson 291 — Combining Item Properties Effectively
- Focus Management
- When scrolling causes the focused item to unmount, save its index.
- Lesson 2105 — Accessibility Considerations for Virtual Lists
- Focus management hints
- The browser understands this is a special container for focus trapping
- Lesson 1149 — The <dialog> Element Fundamentals
- Focus on content priorities
- small screens force you to decide what's truly important
- Lesson 380 — Mobile-First Philosophy
- FOIT
- occurs when the browser hides text while waiting for the web font to download.
- Lesson 566 — Font Loading and FOIT/FOUTLesson 1271 — Understanding Font Loading and FOIT/FOUTLesson 1273 — font-display: block StrategyLesson 1900 — Common Causes of Layout Shift
- Font becomes "failed"
- After the swap period, fallback font is permanent for this page visit
- Lesson 1275 — font-display: fallback Strategy
- Font Foundries
- increasingly offer variable font versions of their commercial typefaces.
- Lesson 581 — Finding and Loading Variable Fonts
- Font services
- Link to fonts hosted by providers like Google Fonts or Adobe Fonts
- Lesson 561 — Self-Hosting vs. Font Services
- Font Squirrel's Webfont Generator
- and **Transfonter** provide visual interfaces where you can upload fonts, check boxes for character sets (Latin, Cyrillic, etc.
- Lesson 1285 — Tools for Font Subsetting
- Font weight examples
- using the same text at different weights
- Lesson 594 — Documentation and Type Specimens
- Fontaine
- and **Capsize** are automation tools that handle all this complexity for you.
- Lesson 1307 — Automatic Fallback Generation ToolsLesson 1316 — Tools for Calculating Fallback Metrics
- Fonts
- Lesson 1375 — Importing Assets in ViteLesson 2158 — Types of Assets to Serve from CDNsLesson 2399 — Handling Different Content Types
- For `async`/`await`
- Lesson 2274 — Step Through Asynchronous Code
- For 403 errors
- Lesson 1491 — 4xx Client Error Codes: 403 and 404
- For 404 errors
- Lesson 1491 — 4xx Client Error Codes: 403 and 404
- For above-the-fold critical images
- Lesson 2036 — Choosing the Right Strategy
- For Accessibility
- Screen readers used by visually impaired users rely on semantic tags to navigate.
- Lesson 46 — What is Semantic HTML?
- For body text fonts
- Lesson 1317 — Preloading Fonts with font-display Coordination
- For constraining flexibility
- , use `minmax()` to set boundaries:
- Lesson 342 — Grid Template Sizing Best Practices
- For content-driven sizing
- , use `auto` or `min-content`/`max-content` when the content should dictate track size, not the container.
- Lesson 342 — Grid Template Sizing Best Practices
- For critical fonts
- (like your main heading font):
- Lesson 1317 — Preloading Fonts with font-display Coordination
- For decorative images
- (purely visual, no information value), use an empty alt attribute:
- Lesson 74 — Images: src, alt, and Accessibility
- For donuts
- Draw a smaller inner circle and use two arcs per slice
- Lesson 2607 — Creating Pie and Donut Charts
- For expensive content
- (large videos, complex components): Consider `0.
- Lesson 2024 — Threshold Configuration for Loading Triggers
- For Maintainability
- When you or another developer reads your code later, `<aside>` immediately communicates "this content is tangentially related" better than `<div class="sidebar">` ever could.
- Lesson 46 — What is Semantic HTML?
- For meaningful images
- , describe what's important about the image in context:
- Lesson 74 — Images: src, alt, and Accessibility
- For multiple files
- Maintain an array tracking which files to keep, then reconstruct the input using a `DataTransfer` object:
- Lesson 2713 — Removing and Replacing Previews
- For multiple static weights
- Lesson 1297 — Preloading Variable Fonts
- For photographs without transparency
- Lesson 2002 — Format Selection Decision Tree
- For radio buttons
- Which inputs belong to the same group *and* what key is sent
- Lesson 96 — Checkbox and Radio Inputs
- For single-file inputs
- Simply clear the preview and reset the file input:
- Lesson 2713 — Removing and Replacing Previews
- For text-based columns
- , `fit-content()` prevents excessive whitespace:
- Lesson 342 — Grid Template Sizing Best Practices
- For variable fonts
- Lesson 1297 — Preloading Variable Fonts
- Force re-scraping
- using each platform's debugging tool after updates
- Lesson 1845 — Social Sharing Best Practices
- Force Refresh Pattern
- When a new service worker activates using `skipWaiting()`, send a message to all controlled clients suggesting they reload.
- Lesson 2381 — Handling Version Mismatches
- Forge API requests
- directly using tools like Postman or cURL
- Lesson 1648 — Client-Side Permission Security Limitations
- Forgetting `event.waitUntil()`
- in lifecycle events causes premature termination
- Lesson 2443 — Common Service Worker Pitfalls
- Forgotten edge cases
- What happens when focus is on the last item and the user presses the down arrow?
- Lesson 1086 — Testing Custom Navigation
- Forgotten event listeners
- attached to DOM elements that get removed
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- Form best practices
- Use `submit` on forms (not `click` on buttons), which captures both mouse clicks and keyboard submissions.
- Lesson 745 — Event Type Selection and Best Practices
- Form data
- is the most obvious: names, email addresses, phone numbers, addresses, payment information, and profile details all clearly identify users.
- Lesson 2956 — Personal Data in the Frontend
- Form field instructions
- Lesson 1021 — aria-describedby: Additional Context
- Form inputs
- (`<input>`, `<textarea>`, `<select>`) - Receive user data
- Lesson 1043 — Natively Focusable ElementsLesson 1060 — Focus Styles for Different Element Types
- Form Instructions
- Don't hide form validation rules or formatting requirements.
- Lesson 1135 — When NOT to Use Visually Hidden Content
- Form Labels
- Every `<input>` should have an associated `<label>`, either through wrapping or the `for`/`id` relationship.
- Lesson 1449 — Accessibility Rules in HTML Linters
- Form validation states
- An `<input>` that fails validation is still just an input to assistive technologies unless you add `aria-invalid="true"` and `aria-describedby` pointing to an error message.
- Lesson 1033 — Enhancing Incomplete Native Elements
- Format checks
- Email, phone, URL patterns using regex or built-in validators
- Lesson 2905 — Validating and Sanitizing Input
- FormatJS
- (`@formatjs/intl-*`) – Modular polyfills for each Intl feature
- Lesson 2778 — Browser Support and Polyfills
- Formulas (an + b)
- Lesson 127 — Structural Pseudo-Classes: :nth-child and :nth-of-type
- Four distinct layers
- Lesson 153 — Debugging the Box Model in DevTools
- Four values
- Lesson 143 — Padding Shorthand Syntax
- FOUT
- happens when the browser immediately displays text using a fallback system font (like Arial or Times), then swaps to the web font once it loads.
- Lesson 566 — Font Loading and FOIT/FOUTLesson 1271 — Understanding Font Loading and FOIT/FOUTLesson 1900 — Common Causes of Layout Shift
- FPS (Frames Per Second)
- Green bars show smooth rendering; red indicates jank
- Lesson 2211 — Performance Panel Overview and Recording
- FPS meter
- Shows real-time frame rate (aim for solid 60 FPS)
- Lesson 546 — Measuring Animation PerformanceLesson 2598 — Measuring Animation Performance
- Fragmentation
- PWAs can force updates more easily, keeping users synchronized.
- Lesson 2369 — Update Mechanisms
- Fragments
- are reusable units that define a set of fields on a type.
- Lesson 1527 — Aliases and Fragments
- Frame bars
- Green bars represent frames rendered under 16.
- Lesson 2598 — Measuring Animation Performance
- Frame boundaries and timing
- Lesson 2215 — Network Waterfall in Performance View
- frame drops
- missed rendering opportunities that create visible stuttering or "jank.
- Lesson 2214 — Frames Per Second (FPS) and Frame DropsLesson 2221 — Screenshots and Filmstrip View
- Frames
- Visual markers showing whether you hit 60fps
- Lesson 1916 — Chrome DevTools Performance Panel BasicsLesson 2120 — HTTP/2 Multiplexing
- Framework Detection
- Modern platforms like Netlify and Vercel auto-detect popular frameworks and preset these values.
- Lesson 1813 — Build Configuration
- Framework handlers
- Identify which framework (React, Vue) attached a specific listener
- Lesson 2185 — Event Listeners Panel
- Framework integration
- (e.
- Lesson 2642 — D3 vs Higher-Level Charting LibrariesLesson 2654 — Choosing the Right Library
- Framework Wrapper
- Your React app is primary, but you import a `<video-player>` Web Component that you also use in your marketing site (which is Vue).
- Lesson 2494 — Hybrid Approach with Frameworks
- framework-agnostic
- element.
- Lesson 2487 — Design System DistributionLesson 2488 — Long-Lived Widgets and Embeds
- Framework-agnostic projects
- might prefer BEM or utility-first approaches that work anywhere.
- Lesson 603 — Choosing an Architecture for Your Project
- Framework-specific instrumentation
- Many SSR frameworks expose hydration start/end events you can hook into with `performance.
- Lesson 1756 — Measuring Hydration Performance
- Framework-specific needs
- Check what your framework recommends (many now default to Vite)
- Lesson 1408 — Choosing the Right Bundler
- Framework-specific tools
- are even more powerful:
- Lesson 1984 — Build-Time Critical Resource Optimization
- Free of technical jargon
- No mention of "NullPointerException" or "Connection timeout to MySQL cluster.
- Lesson 1680 — Server Error Messages (5xx)
- Frequently updated content
- → Consider SSR with caching or Incremental Static Regeneration
- Lesson 1777 — Limitations of Pure SSG
- Freshness-based caching
- The server says "this file is good for 1 year" using headers like `Cache-Control: max- age=31536000`.
- Lesson 2141 — HTTP Caching Fundamentals
- frontend
- (the client) and **backend** (the server) are completely separate concerns that communicate only through a defined interface—the REST API.
- Lesson 1474 — Client-Server SeparationLesson 1817 — Decoupling Frontend from Backend
- Frontend teams
- can redesign the UI, switch frameworks, or build mobile apps—all using the same API
- Lesson 1474 — Client-Server Separation
- Full font
- 500 KB with 2,000+ glyphs (A-Z, a-z, accented characters, symbols, etc.
- Lesson 1283 — What is Font Subsetting
- Full SSG
- means generating all possible pages during the build process.
- Lesson 1793 — Choosing Between Full SSG and Hybrid Approaches
- Full-height hero sections
- combine `min-height: 100vh` with centered content inside each panel.
- Lesson 375 — Grid-Based Split ScreensLesson 384 — Viewport Units: vw, vh, vmin, vmax
- Full-Screen Modals
- completely block content until a choice is made.
- Lesson 2967 — Cookie Banner Placement and Timing
- Full-screen overlays
- Instead of floating dropdowns, consider expanding menus to fill the screen on mobile.
- Lesson 1171 — Mobile-Friendly Dropdown Patterns
- Full-Screen Presentation
- On small viewports, modals should often take up the entire screen rather than floating in the center.
- Lesson 1161 — Mobile Modal Patterns
- Function Breakpoints
- using `debug(functionName)` on key entry points.
- Lesson 2267 — Breakpoint Strategies for Different Scenarios
- Function-as-a-Service platforms
- (AWS Lambda, Vercel Functions, Netlify Functions)
- Lesson 1728 — Infrastructure and Hosting Requirements
- Functional
- Remember preferences, language settings, user customizations
- Lesson 2969 — Granular Cookie Category Controls
- Functional cookies
- directly requested by the user (language preference)
- Lesson 2954 — User Consent Requirements
- Future Requests
- Browser checks its cache first before making new network requests
- Lesson 2141 — HTTP Caching Fundamentals
G
- Gallery without captions
- Lesson 1143 — Context-Dependent Alt Text
- Gap between panels
- Lesson 375 — Grid-Based Split Screens
- Gaps and patterns
- Repeated operations that could be batched or optimized
- Lesson 1917 — Reading Performance Flame Charts
- Gaps and spacing
- Difficult to create consistent, predictable gutters between columns
- Lesson 242 — Float Layout Limitations
- Garbage collection events
- (downward drops in the memory graph, often marked with small icons)
- Lesson 2219 — Memory Allocation and Garbage Collection
- garbage collector
- (GC) automatically identifies and removes objects you're no longer using.
- Lesson 2108 — How JavaScript Garbage Collection WorksLesson 2219 — Memory Allocation and Garbage Collection
- Gatsby
- Inline critical CSS by default in production builds
- Lesson 1984 — Build-Time Critical Resource Optimization
- GDPR
- (General Data Protection Regulation in the EU) and **CCPA** (California Consumer Privacy Act) mandate explicit consent and disclosure for most cookies beyond strictly necessary ones.
- Lesson 2965 — Cookie Consent Legal Requirements
- Gender agreement
- Some languages change adjectives based on the gender of variables
- Lesson 2530 — Interpolation and Variable Substitution
- General Sibling (`~`)
- Selects *all* siblings that come after the element
- Lesson 124 — Combinators: Adjacent and General Sibling
- Generate
- a cryptographically random string (like `"f83a9d6b2c1e"`)
- Lesson 1622 — State Parameter for CSRF ProtectionLesson 2029 — Low-Quality Image Placeholders (LQIP)
- Generate a code verifier
- Your app creates a random string (43-128 characters) kept in memory
- Lesson 1623 — PKCE for Public Clients
- Generate bidirectional links
- If Post A references Post B, ensure Post B links back to Post A
- Lesson 1787 — Related Content and Computed Fields
- Generated files
- Auto-generated code from tools or frameworks
- Lesson 1434 — Ignoring Files with .eslintignore
- Generates static HTML
- for every possible route/page in your site
- Lesson 1722 — The SSG Build and Delivery Process
- Generates the XML
- following the sitemap structure you learned previously
- Lesson 1871 — Generating Sitemaps Automatically
- Generation
- happens using patterns like `getStaticProps` and `getStaticPaths`
- Lesson 1781 — Headless CMS Integration Fundamentals
- Generic
- – Resets, normalize, box-sizing rules
- Lesson 599 — ITCSS (Inverted Triangle CSS) Layer ModelLesson 1331 — What is ITCSS? The Inverted Triangle ApproachLesson 1339 — ITCSS Layer Ordering and Import Strategy
- Generic grouping
- where no semantic element fits the content's meaning
- Lesson 60 — When to Use <div> vs Semantic Elements
- Geographic content
- Show local store locations, region-specific pricing, appropriate currency, or language based on the user's location.
- Lesson 1762 — Geographic and Personalized Content
- Geographic proximity
- A user in Tokyo connects to a Tokyo edge server, not your origin server in New York
- Lesson 2157 — CDN Performance Benefits
- Geolocation
- (typically via IP address) tells you *where* a user is physically located.
- Lesson 2503 — Geolocation vs Language Detection
- Geometry properties
- Lesson 541 — Properties That Trigger Reflow
- GET
- and **POST**.
- Lesson 8 — HTTP Methods: GET and POSTLesson 1470 — What is REST and Why It MattersLesson 1691 — Idempotent Request Design
- Get early warnings
- when changes impact LCP, CLS, or TBT
- Lesson 1924 — Lighthouse CLI and CI Integration
- GET requests
- are generally safe to retry since they don't modify data.
- Lesson 1687 — Understanding When to Retry Network Requests
- Get the user's roles/permissions
- from your auth context or token
- Lesson 1654 — Menu and Navigation Filtering
- GIF
- (Graphics Interchange Format) is one of the oldest image formats on the web, famous for one thing: **simple animation**.
- Lesson 1245 — GIF: Animation and Legacy Support
- GitHub Pages
- Stored as repository secrets for GitHub Actions workflows
- Lesson 1811 — Environment Variables
- Give users real control
- over their data with simple, accessible settings
- Lesson 2982 — Building Trust Through Privacy-First Design
- global
- any element on your page can access them.
- Lesson 469 — The :root Selector for Global VariablesLesson 1341 — What Are CSS ModulesLesson 2273 — Using the Scope Panel to Inspect Variables
- Global Privacy Control (GPC)
- A newer signal (`Sec-GPC: 1`) that carries legal weight under CCPA and GDPR.
- Lesson 2977 — Respecting Do Not Track and Global Privacy Control
- Global resets
- Body or HTML element styles that need page-wide effect
- Lesson 1346 — Global Styles in CSS Modules
- Global scope
- Variables available everywhere (like `window`, `document`, or global variables you've defined)
- Lesson 2273 — Using the Scope Panel to Inspect Variables
- Global scope issues
- Inline handlers expect functions to exist globally
- Lesson 719 — Inline vs addEventListener
- Global variables
- that accumulate data indefinitely
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- Globe Icon with Modal
- Lesson 2506 — Language Switching UI Patterns
- Good
- `alt="Woman working on laptop"`
- Lesson 1147 — Common Alt Text MistakesLesson 1237 — Accessibility Considerations with PictureLesson 1677 — Network Error MessagesLesson 1894 — Interaction to Next Paint (INP) as FID SuccessorLesson 1897 — CLS Thresholds and Session WindowsLesson 1902 — First Contentful Paint (FCP)Lesson 1903 — Largest Contentful Paint (LCP)Lesson 1905 — Interaction to Next Paint (INP) (+2 more)
- Good (batched)
- Lesson 2063 — Batch DOM Reads and Writes
- Good FCP thresholds
- Lesson 1902 — First Contentful Paint (FCP)
- Good pattern (batched)
- Lesson 547 — Avoiding Layout Thrashing
- Good practice
- Request only fields you'll actually render
- Lesson 1545 — Best Practices for Query Design
- Good use cases
- Lesson 2343 — Push Notifications Overview and Use Cases
- Google Analytics Debugger
- or **Tag Assistant** highlight analytics calls in real-time.
- Lesson 2789 — Testing and Debugging Analytics
- Google Fonts
- , the license is built-in—they've secured rights for free web embedding.
- Lesson 563 — Font Licensing and Legal ConsiderationsLesson 581 — Finding and Loading Variable FontsLesson 2846 — The font-src Directive
- Google Search Console
- The URL Inspection tool shows which canonical Google detected
- Lesson 1853 — Testing and Validating CanonicalsLesson 1876 — Testing and Validating Sitemaps and Robots.txtLesson 1885 — Testing SPA SEO
- Google Tag Manager (GTM)
- , **Adobe Launch**, and **Tealium**.
- Lesson 2801 — What is a Tag Manager and Why Use One
- GPU (Graphics Processing Unit)
- Lesson 2593 — GPU-Accelerated Properties
- GPU rendering work
- Lesson 2215 — Network Waterfall in Performance View
- Grace period
- – Run both systems in parallel for weeks or months
- Lesson 1604 — Migrating Between Storage Strategies
- Graceful Degradation
- and **Progressive Enhancement** aim to make websites work for everyone, but they approach the problem from opposite directions.
- Lesson 43 — Graceful Degradation vs Progressive EnhancementLesson 1670 — Fallback UI Design PatternsLesson 2504 — Handling Unsupported Locales
- Graceful Fallbacks
- When intercepting fetch events, check if the requested resource exists in your cache.
- Lesson 2381 — Handling Version Mismatches
- Graceful migrations
- In `onupgradeneeded`, check `oldVersion` to apply only needed changes
- Lesson 796 — IndexedDB Wrappers and Best Practices
- Gradual rollout option
- Use feature flags or percentage-based server rules to enforce CSP for 10% of traffic first, then scale up as confidence grows.
- Lesson 2873 — Transitioning from Report-Only to Enforcement
- Gradual rollouts
- Enable features for 5% of users, then 20%, then 100%, monitoring metrics at each stage.
- Lesson 2819 — What Are Feature Flags and Why Use Them
- Gradual tightening
- Add a stricter policy while keeping the old one during migration
- Lesson 2877 — Multiple CSP Headers and Policies
- Granular component formatting
- lets you specify exactly which date/time pieces to include and how to display them.
- Lesson 2760 — Granular Component Formatting
- Granular control
- users must be able to accept some categories and reject others
- Lesson 2965 — Cookie Consent Legal Requirements
- Granular persistence
- Store each category's state separately
- Lesson 2969 — Granular Cookie Category Controls
- Graphics with transparency
- like badges or overlays
- Lesson 1241 — PNG: Lossless Compression and Transparency
- GraphQL Errors
- occur when your query executes but the server reports problems with specific fields (like permission denied or validation failures).
- Lesson 1564 — Error Handling in Client Libraries
- GraphQL Multipart Request Specification
- A community standard that maps file uploads to GraphQL variables using the same `multipart/form-data` format REST uses, but with additional JSON mapping instructions.
- Lesson 1553 — File Uploads: REST Multipart vs GraphQL Approaches
- Gray bars
- Other browser work (garbage collection, system tasks)
- Lesson 2212 — Reading the Timeline: Main Thread Activity
- Green (off)
- is for rules that don't fit your project or conflict with your team's conventions.
- Lesson 1430 — Rules: Errors, Warnings, and Off
- Green bars
- Painting
- Lesson 1994 — Profiling Main-Thread Performance with Chrome DevToolsLesson 2212 — Reading the Timeline: Main Thread Activity
- Gregorian calendar
- the Western calendar system adopted in 1582 and now used internationally for civil purposes.
- Lesson 2733 — No Support for Calendar Systems
- Grid
- for two-dimensional layouts (rows *and* columns, page templates)
- Lesson 244 — Migrating from Float LayoutsLesson 377 — When to Choose Grid Over FlexboxLesson 933 — Date and Time Picker AccessibilityLesson 1206 — Date Picker PatternLesson 1336 — The Objects Layer: Layout Primitives and Structure
- Grid areas
- are rectangular spaces spanning one or more cells.
- Lesson 312 — Grid Lines, Tracks, Cells, and AreasLesson 323 — Inspecting Grids with Browser DevTools
- Grid cells
- are the individual boxes created where a row track and column track intersect.
- Lesson 312 — Grid Lines, Tracks, Cells, and Areas
- grid container
- and its direct children automatically become **grid items**.
- Lesson 311 — Enabling Grid: display: gridLesson 316 — Basic Two-Column Grid with grid-template- columnsLesson 352 — Named Grid AreasLesson 370 — Centered Layouts with GridLesson 371 — Grid Template Areas for Page Layout
- Grid Container Properties
- apply to the parent element (the one with `display: grid`).
- Lesson 315 — Grid Container vs Grid Item Properties
- Grid Item Properties
- apply to the children of the grid container.
- Lesson 315 — Grid Container vs Grid Item Properties
- grid items
- (direct children of a `display: grid` container) break this rule.
- Lesson 231 — Flexbox and Grid ContextsLesson 311 — Enabling Grid: display: gridLesson 352 — Named Grid Areas
- Grid lines
- are the invisible dividing lines that create your grid's structure.
- Lesson 312 — Grid Lines, Tracks, Cells, and AreasLesson 343 — Grid Lines and Line Numbers
- Grid tracks
- are the spaces *between* two adjacent grid lines.
- Lesson 312 — Grid Lines, Tracks, Cells, and Areas
- Guardrail metrics
- Things that shouldn't get worse (page load time, error rate)
- Lesson 2825 — A/B Testing Fundamentals
- Guide toward a solution
- Tell users *how* to fix it: "Username can only contain letters, numbers, and underscores" is actionable; "Invalid username" is not.
- Lesson 1678 — Validation Error Messages
- gzip
- Widely supported, good compression ratios
- Lesson 2131 — Understanding HTTP Compression BasicsLesson 2136 — Compression Levels and Trade- offs
H
- H (Hue)
- Angle on color wheel (0° = red, 120° ≈ green, 240° ≈ blue)
- Lesson 493 — LCH and OKLCH: Perceptually Uniform Color Models
- Handle cascading requests
- as scripts load even more resources
- Lesson 2047 — The Performance Cost of Third-Party Scripts
- Handle interruptions gracefully
- – Save state when uploads pause or fail
- Lesson 2718 — Resumable Upload Pattern
- Handle user action
- When clicked, call `skipWaiting()` on the waiting service worker (via `postMessage`), then reload the page when `controllerchange` fires.
- Lesson 2430 — Prompting Users for Updates
- Hard refresh
- (Ctrl+Shift+R or Cmd+Shift+R) to force new image selection
- Lesson 429 — Testing Responsive Image Delivery
- Harder to maintain
- Finding and updating event handlers means searching through HTML
- Lesson 719 — Inline vs addEventListener
- Has attribute
- `[required]` targets any element that simply *has* a required attribute, regardless of value
- Lesson 122 — Attribute Selectors
- hash
- is the part of a URL that comes after the `#` symbol, like `https://example.
- Lesson 946 — Hash Changes and Fragment NavigationLesson 965 — Updating the URL with pushState and replaceState
- Hash generation
- For each inline `<script>` or `<style>` block, it calculates the SHA-256 hash
- Lesson 2865 — Build Tools and Automatic Hash Generation
- Hashes
- Perfect for static content that never changes (critical CSS, fixed analytics code)
- Lesson 2859 — Understanding CSP HashesLesson 2862 — Nonces vs Hashes: When to Use EachLesson 2883 — Style Attributes vs Style Tags
- HATEOAS
- Hypermedia guides next actions (you'll learn this later)
- Lesson 1472 — The Uniform Interface Constraint
- Have minimal footprint
- – Scripts under 1KB vs 45KB+ for GA4
- Lesson 2785 — Privacy-Focused Alternatives
- Header
- – algorithm and token type
- Lesson 1578 — What is a JWT and Why Use It?Lesson 1579 — JWT Structure: Header, Payload, and Signature
- Header (button)
- The always-visible, clickable element that controls expansion
- Lesson 1181 — Accordion Pattern Overview and Structure
- Header injection
- The tool either outputs a ready-to-use CSP header string or injects it directly into your HTML's meta tag
- Lesson 2865 — Build Tools and Automatic Hash Generation
- Header missing
- → Potentially forged cross-origin request → Reject
- Lesson 2914 — Custom Request Headers as CSRF Defense
- Header present
- → Legitimate request from your frontend
- Lesson 2914 — Custom Request Headers as CSRF Defense
- Headers
- Tell the server you're sending JSON with `Content-Type: application/json`
- Lesson 830 — Making POST Requests with JSON DataLesson 855 — Response HeadersLesson 861 — Simple vs Preflight RequestsLesson 869 — Debugging CORS IssuesLesson 1497 — Common HTTP Request HeadersLesson 2139 — Verifying Compression in DevToolsLesson 2141 — HTTP Caching FundamentalsLesson 2199 — Request and Response Headers (+1 more)
- Headers tab
- Contains validation headers like `If-None-Match`
- Lesson 2208 — Identifying 304 Not Modified Responses
- Heading Hierarchy
- Rules enforce that headings follow a logical order (don't skip from `<h1>` to `<h4>`), ensuring screen reader users can navigate your document structure.
- Lesson 1449 — Accessibility Rules in HTML Linters
- Heading sizes
- maintain proportional relationships to the base
- Lesson 408 — Building a Fluid Type Scale
- Headings
- Can go larger, but avoid exceeding `60–80px` unless intentional
- Lesson 410 — Preventing Overly Large TextLesson 1103 — Basic Screen Reader Navigation Commands
- Hearing impairments
- Users who are deaf or hard of hearing need captions for audio content
- Lesson 987 — What is Web Accessibility and Why It Matters
- Heavy dependencies
- (rich text editors, charting libraries)
- Lesson 1942 — Component-Based Code Splitting
- height
- of horizontal tracks.
- Lesson 317 — Defining Rows with grid-template-rowsLesson 2605 — Creating Bar Charts with SVG
- Height percentages
- reference the parent's height (but the parent must have an explicit height set!
- Lesson 157 — Percentage Values
- Helpful context
- Explain *what* they tried to access and *why* it's restricted.
- Lesson 1662 — Handling 403: Access Denied UILesson 2293 — Logging Best Practices
- Hero images
- 200KB max (compressed, modern format)
- Lesson 1934 — Image and Media Asset BudgetsLesson 1997 — JPEG: When and How to Use ItLesson 2021 — Eager Loading Above the Fold
- Hidden content
- Don't mark up text invisible to users
- Lesson 1868 — Structured Data Best Practices and Common Mistakes
- Hidden content confusion
- Off-screen slides may still be in the tab order or announced by screen readers, creating a confusing experience.
- Lesson 1187 — Why Carousels Are Challenging for Accessibility
- Hide
- elements when:
- Lesson 1634 — Disabled vs Hidden ElementsLesson 1650 — Disabled vs Hidden UI ElementsLesson 2711 — Loading States During Preview Generation
- Hide network messages
- Suppresses network-related console output
- Lesson 2195 — Preserving Log and Console Settings
- Hide or rotate labels
- Remove every other x-axis label, rotate labels vertically, or switch to abbreviated formats (Jan → J).
- Lesson 2657 — Breakpoint-Based Chart Simplification
- Hiding empty message containers
- so they don't create awkward spacing
- Lesson 453 — :empty for Conditional Content Display
- Hierarchical scopes
- where `admin:users` implies `read:users`
- Lesson 1619 — OAuth Scopes and Permissions
- Hierarchical when related
- `/authors/7/books/3` shows book 3 by author 7
- Lesson 1471 — Resources and Resource Identifiers
- Hierarchy depth
- `aria-level` tells screen readers how deeply nested each item is
- Lesson 1201 — Tree View Pattern
- Hierarchy layouts
- organize parent-child relationships into tree structures.
- Lesson 2636 — Layouts: Force, Hierarchy, and Pie
- High Contrast Mode
- Lesson 1063 — Testing Focus Visibility
- High Priority
- Lesson 1969 — Resource Hint Priorities
- Highcharts
- is the enterprise veteran—comprehensive, battle-tested, with excellent documentation and support.
- Lesson 2643 — Overview of Popular Charting Libraries
- Higher conversion rates
- because users feel safe sharing information
- Lesson 2982 — Building Trust Through Privacy-First Design
- Highly customized builds
- need Webpack's granular control.
- Lesson 1398 — When Webpack Makes Sense vs Modern Alternatives
- Highly detailed artwork
- – Paintings or intricate textures work better as raster images
- Lesson 1244 — SVG: Scalable Vector Graphics for the Web
- History API
- gives JavaScript the power to manipulate that history stack directly.
- Lesson 960 — What is the History API and Why It Matters
- history stack
- think of it like a deck of cards representing each page you've visited.
- Lesson 960 — What is the History API and Why It MattersLesson 961 — The History Stack and Navigation States
- Holy Grail Layout
- is a famous web design pattern with a full-width header at top, a full-width footer at bottom, and three columns in the middle (left sidebar, main content, right sidebar).
- Lesson 358 — Holy Grail Layout with Grid
- Home
- Jump to first item (already covered)
- Lesson 1081 — Page Up and Page DownLesson 1166 — Keyboard Navigation in MenusLesson 1178 — Keyboard Navigation in TabsLesson 1205 — Slider and Range Controls
- Home/End
- (optional): Jump to first or last header
- Lesson 1183 — Keyboard Support for AccordionsLesson 1200 — Listbox PatternLesson 1201 — Tree View PatternLesson 1206 — Date Picker Pattern
- Homepage
- Maybe revalidate every 60 seconds (high visibility, moderate update frequency)
- Lesson 1802 — Content Freshness vs Build Time Trade-offs
- Honest about purposes
- "We use analytics to understand which features are popular"
- Lesson 2981 — Transparent Data Practices
- Honor their choices immediately
- without dark patterns or friction
- Lesson 2982 — Building Trust Through Privacy-First Design
- Horizontal offset
- How far right (positive) or left (negative) the shadow moves
- Lesson 176 — Text ShadowLesson 205 — Text Shadow
- Horizontal scaling
- (multiple servers) as traffic grows
- Lesson 1764 — Cost and Infrastructure Considerations
- Horizontal scrolling galleries
- Set `overflow-x: auto` and `overflow-y: hidden` to create sideways-scrolling image galleries.
- Lesson 246 — overflow-x and overflow-y for directional control
- Horizontal toolbars
- Home focuses the leftmost button, End the rightmost
- Lesson 1080 — Home and End Key Support
- Hot Module Replacement (HMR)
- is nearly instantaneous in Vite because it only updates the changed module.
- Lesson 1386 — Vite vs Other Build ToolsLesson 1394 — Webpack Dev ServerLesson 1405 — Comparing Build Times
- Hot reloading
- Built-in development server with automatic HMR
- Lesson 1402 — Parcel: Zero Configuration Bundling
- how
- to send it:
- Lesson 91 — The <form> Element and Form SubmissionLesson 2222 — Performance Insights and Recommendations
- How it works
- Each shadow in the list is rendered independently, and they stack from **first to last**.
- Lesson 203 — Multiple Box ShadowsLesson 1222 — Multiple Media Conditions in sizesLesson 1574 — Session Invalidation and LogoutLesson 2080 — Timeout Option for Guaranteed Execution
- how long
- a compromised token remains valid.
- Lesson 1584 — Where to Store JWTs: localStorage vs sessionStorageLesson 2198 — Understanding the Request Waterfall
- How often
- they'll hear from you
- Lesson 2346 — Permission Best Practices and TimingLesson 2361 — Install Analytics and Metrics
- How to access it
- In Chrome or Firefox, press `F12` to open DevTools, then click the device icon or press `Ctrl+Shift+M` (Windows) or `Cmd+Shift+M` (Mac).
- Lesson 404 — Testing Media Queries Across Devices
- Hreflang tags
- are `<link>` elements placed in your HTML `<head>` that explicitly declare these relationships.
- Lesson 2542 — Hreflang Tags for SEO
- HTML
- a way to structure documents
- Lesson 28 — The Birth of the Web: Tim Berners-Lee and CERNLesson 37 — Web Standards Today: Finding Current SpecificationsLesson 40 — CSS's Role: Separation of PresentationLesson 45 — How the Pillars Work TogetherLesson 702 — Setting Data AttributesLesson 1475 — Resource RepresentationLesson 2898 — JavaScript Context Encoding
- HTML 2.0 (1995)
- standardized what browsers were already doing and added forms, letting users submit data for the first time.
- Lesson 31 — HTML Evolution: From HTML 1.0 to HTML5
- HTML content
- , you'll see the markup rendered or displayed as formatted code, helping you quickly identify structural issues or verify template output.
- Lesson 2201 — Response Preview and Content Inspection
- HTML foundation
- Your content and structure work without anything else.
- Lesson 42 — Progressive Enhancement Philosophy
- HTML Parsing
- The browser reads HTML from top to bottom, character by character
- Lesson 672 — The Critical Rendering Path
- HTML provides the structure
- Lesson 45 — How the Pillars Work Together
- HTML shorthand
- Lesson 1466 — Emmet for Faster HTML and CSS Writing
- HTML/CSS/JavaScript
- 70-80% reduction (a 100KB file becomes 20-30KB)
- Lesson 2132 — Gzip Compression Algorithm
- HTMLCollection
- , which is a live, array-like list of matching elements.
- Lesson 676 — document.getElementsByClassName()
- HTTP
- (HyperText Transfer Protocol) comes in.
- Lesson 6 — HTTP: The Language of the WebLesson 28 — The Birth of the Web: Tim Berners-Lee and CERN
- HTTP Headers
- provide critical metadata:
- Lesson 1476 — Self-Descriptive MessagesLesson 2497 — The Accept-Language Header
- HTTP request
- to the server, like saying: "Hello, I'd like to GET the resource at /about.
- Lesson 6 — HTTP: The Language of the WebLesson 7 — The Request-Response CycleLesson 10 — What is a Web Server?
- HTTP request-response pairs
- entire network resources like HTML files, CSS, images, and API responses.
- Lesson 816 — Cache API vs localStorage and IndexedDB
- HTTP requests
- and sending back **responses** — but only you can access it.
- Lesson 14 — Localhost and Development ServersLesson 797 — What Are Cookies and How They Work
- HTTP response
- .
- Lesson 6 — HTTP: The Language of the WebLesson 7 — The Request-Response CycleLesson 10 — What is a Web Server?
- HTTP Status Codes
- immediately communicate outcome (200 OK, 404 Not Found, 500 Server Error) without inspecting response bodies.
- Lesson 1476 — Self-Descriptive MessagesLesson 1552 — Error Handling Patterns in REST vs GraphQLLesson 2229 — SEO Audits in Lighthouse
- HTTP-only cookies aren't feasible
- (pure client-side apps with no backend)
- Lesson 1595 — localStorage Security Risks
- HTTP/1.1
- is like a single-lane road where cars (requests) must wait for the car ahead to reach its destination before moving.
- Lesson 2120 — HTTP/2 MultiplexingLesson 2130 — Detecting and Leveraging HTTP/2 and HTTP/3
- HTTP/2 multiplexing
- is like a multi-lane highway where all cars travel simultaneously, and you can even split a large truck's cargo across multiple lanes so smaller cars don't get stuck behind it.
- Lesson 2120 — HTTP/2 Multiplexing
- HTTP/2/3
- Serve more granular files, skip domain sharding, use individual icons instead of sprites
- Lesson 2130 — Detecting and Leveraging HTTP/2 and HTTP/3
- HttpOnly
- flag prevents JavaScript from accessing the cookie through `document.
- Lesson 803 — Secure and HttpOnly FlagsLesson 807 — Cookie Security Best Practices
- HttpOnly + Secure Cookie
- Server sends refresh token as HttpOnly, Secure, SameSite cookie.
- Lesson 1600 — Refresh Token Storage Strategy
- HttpOnly cookie
- (JavaScript can't read it) or **never sent to the frontend at all**
- Lesson 1600 — Refresh Token Storage Strategy
- HttpOnly cookies
- or server-side storage
- Lesson 826 — Decision FrameworkLesson 1598 — Memory-Only Token StorageLesson 1599 — Token Storage in Single-Page ApplicationsLesson 1603 — Token Storage Best Practices by Use CaseLesson 1609 — Refresh Token Storage StrategiesLesson 2919 — HttpOnly Cookies for Token Storage
- HttpOnly, Secure, SameSite=Strict cookies
- for both access and refresh tokens
- Lesson 1603 — Token Storage Best Practices by Use Case
- HTTPS
- is the **secure version** of HTTP—the "S" stands for "Secure.
- Lesson 13 — HTTPS and SSL/TLSLesson 2355 — Understanding the Install Prompt
- HTTPS prevents this
- by ensuring the service worker code is authentically from your server and hasn't been tampered with during transmission.
- Lesson 2933 — Service Workers Require HTTPS
- Hue
- is the actual color on the color wheel, measured in degrees (0-360):
- Lesson 183 — HSL and HSLA Functions
- Hue, Saturation, Lightness
- a color model that matches how we naturally think about color.
- Lesson 183 — HSL and HSLA Functions
- Huffman compression
- , shrinking the bytes needed for any text that must be sent literally.
- Lesson 2122 — HTTP/2 Header Compression with HPACK
- Human right
- Everyone deserves equal access to information and services
- Lesson 987 — What is Web Accessibility and Why It Matters
- Husky
- manage these git hooks easily:
- Lesson 1453 — HTML Linting in CI and Pre-Commit HooksLesson 1460 — Pre-commit Hooks with Husky and lint-staged
- hybrid approach
- uses SSR to deliver the initial page quickly with fully-rendered HTML, then switches to CSR for all subsequent page navigations.
- Lesson 1765 — Hybrid Approaches: SSR + CSRLesson 2494 — Hybrid Approach with FrameworksLesson 2507 — Storing User Language Preference
- Hybrid approaches
- combine static generation with fallback pages, on-demand generation, or client-side hydration.
- Lesson 1793 — Choosing Between Full SSG and Hybrid Approaches
- Hydration
- is the process where your JavaScript framework "wakes up" the static HTML by:
- Lesson 1733 — Time to Interactive (TTI)Lesson 1742 — What is Hydration?Lesson 1743 — The Hydration Process FlowLesson 1744 — Hydration vs. Client-Side RenderingLesson 1750 — Partial Hydration ConceptsLesson 1753 — Resumability vs. Hydration
- Hydration advantages
- Lesson 1744 — Hydration vs. Client-Side Rendering
- Hydration challenges
- Lesson 1744 — Hydration vs. Client-Side Rendering
- hydration mismatch
- happens when the HTML the server sent doesn't match what your client-side JavaScript expects to render.
- Lesson 1746 — Hydration Mismatch ErrorsLesson 1747 — Avoiding Hydration Mismatches
- Hydration time
- measures how long this transformation takes—from when the HTML loads to when the app becomes fully interactive (TTI).
- Lesson 1739 — Hydration TimeLesson 1742 — What is Hydration?Lesson 1756 — Measuring Hydration Performance
I
- IANA timezone database
- (the same database operating systems use).
- Lesson 2754 — Timezone Libraries: date-fns-tz and Luxon
- icon
- " because these icons originally appeared in the browser's favorites/bookmarks list.
- Lesson 87 — Favicon and Icon LinksLesson 1712 — Toast Types and Visual HierarchyLesson 2351 — Displaying Notifications with showNotification()
- Icon Fonts
- Lesson 1278 — Choosing the Right Strategy for Different Font TypesLesson 1310 — Fallback Fonts for Icon FontsLesson 2042 — Icon Fonts vs SVG Icons
- Icon-only buttons
- Lesson 1019 — aria-label: Providing Accessible Names
- Icons
- – Interface icons (arrows, menus, checkmarks) scale beautifully on any device, from low-DPI laptops to 4K retina screens
- Lesson 1244 — SVG: Scalable Vector Graphics for the WebLesson 1934 — Image and Media Asset Budgets
- ID selector
- Targets one unique element → `#header { font-size: 24px; }` styles the element with `id="header"`
- Lesson 3 — IP Addresses and Domain NamesLesson 121 — Basic Selectors: Type, Class, and ID
- ID selectors
- Unique, one-time targeting (use rarely in CSS)
- Lesson 121 — Basic Selectors: Type, Class, and IDLesson 131 — Understanding Specificity: The Point System
- idempotent
- if making the same request multiple times produces the same result as making it once.
- Lesson 1482 — HTTP Method Semantics: Safe and IdempotentLesson 1691 — Idempotent Request Design
- Idempotent operations
- with certain status codes:
- Lesson 1687 — Understanding When to Retry Network Requests
- Identifies the dependency chain
- to determine what modules are affected
- Lesson 1374 — Hot Module Replacement (HMR) in Vite
- Identify every stacking context
- Use your browser's DevTools to inspect elements that won't move forward or backward.
- Lesson 235 — Debugging Stacking Issues
- Identify problems
- Where do users get stuck or leave?
- Lesson 2779 — Understanding Analytics and User Behavior Tracking
- Idle time
- refers to these brief windows when the browser has finished urgent work and is waiting for the next frame or user input.
- Lesson 2077 — Understanding Browser Idle Time
- IDs
- (0,1,0,0) - Very powerful
- Lesson 132 — Specificity Order: Inline, IDs, Classes, ElementsLesson 135 — Calculating Specificity in Complex SelectorsLesson 137 — Selector Performance Considerations
- If auto-playing
- Keep under 500KB or use animated image alternatives
- Lesson 1934 — Image and Media Asset Budgets
- If bot
- serve pre-rendered HTML (often using a headless browser like Puppeteer)
- Lesson 1881 — Dynamic Rendering and Bot Detection
- If invalid
- , it displays the browser's default error message near the first invalid field
- Lesson 905 — The reportValidity() Method
- If the hashes match
- The resource is unchanged—safe to execute.
- Lesson 2935 — What is Subresource Integrity (SRI)
- If they don't match
- The browser blocks the resource entirely, preventing potentially malicious code from running.
- Lesson 2935 — What is Subresource Integrity (SRI)
- If unchanged
- Server responds with `304 Not Modified` (no body content), saving bandwidth
- Lesson 2144 — ETag and Validation
- Ignoring HTTP status codes
- Returning `200 OK` for errors with error details in the body
- Lesson 1481 — RESTful vs REST-ish APIs
- Illustrations
- – Flat design artwork, infographics, and decorative elements that need to remain crisp
- Lesson 1244 — SVG: Scalable Vector Graphics for the WebLesson 2001 — SVG for Vector Graphics
- Image Processing
- Applying filters, resizing, or converting formats.
- Lesson 2094 — Real-World Use Cases: Heavy Computation
- Image Size Mismatches
- Open Graph expects at least 1200×630px.
- Lesson 1845 — Social Sharing Best Practices
- ImageMagick
- , **mozjpeg**, and online services typically offer a progressive flag or option during JPEG export.
- Lesson 2005 — Progressive vs Baseline Encoding
- ImageObject
- schemas are structured data vocabularies from Schema.
- Lesson 1865 — Video and Image Object Schema
- images
- in CSS, not colors.
- Lesson 206 — Gradient BackgroundsLesson 487 — Gradient Functions: linear-gradient() and radial- gradient()Lesson 1375 — Importing Assets in ViteLesson 2158 — Types of Assets to Serve from CDNsLesson 2201 — Response Preview and Content InspectionLesson 2399 — Handling Different Content Types
- Images without dimensions
- Browser doesn't reserve space until the image loads
- Lesson 1895 — Cumulative Layout Shift (CLS) Explained
- immediate children
- become flex items.
- Lesson 254 — Enabling Flexbox with display: flexLesson 268 — display: flex and Creating a Flex Container
- Immediate feedback
- Let users know about format errors (like invalid email patterns) right away using the `invalid` event or input-triggered custom validation
- Lesson 918 — Field-Level vs Form-Level Validation
- Immediate for Network Errors
- If an API call fails, show the error right away—don't leave the user wondering if their action is still processing.
- Lesson 1683 — Error Message Placement and Timing
- Immediate Updates
- work for isolated changes, but rapid-fire updates need spacing.
- Lesson 1118 — Announcement Timing and Delays
- Immediate visual content
- The HTML arrives already containing meaningful content, not blank loading states
- Lesson 1737 — Speed Index
- immediately
- , even if the user never scrolls down to see it.
- Lesson 1258 — Lazy Loading Iframes and EmbedsLesson 1507 — Why Pagination MattersLesson 2179 — Inspecting and Modifying CSS PropertiesLesson 2330 — Optimistic UI UpdatesLesson 2364 — Installation and Distribution ModelsLesson 2703 — Real-Time Validation on SelectionLesson 2792 — async vs defer Attributes
- Immediately display the file
- in your UI when the user selects it (using preview techniques you learned earlier)
- Lesson 2720 — Upload with Optimistic UI Updates
- Immutability by default
- Every operation with libraries like `date-fns` returns a *new* date object, eliminating accidental mutations that plague native `Date`.
- Lesson 2735 — Why Use Date Libraries Over Native Date
- Implement custom headers
- APIs can require custom headers (like `X-Requested-With`) that simple forms can't forge
- Lesson 2907 — What is CSRF and Why Frontend Matters
- Implement error boundaries
- Wrap third-party initialization in try-catch blocks with custom error reporting.
- Lesson 2829 — Embedding Third-Party Scripts Safely
- Implementation and Testing
- Lesson 36 — Browser Vendors and the Standards Process
- Implementation approach
- Lesson 2535 — Managing Translation Updates in Production
- Implicit association
- Wrap the input inside the label:
- Lesson 102 — The <label> Element and for Attribute
- Implicit grid
- tracks are automatically created by the browser when you place more items than fit in your explicit grid.
- Lesson 313 — Explicit vs Implicit Grid
- Important attributes
- Lesson 2665 — The File Input Element
- Important caveat
- `true` means the browser *has* a network interface, not that it can necessarily reach the internet.
- Lesson 2323 — Detecting Online/Offline State
- Important Context
- Information that helps screen reader users understand something is probably valuable to *all* users.
- Lesson 1135 — When NOT to Use Visually Hidden Content
- Important details
- Lesson 344 — grid-column-start and grid-column-end
- Important limitation
- You cannot set `HttpOnly` from JavaScript—that's the point!
- Lesson 803 — Secure and HttpOnly FlagsLesson 968 — Preventing Unintended Navigation with beforeunloadLesson 1843 — Dynamic Social Meta Tags
- Important quirks
- Lesson 213 — Relative Positioning Fundamentals
- Important subjects
- get lost in large group photos on small screens
- Lesson 1227 — Understanding Art Direction in Responsive Images
- Important syntax notes
- Lesson 197 — Background Shorthand
- Improve performance
- mobile devices (often on slower connections) load the lightest CSS first
- Lesson 380 — Mobile-First Philosophy
- Improve responsiveness
- – Users can interact with the page while secondary features load in the background using `requestIdleCallback` or lazy loading patterns
- Lesson 1991 — Optimizing JavaScript Execution with Code Splitting
- Improved perceived performance
- Content appears faster, even if full interactivity takes time
- Lesson 1718 — What is Server-Side Rendering (SSR)?
- Improved reliability
- If one edge server fails, requests route to another
- Lesson 2156 — What is a CDN and Why Use One
- Improves Core Web Vitals
- Faster LCP and better FID/INP by reducing main thread work
- Lesson 1951 — What is Lazy Loading and Why It Matters
- In Axios Interceptors
- Lesson 1659 — Detecting 401 Responses
- In Chrome DevTools
- Lesson 2264 — Disabling and Managing Breakpoints
- In Chrome/Edge
- Lesson 1281 — Testing Font Loading Strategies
- In Chrome/Edge DevTools
- Lesson 2442 — Console Logging in Service Workers
- In Global Fetch Wrappers
- Lesson 1659 — Detecting 401 Responses
- In Individual Fetch Requests
- Lesson 1659 — Detecting 401 Responses
- In NVDA
- Press `Insert + F7` to open the Elements List, then select "Links"
- Lesson 1107 — Link List and Testing Link Context
- In NVDA (Windows)
- Lesson 1104 — Heading Navigation and Structure TestingLesson 1105 — Landmark and Region Navigation
- in order
- and uses the first one that matches.
- Lesson 422 — Media Queries in Picture SourcesLesson 1236 — Type Attribute for Format NegotiationLesson 2014 — Media Queries in Picture Sources
- In Production (Field)
- Collect Real User Monitoring (RUM) data from actual visitors.
- Lesson 1914 — Performance Measurement Overview
- In the response body
- Lesson 1511 — Pagination Metadata
- In VoiceOver
- Press `VO + U`, then use left/right arrows to reach the Links menu
- Lesson 1107 — Link List and Testing Link Context
- In VoiceOver (macOS)
- Lesson 1104 — Heading Navigation and Structure TestingLesson 1105 — Landmark and Region Navigation
- In your `tailwind.config.js`
- Lesson 648 — CSS Custom Properties with Tailwind
- In your HTML
- Lesson 648 — CSS Custom Properties with Tailwind
- In your tailwind.config.js file
- Lesson 652 — Theme Function and Referencing Values
- Inactive
- Briefly inactive between event loop cycles
- Lesson 788 — Transactions: Read, Write, and Lifecycle
- Include proper dimensions
- (width/height) to prevent layout shift when the iframe loads
- Lesson 1258 — Lazy Loading Iframes and Embeds
- Include relevant keywords naturally
- If someone searches for "chocolate chip cookies," those words in your description may appear bold in search results, catching their eye.
- Lesson 85 — Meta Description for SEO
- Incoming requests to `/en/about`
- → Redirect to `/about` (canonical URL)
- Lesson 2541 — Default Locale Handling
- Incompatible JavaScript
- Code had to be written twice, tested in both browsers
- Lesson 29 — The Browser Wars and Their Legacy
- Inconsistent behavior
- between development, staging, and production
- Lesson 2948 — Lock Files and Dependency Pinning
- Inconsistent parsing behavior
- across browsers, especially for date strings that aren't in ISO 8601 format.
- Lesson 2727 — The Date Object and Its Historical Context
- Inconsistent patterns
- Your menu uses up/down arrows, but your toolbar uses left/right for similar items.
- Lesson 1086 — Testing Custom Navigation
- Inconsistent state
- Different tabs might behave differently until they reload
- Lesson 2377 — skipWaiting() to Bypass Waiting
- Incorrect Live Regions
- Lesson 1037 — Common ARIA Anti-Patterns to Avoid
- Incorrect nesting
- Valid server HTML that violates client framework rules (like a `<div>` inside a `<p>`).
- Lesson 1746 — Hydration Mismatch Errors
- Increased garbage collection
- The browser works harder to reclaim memory, causing jank
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- Incremental Builds
- Only rebuild pages that have actually changed since the last build.
- Lesson 1788 — Build Performance with Large Datasets
- Incremental Static Regeneration (ISR)
- is a hybrid approach that lets you update static pages *after* deployment without rebuilding everything.
- Lesson 1794 — What is Incremental Static Regeneration
- Indentation
- The `indent` rule accepts a number (spaces) or `"tab"`, and can include options for specific scenarios like `SwitchCase` indentation.
- Lesson 1431 — Rule Options and Customization
- Independent deployment
- Teams can update their component without coordinating releases
- Lesson 2489 — Micro-Frontend Architecture Boundaries
- independent scripts
- like analytics or ads that don't depend on anything else.
- Lesson 2048 — async vs defer for Script LoadingLesson 2792 — async vs defer Attributes
- IndexedDB
- provides **significantly more space** (often hundreds of megabytes to gigabytes, depending on the browser and available disk space)—suitable for entire datasets, media files, or offline application data.
- Lesson 783 — IndexedDB vs localStorage: Key DifferencesLesson 808 — When to Use Cookies vs Other StorageLesson 820 — Capacity and LimitsLesson 821 — Performance CharacteristicsLesson 822 — Data Structure RequirementsLesson 823 — Persistence and DurabilityLesson 824 — Security and Privacy ConsiderationsLesson 825 — Cross-Tab and Offline Scenarios (+3 more)
- IndexedDB Inspection
- , you can intercept failed requests, serialize their details, and save them.
- Lesson 2329 — Queue Failed Requests
- IndexedDB/Cache API
- Browsers may evict data marked as "best effort" when device storage runs low.
- Lesson 820 — Capacity and Limits
- Indicate drop zones
- with clear ARIA labels when keyboard-navigating
- Lesson 1207 — Drag and Drop Accessibility
- Individual bundle/chunk sizes
- for specific routes or features
- Lesson 1933 — JavaScript Bundle Size Budgets
- Individual entries
- Hover over a cached resource and click the delete icon
- Lesson 2439 — Clearing Cache Storage
- Inert background
- Content outside the dialog becomes non-interactive (when used as a modal)
- Lesson 1149 — The <dialog> Element Fundamentals
- Infinite scroll
- patterns load more content as users browse naturally
- Lesson 1507 — Why Pagination MattersLesson 2106 — Performance Tradeoffs and Alternatives
- Informative messaging
- "You need Admin access to view team analytics"
- Lesson 1652 — Placeholder Content for Unauthorized Users
- Inherited properties
- traced back through parent elements
- Lesson 2183 — Computed Tab and Final StylesLesson 2469 — Inheritable Properties in Shadow DOM
- Initial configuration
- NVDA will offer a quick setup guide on first launch
- Lesson 1101 — Setting Up NVDA on Windows
- Initial connection
- TCP handshake
- Lesson 2169 — Connection Overhead and TimingLesson 2198 — Understanding the Request Waterfall
- Initial crawl
- Googlebot downloads your HTML and follows links it finds in the raw source
- Lesson 1878 — Googlebot's JavaScript Rendering
- Initial Development
- Lesson 2366 — Development and Maintenance Costs
- Initial load
- Display first batch plus the button
- Lesson 1513 — Load More Button PatternLesson 1765 — Hybrid Approaches: SSR + CSR
- initial page load
- for human visitors.
- Lesson 1879 — Server-Side Rendering for SEOLesson 2783 — Single-Page Application Tracking
- Initial Token Retrieval
- Read the CSRF token from a meta tag during app initialization (as you learned in lesson 2910).
- Lesson 2915 — CSRF Protection in SPAs
- Initially
- The first item in the group gets `tabindex="0"`, all others get `tabindex="-1"`
- Lesson 1074 — Roving tabindex Pattern
- Initiator
- Confirms which `<img>` or `<source>` triggered the request
- Lesson 2016 — Testing Responsive Images Across ViewportsLesson 2196 — Network Panel Overview and Interface
- Initiator Column
- Preloaded resources should show the HTML document as initiator, confirming they started before JavaScript execution.
- Lesson 1972 — Measuring Resource Hint Impact
- Inject delays
- to test timeout behavior and exponential backoff timing
- Lesson 1696 — Testing Retry Logic
- Injection Attacks
- By controlling which domains can serve content, CSP prevents attackers from loading malicious resources from unauthorized servers.
- Lesson 2839 — What is Content Security Policy?
- inline
- and **inline-block** elements—it has no effect on block-level elements.
- Lesson 178 — Vertical Alignment of Inline TextLesson 457 — Introduction to Logical Properties and Flow- Relative ValuesLesson 458 — Block and Inline AxesLesson 461 — Logical Position Properties (inset)Lesson 464 — Writing Modes and DirectionLesson 2037 — SVG Basics and Inline vs External
- Inline and inline-block elements
- in normal flow (text and inline content)
- Lesson 232 — Stacking Order Within a Context
- Inline annotations
- See who last edited each line (Git blame) without leaving your file
- Lesson 1468 — Git Integration and Source Control Panel
- inline approach
- for component-focused work, as it matches how you think about individual elements.
- Lesson 403 — Organizing Media Queries in CSSLesson 719 — Inline vs addEventListener
- Inline axis
- Runs horizontally (left to right by default) — this defines your columns
- Lesson 314 — The Grid Axis: Rows and ColumnsLesson 458 — Block and Inline Axes
- Inline elements
- (like `<span>`, `<a>`, `<strong>`) flow horizontally within their parent, sitting next to each other like words in a paragraph.
- Lesson 207 — What is Normal Flow?Lesson 210 — Inline-Block Display
- Inline Event Handlers
- onclick, onerror attributes (these always violate CSP)
- Lesson 2840 — How CSP Works in Browsers
- Inline scripts without nonces
- Shows `inline` as the blocked resource
- Lesson 2870 — Analyzing CSP Violation Reports
- Inline source maps
- embed the entire mapping data directly inside your JavaScript file as a Base64-encoded `data:` URL.
- Lesson 2281 — Inline vs External Source Maps
- Inline styles
- (written directly in HTML): Worth **1,0,0,0 points**
- Lesson 131 — Understanding Specificity: The Point SystemLesson 132 — Specificity Order: Inline, IDs, Classes, ElementsLesson 135 — Calculating Specificity in Complex SelectorsLesson 2861 — Adding Hashes to CSP HeadersLesson 2882 — CSP Challenges with Inline Styles
- Inline Toggle
- Lesson 2506 — Language Switching UI Patterns
- Inlining
- means embedding JavaScript directly between `<script>` tags in your HTML:
- Lesson 1980 — Inline vs External Critical JS
- Inlining resources
- (embedding small CSS/images directly in HTML) to avoid round trips
- Lesson 2119 — HTTP/1.1 Limitations and Connection Management
- inner container
- manages the horizontal three-column layout.
- Lesson 294 — Holy Grail LayoutLesson 305 — Pricing Table Pattern
- Input delay
- – waiting for the main thread
- Lesson 1894 — Interaction to Next Paint (INP) as FID Successor
- Input padding
- Icons or visual hints may need repositioning
- Lesson 2523 — Form Controls and Input Direction
- Insert
- it into the DOM (covered in upcoming lessons)
- Lesson 689 — Creating Elements with createElement
- inside
- (respects all dimensions).
- Lesson 210 — Inline-Block DisplayLesson 442 — :is() and :where() for Grouping SelectorsLesson 448 — :focus-within for Container HighlightingLesson 1279 — font-display in @font-face Rules
- Insights
- section or dedicated **Performance Insights** panel.
- Lesson 2222 — Performance Insights and Recommendations
- Inspect every visible element
- using DevTools, noting which CSS rules are actually applied
- Lesson 1975 — Extracting Critical CSS Manually
- Inspect network traffic
- to discover "hidden" endpoints
- Lesson 1648 — Client-Side Permission Security Limitations
- Inspect tool
- (top-left icon): Click any page element to jump directly to it in the tree
- Lesson 2174 — Elements Panel Overview and Navigation
- Inspect variables
- – See the current values of all variables in scope
- Lesson 2253 — What Are Breakpoints and Why Use ThemLesson 2283 — Debugging with Source Maps in DevTools
- Inspecting arrays of primitives
- to see values and indices side-by-side
- Lesson 2188 — Console.table() for Structured Data
- install event
- , you create a new cache with the updated version:
- Lesson 2397 — Versioned Cache KeysLesson 2402 — Cache Warming Strategies
- Install phase
- The new service worker downloads and caches all updated assets into a *new* cache (often named with a different version key like `precache-v2`)
- Lesson 2423 — Precache Update Flow
- Install the package
- Lesson 1459 — Prettier with ESLint Integration
- Installability warnings
- that explain why your PWA might not be installable
- Lesson 2307 — Testing and Validation
- Installation
- Lesson 1442 — Integrating with Prettier
- Installation fails
- If the `install` event handler throws an error or a promise rejection occurs, that service worker immediately becomes redundant
- Lesson 2375 — The Redundant State
- Instant First Contentful Paint
- Readers see the article content almost immediately (faster FCP and LCP metrics), even on slow connections or devices, because the HTML contains the actual text.
- Lesson 1757 — SSR for Content-Heavy Sites
- Instant First Paint
- Unlike CSR (which shows a blank page while JavaScript loads) or SSR (which waits for server rendering), SSG pages display content immediately.
- Lesson 1723 — SSG Performance Characteristics
- Instant TTFB
- The file already exists, no computation required
- Lesson 1767 — What is Static Site Generation?
- Instant updates
- Changes to a single module only require re-processing that one file
- Lesson 1404 — ESM-Native DevelopmentLesson 2363 — PWA vs Native App: Capabilities Comparison
- instantly
- because it doesn't bundle anything upfront.
- Lesson 1373 — Vite's Development ServerLesson 2150 — Stale-While-Revalidate
- Instead of
- Lesson 758 — What is Event Delegation?
- Instructions are provided
- Any `aria-describedby` hints should be read
- Lesson 1106 — Forms Mode and Input Testing
- Integration checks
- Ensuring compatibility with your CMS or framework
- Lesson 1451 — Custom HTML Linting Rules
- Integration needs
- AWS CloudFront for AWS shops, Vercel for frontend frameworks
- Lesson 2159 — Popular CDN Providers
- Integration points
- When your component needs to style children it doesn't directly control
- Lesson 1346 — Global Styles in CSS Modules
- Integrity
- ensures data isn't modified in transit.
- Lesson 2927 — Why HTTPS is Essential for Modern Web Apps
- Intentional use cases
- Lesson 2877 — Multiple CSP Headers and Policies
- Interactions
- User inputs and their processing time
- Lesson 1916 — Chrome DevTools Performance Panel Basics
- Interactive cards
- Hover over a card to reveal buttons, change image brightness, or animate icons inside it.
- Lesson 638 — Group Hover and Focus
- Interactive Elements
- Lesson 1110 — Creating a Screen Reader Testing ChecklistLesson 1189 — Keyboard Navigation RequirementsLesson 1889 — Largest Contentful Paint (LCP) Explained
- Interactive Hover Effects
- Add visual feedback to make charts explorable.
- Lesson 2610 — SVG Styling and CSS Integration
- interactivity
- on the web.
- Lesson 716 — What Are DOM Events?Lesson 2601 — SVG Fundamentals for Data Visualization
- Intercept the 401
- When any API call returns 401, catch it before showing an error
- Lesson 1663 — Token Refresh on 401
- Interfaces
- Querying specific fields on implementations
- Lesson 1536 — Inline Fragments and Type Conditions
- Internal analytics
- (aggregated, anonymized traffic patterns)
- Lesson 2960 — Legitimate Interest vs Consent
- Internal consistency checks
- that should never fail in correct code
- Lesson 2192 — Console.assert() for Runtime Checks
- Internal tools
- with homogeneous user bases where everyone shares language preferences
- Lesson 2540 — Content Negotiation vs Explicit URLs
- International Laws
- vary by country but often reference WCAG:
- Lesson 991 — Legal Requirements and Standards Compliance
- Internationalization
- `Vary: Accept-Language` caches different language versions.
- Lesson 2149 — Vary Header
- Internationalization matters
- If your site will be translated into languages with different writing modes (Arabic, Hebrew, Japanese vertical text), logical properties handle direction changes automatically.
- Lesson 465 — When to Use Logical vs Physical Properties
- Interpolation
- is the process of replacing placeholders in a translation string with actual runtime values.
- Lesson 2530 — Interpolation and Variable SubstitutionLesson 2579 — Interpolation and Ranges
- Interruption Handling
- Traditional animations often need explicit stop/restart logic when values change mid-animation.
- Lesson 2573 — React Spring Core Concepts
- Intersection Observer
- is a modern API specifically designed to efficiently watch when elements enter or leave the viewport (or any ancestor container).
- Lesson 743 — Intersection Observer as Event Alternative
- Intersection Observer API
- is a browser feature that watches elements and notifies you when they become visible (or invisible) within the viewport—without constantly checking scroll position.
- Lesson 1954 — Intersection Observer API FundamentalsLesson 1955 — Implementing Custom Image Lazy LoadingLesson 2018 — Intersection Observer for Custom Lazy LoadingLesson 2799 — Lazy Loading Third-Party Widgets
- Intl
- object is JavaScript's built-in Internationalization API, designed to handle locale-aware formatting right in the browser.
- Lesson 2767 — Introduction to the Intl API
- Intrinsic sizing
- means the element's size is determined *by its content*.
- Lesson 151 — Intrinsic vs Extrinsic Sizing
- invalid
- and displays your custom message.
- Lesson 907 — The setCustomValidity() MethodLesson 1448 — Common HTML Validation Rules
- Invalid credentials
- – Your token is malformed, expired, or doesn't match server records
- Lesson 1657 — Understanding 401 Unauthorized
- Invalid times
- When clocks "spring forward" (usually 2:00 AM → 3:00 AM), any time between 2:00 and 3:00 doesn't actually exist that day.
- Lesson 2734 — Daylight Saving Time Edge Cases
- Invalid Token Rejection
- Submit a request with a corrupted, expired, or completely fabricated token.
- Lesson 2916 — Testing CSRF Protection
- Invasive tracking
- goes further: fingerprinting devices, building shadow profiles, tracking users across unrelated sites, or collecting sensitive data without clear purpose or consent.
- Lesson 2975 — Understanding Ethical vs Invasive Tracking
- IP addresses
- from earlier lessons?
- Lesson 14 — Localhost and Development ServersLesson 2956 — Personal Data in the Frontend
- IP binding
- is simpler: you record the IP address when the token is issued and validate it on subsequent requests.
- Lesson 2925 — Fingerprinting and Token Binding
- Irrelevant schemas
- Don't add Article schema to a product page just because you can
- Lesson 1868 — Structured Data Best Practices and Common Mistakes
- ISO 8601 format
- , which looks like `"YYYY-MM-DD"` for dates, `"HH:mm"` for times, and `"YYYY-MM- DDTHH:mm"` for datetime-local.
- Lesson 2766 — Formatting Dates for Input Elements
- Issues it causes
- Lesson 134 — !important and When to Avoid It
- It changes frequently
- – caching won't help if the code updates often anyway
- Lesson 1980 — Inline vs External Critical JS
- It opens a menu
- – Use `aria-haspopup="true"` (or `"menu"`)
- Lesson 1164 — Menu Button Semantics and ARIA
- It requests unusual permissions
- (filesystem access, network calls)
- Lesson 2947 — Reviewing Package Source Code
- It's critical
- (handles authentication, payment processing, or sensitive data)
- Lesson 2947 — Reviewing Package Source Code
- It's larger
- (> 2 KB) – embedding bloats every HTML response
- Lesson 1980 — Inline vs External Critical JS
- It's mutable
- , meaning date operations modify the original object rather than returning new instances.
- Lesson 2727 — The Date Object and Its Historical Context
- It's stable
- – unchanged code benefits from long-term caching
- Lesson 1980 — Inline vs External Critical JS
- It's truly critical
- – must execute before first paint (like feature detection or theme switching)
- Lesson 1980 — Inline vs External Critical JS
- Italic
- uses a specially designed slanted version of the font, while **oblique** simply tilts the regular letters.
- Lesson 167 — Font Weight and Font Style
- Italic (`ital`)
- Toggles between roman and true italic letterforms (0 or 1)
- Lesson 1288 — Variable Font Axes
- ITCSS
- (which you've just learned) organizes CSS by specificity layers—from global styles to specific utilities.
- Lesson 1340 — ITCSS vs Other Methodologies: When to Use WhatLesson 1351 — Understanding the Specificity War Problem
- ITCSS + BEM
- Large, complex projects with design systems
- Lesson 1340 — ITCSS vs Other Methodologies: When to Use What
- Item height
- how tall each item is (assuming uniform height)
- Lesson 2099 — Calculating Visible RangeLesson 2102 — Overscan and Buffer Items
- Items array
- (products purchased with IDs, names, prices, quantities)
- Lesson 2784 — E-commerce and Conversion Tracking
- Its current state
- `aria-selected="true"`, `aria-expanded="false"`
- Lesson 1032 — ARIA for Complex Interactive Widgets
J
- Jamstack
- stands for **JavaScript, APIs, and Markup**—it's not a specific technology but rather an **architecture pattern** for building websites and applications.
- Lesson 1816 — What is Jamstack?
- JavaScript
- (officially ECMAScript), check **ECMA-262** at `https://tc39.
- Lesson 37 — Web Standards Today: Finding Current SpecificationsLesson 45 — How the Pillars Work TogetherLesson 702 — Setting Data AttributesLesson 2598 — Measuring Animation PerformanceLesson 2898 — JavaScript Context Encoding
- JavaScript bundle size
- The framework code plus your application code must download completely
- Lesson 1749 — Performance Cost of Hydration
- JavaScript bundle size budget
- is a concrete, measurable limit you set on:
- Lesson 1933 — JavaScript Bundle Size Budgets
- JavaScript cannot access them
- , making them **immune to XSS**.
- Lesson 1593 — Token Storage Options Overview
- JavaScript engine
- is a specialized program inside your browser that reads and executes JavaScript code.
- Lesson 19 — The JavaScript Engine
- JavaScript enrichment
- Adds interactive features like smooth animations or instant form validation, but the page works without it.
- Lesson 42 — Progressive Enhancement Philosophy
- JavaScript errors
- when code expects proper DOM structure
- Lesson 1446 — Why Lint HTML? Catching Errors Early
- JavaScript execution
- happens on this same thread, interrupting the pipeline whenever a script runs.
- Lesson 1985 — Understanding the Main Thread and Browser Rendering PipelineLesson 2591 — Understanding the 60fps Target
- JavaScript files
- in the `<head>` without `async` or `defer` also block parsing.
- Lesson 2167 — Critical Path Analysis
- JavaScript libraries and bundles
- are prime CDN targets—especially vendor code that rarely changes.
- Lesson 2158 — Types of Assets to Serve from CDNs
- JavaScript libraries win when
- Lesson 2583 — CSS Transitions vs. Animation Libraries
- JavaScript objects directly
- , including complex structures, arrays, and even binary data like `Blob` and `File` objects.
- Lesson 783 — IndexedDB vs localStorage: Key Differences
- JavaScript parsing
- Tracking code must be evaluated by the browser
- Lesson 2787 — Performance Impact of Analytics
- JavaScript provides the interactivity
- Lesson 45 — How the Pillars Work Together
- JavaScript, APIs, and Markup
- it's not a specific technology but rather an **architecture pattern** for building websites and applications.
- Lesson 1816 — What is Jamstack?
- JAWS (Windows, commercial)
- may add extra context or behave differently in "forms mode" versus "browse mode.
- Lesson 1125 — Testing Announcements Across Screen Readers
- JIT (Just-In-Time) mode
- revolutionized Tailwind by generating only the exact utilities you write in your markup, on- demand during development.
- Lesson 643 — Performance Considerations with Variants
- Jitter
- means adding controlled randomness to your retry delays.
- Lesson 1689 — Adding Jitter to Retry Delays
- JPEG
- Quality settings typically range from 0-100.
- Lesson 2004 — Quality Settings and Visual Perception
- JSON
- (application/json) structures data as JavaScript objects: `{"name":"John","email":"john@example.
- Lesson 893 — Form Serialization PatternsLesson 1475 — Resource RepresentationLesson 2957 — Right to Access and Data Portability
- JSON responses
- (common with APIs), the Preview tab presents collapsible objects and arrays, making it easy to navigate deeply nested data structures without scrolling through raw text.
- Lesson 2201 — Response Preview and Content Inspection
- JSON Web Token (JWT)
- is a compact, self-contained token format that encodes information as a JSON object.
- Lesson 1578 — What is a JWT and Why Use It?
- JSON-LD
- (JavaScript Object Notation for Linked Data) separates structured data into a `<script>` tag with `type="application/ld+json"`:
- Lesson 1855 — JSON-LD vs Microdata vs RDFa
- Just a date
- Lesson 57 — The <time> Element
- Justify
- Long-form articles where the formal look outweighs readability concerns
- Lesson 171 — Text Alignment and Justification
K
- Kebab-case example
- Lesson 1440 — Enforcing Naming Conventions
- Keep durations under 500ms
- longer feels sluggish
- Lesson 512 — Common Transition Patterns and Best Practices
- Keep it fast
- Long animations frustrate keyboard users who are waiting to interact with newly-revealed content.
- Lesson 1185 — Animated Transitions and Accessibility
- Keep it minimal
- JWTs travel with every authenticated request.
- Lesson 1582 — Custom Claims and Payload Design
- Keep manual controls working
- (arrows, dots, keyboard)
- Lesson 1195 — Handling Reduced Motion Preferences
- Keep messages concise
- "15 results found" not "There are 15 results available for your search"
- Lesson 1122 — Search Result Announcements
- Keep semantic relationships together
- Place labels, descriptions, and their target elements on the same side of the shadow boundary.
- Lesson 2472 — Shadow DOM and Accessibility
- Keep the tone friendly
- A conversational, empathetic tone ("Oops, we can't find that!
- Lesson 1681 — Not Found and Resource Errors
- Keep the UI responsive
- during complex operations
- Lesson 2085 — What Web Workers Are and Why They Exist
- key
- (the label) and a **value** (the data):
- Lesson 773 — setItem and getItemLesson 809 — What is the Cache API and Why It MattersLesson 2234 — Inspecting localStorage and sessionStorage
- Key attributes
- Lesson 568 — Preloading Web Fonts
- Key Differences from Box-Shadow
- `text-shadow` has no spread radius and no inset keyword—it only follows the outline of your text characters, not the element box.
- Lesson 205 — Text Shadow
- Key elements
- Lesson 2295 — Rollback and Hotfix Workflows
- Key pattern
- Never store the child's birthdate during the age gate itself—that would be collecting personal data before consent.
- Lesson 2961 — Children's Privacy and Age Verification
- Keyboard accessibility
- Elements like `<button>` and `<a>` are focusable by default
- Lesson 997 — Why Semantic HTML Matters for AccessibilityLesson 1160 — Scrolling and Large Modal Content
- Keyboard navigation
- Lesson 1200 — Listbox PatternLesson 2105 — Accessibility Considerations for Virtual ListsLesson 2174 — Elements Panel Overview and Navigation
- Keyboard shortcut
- Press `Command ( ) + F5` (or `Command + Touch ID` on newer MacBooks)
- Lesson 1102 — Setting Up VoiceOver on macOS
- Keyboard shortcuts
- to jump between list items
- Lesson 1001 — Lists: Ordered, Unordered, and DescriptionLesson 1070 — Landmark Navigation in Screen Readers
- Keyboard traps are common
- Many carousels fail to implement proper focus management, making it difficult or impossible to navigate with a keyboard alone.
- Lesson 1187 — Why Carousels Are Challenging for Accessibility
- Keyboard-Only Navigation
- Lesson 1063 — Testing Focus VisibilityLesson 2664 — Testing Charts with Assistive Technology
- Keyboard-Only Testing
- Lesson 1210 — Testing Complex Widgets
- Keyframe percentages
- let you specify exactly *when* during that timeline certain styles should apply.
- Lesson 516 — Keyframe Percentages
- Keylogging
- Capture everything users type, including passwords
- Lesson 2892 — What is XSS and Why It Matters
- Keys
- unique identifiers to track which items are which
- Lesson 2576 — useTransition for Mounting/Unmounting
L
- L (Lightness)
- 0% = black, 100% = white — perceptually uniform across all hues
- Lesson 493 — LCH and OKLCH: Perceptually Uniform Color Models
- LAB
- and **OKLAB** separate **lightness** (how bright or dark) from **color** (hue and intensity).
- Lesson 494 — LAB and OKLAB Color FunctionsLesson 1914 — Performance Measurement Overview
- Lab Data (Synthetic Testing)
- uses controlled, simulated environments.
- Lesson 1901 — Core Web Vitals in the Field vs Lab
- Lab Data Only
- It simulates user experiences but doesn't capture what actual users encounter in the wild.
- Lesson 2232 — Lighthouse Limitations and Complementary Tools
- Lab Metrics
- come from controlled testing environments—tools like Lighthouse, WebPageTest, or browser DevTools running on your machine or in CI/CD pipelines.
- Lesson 1912 — Field vs Lab MetricsLesson 1928 — Establishing Performance Baselines
- Lab tools
- provide detailed diagnostics and help you identify specific bottlenecks
- Lesson 1914 — Performance Measurement Overview
- Lab/LCH
- (perceptually uniform color spaces).
- Lesson 491 — Understanding Color Spaces: sRGB, Display-P3, and Beyond
- Labels are announced
- When focusing an input, you should hear its associated `<label>`
- Lesson 1106 — Forms Mode and Input Testing
- Landmark roles
- define page regions (`navigation`, `main`, `search`)
- Lesson 1014 — ARIA Roles: Defining Element PurposeLesson 2105 — Accessibility Considerations for Virtual Lists
- Landmarks
- (like `<nav>`, `<main>`, `<aside>`) create a structural map of your page that screen reader users can navigate through with keyboard shortcuts.
- Lesson 1071 — Skip Links vs LandmarksLesson 1103 — Basic Screen Reader Navigation Commands
- Landscape vs portrait
- orientations benefit from different crops
- Lesson 1227 — Understanding Art Direction in Responsive Images
- Language
- (Latin characters only, excluding Cyrillic or Greek)
- Lesson 1283 — What is Font SubsettingLesson 2496 — Understanding Locales and Language Tags
- Language detection
- (via `Accept-Language`, `navigator.
- Lesson 2503 — Geolocation vs Language Detection
- Language-agnostic
- Works with any frontend framework or programming language
- Lesson 1470 — What is REST and Why It Matters
- Language-only fallback
- `en-GB` → `en-US` (same language, different region)
- Lesson 2504 — Handling Unsupported Locales
- Large files
- that rarely change and don't need cache-busting filenames
- Lesson 1379 — Public Directory and Static Assets
- Large Screens
- Lesson 391 — Common Breakpoint ValuesLesson 641 — Combining State and Responsive Variants
- Large Storage Capacity
- While `localStorage` typically maxes out around 5-10MB, IndexedDB can handle 50MB, 100MB, or more (varies by browser and available disk space).
- Lesson 782 — What is IndexedDB and When to Use It
- Large-scale applications
- (dashboards, e-commerce platforms) benefit from ITCSS's layered specificity management or Atomic CSS's consistency across hundreds of components.
- Lesson 603 — Choosing an Architecture for Your Project
- Larger audience
- One billion people worldwide have disabilities—that's a significant user base
- Lesson 987 — What is Web Accessibility and Why It Matters
- Larger initial payload
- both HTML *and* JavaScript
- Lesson 1744 — Hydration vs. Client-Side RenderingLesson 1745 — The Double Data Problem
- Largest Contentful Paint (LCP)
- Your hero image loads faster when it's appropriately sized, making the page feel ready sooner
- Lesson 428 — Performance Implications of Responsive ImagesLesson 1725 — Initial Load Time ComparisonLesson 1732 — Largest Contentful Paint (LCP)Lesson 1887 — What Are Core Web Vitals and Why They MatterLesson 1889 — Largest Contentful Paint (LCP) ExplainedLesson 1902 — First Contentful Paint (FCP)Lesson 1903 — Largest Contentful Paint (LCP)Lesson 1983 — Measuring Critical Resource Impact (+1 more)
- Largest-Triangle algorithms
- Keep points that form the most significant visual "triangles" (preserve peaks, valleys, and trends)
- Lesson 2652 — Performance with Large Datasets
- last
- in your stylesheet.
- Lesson 133 — The Cascade and Source OrderLesson 983 — 404 and Fallback Routes
- last line of defense
- think of it as the quality gate that every piece of code must pass through before merging.
- Lesson 1461 — Formatting in CI/CD PipelinesLesson 2706 — Server-Side Validation Requirement
- Late discovery
- – critical resources loaded only after JavaScript executes
- Lesson 2166 — Understanding Request Waterfalls
- Latin-based languages
- (English, Spanish, French):
- Lesson 1286 — Language-Specific Subsetting Strategies
- Layered System
- constraint means your client doesn't need to know if it's talking directly to the final server or going through multiple intermediaries.
- Lesson 1479 — Layered System Architecture
- Layout
- Calculates exact positions and sizes
- Lesson 18 — The Rendering EngineLesson 20 — The Critical Rendering PathLesson 24 — Layout and ReflowLesson 25 — Paint and CompositeLesson 540 — The Browser's Rendering PipelineLesson 598 — SMACSS (Scalable and Modular Architecture)Lesson 1327 — Alternative Naming Conventions: SMACSS and OOCSSLesson 1985 — Understanding the Main Thread and Browser Rendering Pipeline (+3 more)
- Layout (reflow)
- Purple blocks showing dimension calculations triggered by properties like `width` or `top`
- Lesson 2598 — Measuring Animation Performance
- Layout and Paint
- The browser determines exact positions and sizes (layout/reflow), then finally paints pixels to the screen.
- Lesson 1973 — Understanding Critical Rendering Path
- Layout calculations
- Lesson 479 — calc() for Dynamic ValuesLesson 2055 — What is the Main Thread?
- Layout purposes
- (wrapping items to apply CSS Grid or Flexbox)
- Lesson 60 — When to Use <div> vs Semantic Elements
- layout shift
- .
- Lesson 1270 — Cumulative Layout Shift (CLS) and ImagesLesson 1301 — Why Fallback Font Matching MattersLesson 1303 — The size-adjust CSS Property
- Layout thrashing
- (also called "forced synchronous layout") happens when you repeatedly read and write DOM properties in the wrong order during animations.
- Lesson 547 — Avoiding Layout ThrashingLesson 737 — Scroll Events and Performance ConsiderationsLesson 2097 — What is Virtualization and When to Use ItLesson 2221 — Screenshots and Filmstrip ViewLesson 2559 — GSAP Performance Best PracticesLesson 2581 — Performance OptimizationLesson 2599 — Optimizing JavaScript Animation Loops
- Lazy load the SDK
- only when embeds scroll into view (using Intersection Observer patterns you've learned)
- Lesson 2832 — Facebook and Instagram Embeds
- Lazy loading
- Defer analytics until after critical content renders
- Lesson 2793 — Dynamic Script Loading with JavaScriptLesson 2834 — YouTube and Vimeo Embeds
- Lazy-load non-critical widgets
- Don't load social share buttons or comment sections until users scroll near them—reduce initial payload and improve perceived performance.
- Lesson 2829 — Embedding Third-Party Scripts Safely
- Lazy-load tracking
- Delay loading analytics until after critical content renders or user interaction begins.
- Lesson 2787 — Performance Impact of Analytics
- LCH
- (Lightness, Chroma, Hue) and **OKLCH** (improved version) describe colors based on:
- Lesson 493 — LCH and OKLCH: Perceptually Uniform Color Models
- LCP (Largest Contentful Paint)
- Less JavaScript to parse means content renders faster
- Lesson 1939 — What is Code Splitting and Why It MattersLesson 1995 — Why Image Optimization Matters for Performance
- LCP measures loading performance
- specifically, how long it takes for the largest visible content element to render on screen.
- Lesson 1888 — The Three Core Web Vitals: LCP, FID, and CLS
- leaves
- of your query—they're the primitive values that can't be broken down any further.
- Lesson 1522 — Scalar TypesLesson 2491 — Leaf vs Container Components
- Left
- Standard body text (in LTR languages)
- Lesson 171 — Text Alignment and JustificationLesson 2526 — RTL-Specific Edge Cases
- Left Arrow
- and **Right Arrow** keys instead of Up and Down.
- Lesson 1077 — Horizontal Navigation in ToolbarsLesson 1170 — Nested and Flyout MenusLesson 1178 — Keyboard Navigation in Tabs
- Left side
- The DOM tree—a hierarchical view of all HTML elements
- Lesson 2174 — Elements Panel Overview and Navigation
- left to right
- items line up in a row.
- Lesson 256 — The Main Axis and Cross AxisLesson 1222 — Multiple Media Conditions in sizes
- Left/Right arrows
- should move between slides (horizontal carousels)
- Lesson 1189 — Keyboard Navigation Requirements
- Legacy applications
- where retrofitting nonces or hashes would require massive refactoring
- Lesson 2887 — unsafe-inline Tradeoffs
- Legacy browser support
- where video formats aren't available (extremely rare today)
- Lesson 1245 — GIF: Animation and Legacy Support
- Legacy browser support needed
- Webpack's mature plugin ecosystem handles complex polyfilling
- Lesson 1408 — Choosing the Right Bundler
- Legacy Codebases
- Lesson 656 — When Traditional CSS Is a Better Choice
- Legal requirement
- Many countries have laws requiring digital accessibility
- Lesson 987 — What is Web Accessibility and Why It Matters
- Legal/regulatory compliance
- (showing terms based on jurisdiction)
- Lesson 2503 — Geolocation vs Language Detection
- Legitimate Interest Assessment (LIA)
- documenting why your interest is valid and proportional.
- Lesson 2960 — Legitimate Interest vs Consent
- Length values
- `flex-basis: 200px;` — starts at 200 pixels
- Lesson 282 — flex-basis: Setting Initial Item SizeLesson 419 — The sizes AttributeLesson 1215 — The sizes Attribute Fundamentals
- Lengths
- `width`, `height`, `margin`, `padding`, `font-size`
- Lesson 509 — Properties That Can and Cannot Transition
- Less CSS
- because you don't need multiple media queries for font sizes
- Lesson 405 — Understanding Fluid Typography
- Less flexible
- Can't express nuanced caching policies like `no-cache` or `must-revalidate`
- Lesson 2143 — Expires Header
- Less perceptive
- on mobile screens (smaller display = more forgiveness)
- Lesson 2004 — Quality Settings and Visual Perception
- Less sensitive
- to subtle color variations in complex areas (textures, patterns)
- Lesson 2004 — Quality Settings and Visual Perception
- Lets you query
- any combination of sources with a single query language
- Lesson 1783 — GraphQL for Build-Time Data Queries
- Letter Spacing
- controls the space between individual characters.
- Lesson 170 — Letter Spacing and Word SpacingLesson 1301 — Why Fallback Font Matching Matters
- Level 1: Resources
- Lesson 1480 — REST Maturity Levels (Richardson Model)
- Level 2: HTTP Verbs
- Lesson 1480 — REST Maturity Levels (Richardson Model)
- Level AA
- is the recommended target for most websites.
- Lesson 989 — WCAG Conformance Levels: A, AA, and AAA
- Level AAA
- represents the highest level of accessibility.
- Lesson 989 — WCAG Conformance Levels: A, AA, and AAA
- Leverage browser caching
- Your vendor/common chunks should rarely change.
- Lesson 1950 — Code Splitting Trade-offs and Best Practices
- Leverage natural moments
- Trigger update checks when users open your app after prolonged absence (hours, not minutes), rather than on every navigation.
- Lesson 2434 — Update Frequency Best Practices
- Licensing clarity
- You manage exactly which font files and weights you serve
- Lesson 561 — Self-Hosting vs. Font Services
- Lifecycle methods
- React to being added to the page, removed, or having attributes changed
- Lesson 2445 — Defining a Custom Element Class
- Light DOM
- is the regular, familiar DOM tree — the one you see in your HTML, the one accessible to external CSS and JavaScript.
- Lesson 2460 — Shadow DOM vs Light DOM
- Lighthouse
- audits focus behavior in its accessibility report
- Lesson 1098 — Testing Focus ManagementLesson 1308 — Testing Fallback EffectivenessLesson 1318 — Testing and Measuring Font-Related CLSLesson 1756 — Measuring Hydration PerformanceLesson 1885 — Testing SPA SEOLesson 1983 — Measuring Critical Resource ImpactLesson 2053 — Measuring Third- Party Script ImpactLesson 2224 — Running Lighthouse in Chrome DevTools
- Lighthouse CI
- runs automated Lighthouse audits on every commit or pull request.
- Lesson 1937 — Enforcing Budgets in CI/CD
- Lighthouse Performance Audits
- Will specifically flag oversized images and estimate potential savings
- Lesson 1226 — Performance Impact of srcset
- Lightness
- is how bright the color is, also a percentage:
- Lesson 183 — HSL and HSLA FunctionsLesson 494 — LAB and OKLAB Color Functions
- Limit chunk count
- Start with route-based splitting, then add component-based splitting only for genuinely heavy components (charts, editors, media players).
- Lesson 1950 — Code Splitting Trade-offs and Best Practices
- Limit cookie scope
- Use specific `path` attributes so cookies aren't sent with every request
- Lesson 805 — Cookie Size Limitations
- Limit font variants
- Only load weights and styles you actually use
- Lesson 1934 — Image and Media Asset Budgets
- Limit font variations
- Each weight/style is a separate file—only load what you actually use
- Lesson 572 — Web Font Best Practices Checklist
- Limit tracking frequency
- Batch events rather than sending individual requests for every click.
- Lesson 2787 — Performance Impact of Analytics
- Limited customization requirements
- Lesson 2642 — D3 vs Higher-Level Charting Libraries
- Limited Real-World Scenarios
- It can't test authenticated pages, complex user flows, or personalized content easily.
- Lesson 2232 — Lighthouse Limitations and Complementary Tools
- Line gap
- (also called leading) is extra vertical spacing that some fonts add between lines.
- Lesson 1302 — Measuring Font Metrics: Ascent, Descent, and Line GapLesson 1306 — Using line-gap- override for PrecisionLesson 1314 — Matching Fallback Font Metrics
- Line height
- Tighter leading works better at large sizes; smaller text needs more breathing room
- Lesson 593 — Responsive Typography Patterns
- Line height and spacing
- demonstrated with multiple lines
- Lesson 594 — Documentation and Type Specimens
- Line length stays comfortable
- Text doesn't stretch to 200 characters per line
- Lesson 413 — Testing Fluid Typography
- Linear scales
- (`d3.
- Lesson 2630 — Scales: Mapping Data to Visual PropertiesLesson 2631 — Linear and Ordinal Scales
- Link interception
- Catch clicks on internal links to prevent full page loads
- Lesson 972 — Building a Client-Side Router with History API
- Link Text
- Rules flag generic link text like "click here" and ensure links have descriptive content.
- Lesson 1449 — Accessibility Rules in HTML Linters
- Links
- (`<a href=".
- Lesson 1043 — Natively Focusable ElementsLesson 1060 — Focus Styles for Different Element TypesLesson 1103 — Basic Screen Reader Navigation CommandsLesson 2229 — SEO Audits in Lighthouse
- Links (`<a>`)
- navigate the user somewhere — to another page, a different section, or a downloadable file.
- Lesson 1002 — Buttons vs Links: Choosing Correctly
- Links and Navigation
- Lesson 1110 — Creating a Screen Reader Testing Checklist
- Linting tools
- ESLint catches these mistakes during development
- Lesson 2113 — Global Variables and Window Pollution
- Listen to browser events
- for instant notification of status changes
- Lesson 1701 — Implementing a Connectivity Monitor
- Listening for Tab keypresses
- to detect when focus tries to leave
- Lesson 1050 — Focus Trapping in Modal Dialogs
- ListItem
- elements, each representing one step in the navigation path.
- Lesson 1860 — Breadcrumb Schema for Navigation
- Lite Wrappers
- Libraries like `lite-youtube-embed` or `lite-vimeo-embed` provide pre-built components that implement the facade pattern with better styling and accessibility.
- Lesson 2834 — YouTube and Vimeo Embeds
- live
- , meaning they automatically reflect changes to the DOM in real-time, while others are **static snapshots** that capture the DOM's state at the moment you queried it.
- Lesson 669 — Live vs Static NodeListsLesson 679 — document.querySelectorAll()Lesson 680 — Live vs Static CollectionsLesson 714 — Live vs Static Collections During Traversal
- Live collections
- Typically returned by older methods like `getElementsByTagName()` or `getElementsByClassName()`
- Lesson 669 — Live vs Static NodeLists
- live region
- with `aria-live="polite"` and `aria-atomic="true"` to announce the count when results update:
- Lesson 931 — Autocomplete and Search PatternsLesson 1117 — Log Role for Sequential Updates
- live regions
- (which you learned about) with **careful focus management** to create announcements that don't interrupt:
- Lesson 1119 — Toast Notification PatternsLesson 1121 — Loading State Announcements
- living standards
- .
- Lesson 34 — The Role of WHATWG in Modern Web StandardsLesson 35 — Living Standards vs Versioned Specifications
- Load asynchronously
- Use `async` or `defer` on script tags so tracking doesn't block page rendering.
- Lesson 2787 — Performance Impact of Analytics
- Load balancing
- Routing requests to the correct server
- Lesson 2966 — Essential vs Non-Essential Cookies
- Load faster
- Skip slow network requests by serving from cache
- Lesson 809 — What is the Cache API and Why It Matters
- Load local fallback
- Use a bundled version as last resort
- Lesson 2797 — Error Handling for External Scripts
- Load More
- pattern is a user-initiated pagination approach where content loads in batches.
- Lesson 1513 — Load More Button Pattern
- Load More button
- gives users control and is even simpler to implement.
- Lesson 2106 — Performance Tradeoffs and Alternatives
- Load on demand
- Only when triggered, dynamically inject the actual third-party script
- Lesson 2050 — Script Loading Facades
- Load on interaction
- Replace the facade with the real embed, connecting to the third-party service
- Lesson 2837 — Privacy-Friendly Embed Alternatives
- Load Order Matters
- Lesson 1356 — Managing Third-Party CSS Conflicts
- Load time
- Slower networks wait longer
- Lesson 1212 — The Resolution Switching ProblemLesson 1248 — Measuring Format Performance Impact
- Load Time Improvements
- Lesson 1226 — Performance Impact of srcset
- Load translations
- Access your translation dictionary (could be embedded JSON or a dynamically fetched file)
- Lesson 2509 — Changing Language Without Page Reload
- Loading states on buttons
- A `<button>` showing a spinner doesn't automatically communicate its busy state.
- Lesson 1033 — Enhancing Incomplete Native Elements
- local
- when you have scrollable containers and want the background to move with internal content
- Lesson 196 — Background AttachmentLesson 2273 — Using the Scope Panel to Inspect Variables
- Local Network Connections
- If a user is connected to a WiFi router that has no internet access (maybe the ISP is down), `navigator.
- Lesson 1699 — Limitations of Browser Offline Detection
- Local scope
- Variables defined in the current function or block
- Lesson 2273 — Using the Scope Panel to Inspect Variables
- Local Storage
- and **Session Storage**: Key-value pairs saved in the browser
- Lesson 2233 — Application Panel Overview and Navigation
- localStorage
- typically offers **5-10 MB** of storage space—enough for user preferences, tokens, or small cached data.
- Lesson 783 — IndexedDB vs localStorage: Key DifferencesLesson 819 — Storage Options OverviewLesson 820 — Capacity and LimitsLesson 821 — Performance CharacteristicsLesson 823 — Persistence and DurabilityLesson 825 — Cross-Tab and Offline ScenariosLesson 826 — Decision FrameworkLesson 2507 — Storing User Language Preference (+2 more)
- localStorage and sessionStorage
- store **key-value pairs** as strings.
- Lesson 822 — Data Structure RequirementsLesson 824 — Security and Privacy Considerations
- localStorage/sessionStorage
- ~5-10MB
- Lesson 808 — When to Use Cookies vs Other StorageLesson 821 — Performance CharacteristicsLesson 1599 — Token Storage in Single-Page Applications
- location
- Where it happens (often a nested `Place` object)
- Lesson 1862 — Event Schema for ListingsLesson 2371 — Service Worker Registration and Scope
- Logical AND shorthand
- Lesson 1642 — Permission-Based UI Rendering
- Logical hierarchy
- Subsections use higher heading numbers
- Lesson 1104 — Heading Navigation and Structure Testing
- Logical properties
- use flow-relative directions instead of physical ones:
- Lesson 457 — Introduction to Logical Properties and Flow-Relative Values
- Logical text alignment
- solves this by using `start` and `end` instead:
- Lesson 463 — Logical Text Alignment
- Logos
- – Your company logo needs to look perfect whether it's 20px in a mobile menu or 2000px on a billboard display
- Lesson 1244 — SVG: Scalable Vector Graphics for the Web
- Logos and icons
- with sharp edges and solid colors
- Lesson 1241 — PNG: Lossless Compression and TransparencyLesson 2001 — SVG for Vector Graphics
- Logpoints
- to trace execution order without stopping, then add **XHR/Fetch Breakpoints** to catch asynchronous state changes.
- Lesson 2267 — Breakpoint Strategies for Different Scenarios
- Long bars
- (>50ms): Potential bottlenecks—these are your Long Tasks
- Lesson 1994 — Profiling Main-Thread Performance with Chrome DevTools
- Long forms
- Break complex forms into manageable sections
- Lesson 1181 — Accordion Pattern Overview and Structure
- long task
- (any task taking longer than 50ms) during the critical loading window.
- Lesson 1908 — Total Blocking Time (TBT)Lesson 2067 — What is a Long Task?Lesson 2068 — How Long Tasks Block InteractivityLesson 2082 — Breaking Work into ChunksLesson 2221 — Screenshots and Filmstrip View
- long tasks
- (yellow/red blocks exceeding 50ms) on the main thread—these often cause poor FID/INP scores.
- Lesson 1916 — Chrome DevTools Performance Panel BasicsLesson 1917 — Reading Performance Flame ChartsLesson 2057 — Identifying Main-Thread BlockingLesson 2097 — What is Virtualization and When to Use ItLesson 2221 — Screenshots and Filmstrip ViewLesson 2222 — Performance Insights and Recommendations
- Long Tasks API
- gives you visibility into these blocking tasks.
- Lesson 1986 — Identifying Long Tasks with Performance APILesson 2070 — The Long Tasks API
- Long yellow bars
- in the Main section (JavaScript execution)
- Lesson 2057 — Identifying Main-Thread Blocking
- Long-lived refresh tokens
- (days/weeks): used to obtain new access tokens
- Lesson 1583 — JWT Expiration and the exp Claim
- Long-press menus
- without right-click or keyboard access
- Lesson 1196 — Touch Gesture Accessibility Considerations
- Longest request chains
- Depth of serial dependencies
- Lesson 2173 — Measuring and Improving Waterfall Metrics
- Look for red flags
- obfuscated code, `eval()` usage, unexpected network requests, filesystem writes, or encoded strings that decrypt at runtime
- Lesson 2947 — Reviewing Package Source Code
- Loop iterations
- Verify conditional branches execute correctly
- Lesson 2250 — console.count and console.countReset
- Loops through its children
- using `children` or `childNodes`
- Lesson 712 — Walking the DOM Tree Recursively
- lossless compression
- .
- Lesson 1241 — PNG: Lossless Compression and TransparencyLesson 1996 — Lossy vs Lossless CompressionLesson 1999 — WebP: Modern Image Format Basics
- lossy compression
- meaning it permanently discards some image data to create smaller files.
- Lesson 1240 — JPEG: Lossy Compression for PhotographsLesson 1996 — Lossy vs Lossless CompressionLesson 1999 — WebP: Modern Image Format Basics
- Low Priority
- Lesson 1969 — Resource Hint Priorities
- Low-priority widgets
- hydrate during idle time or on user interaction
- Lesson 1751 — Progressive Hydration
- Low-quality image placeholders (LQIP)
- tiny, blurred versions that load instantly
- Lesson 2027 — Why Placeholders Matter
- Lower bandwidth usage
- Critical for mobile users with limited data
- Lesson 1507 — Why Pagination Matters
- Lower execution blocking
- – Smaller chunks execute quicker, freeing the main thread sooner
- Lesson 1991 — Optimizing JavaScript Execution with Code Splitting
- Lowercase with hyphens
- `/product-categories` not `/ProductCategories`
- Lesson 1471 — Resources and Resource Identifiers
M
- magic comments
- come in.
- Lesson 1421 — Prefetching and Preloading ChunksLesson 1944 — Webpack Magic Comments for Chunk Naming
- main axis
- is the primary direction your flex items flow.
- Lesson 256 — The Main Axis and Cross AxisLesson 257 — flex-direction: Controlling the Main AxisLesson 269 — flex-direction: Row and Column LayoutsLesson 274 — justify-content: Main Axis Alignment
- Main thread
- Where JavaScript executes and rendering calculations happen
- Lesson 1916 — Chrome DevTools Performance Panel BasicsLesson 1985 — Understanding the Main Thread and Browser Rendering PipelineLesson 2055 — What is the Main Thread?Lesson 2097 — What is Virtualization and When to Use ItLesson 2211 — Performance Panel Overview and RecordingLesson 2213 — Identifying Long Tasks and Blocking Scripts
- Main thread activity
- Shows what caused slowdowns (JavaScript, layout, paint, etc.
- Lesson 546 — Measuring Animation PerformanceLesson 2215 — Network Waterfall in Performance View
- Main thread blocking
- During hydration, the main thread is busy—user clicks may be ignored or delayed
- Lesson 1749 — Performance Cost of HydrationLesson 1892 — First Input Delay (FID) FundamentalsLesson 2787 — Performance Impact of Analytics
- Maintain dual policies initially
- You can run both `Content-Security-Policy` (enforcing) and `Content-Security-Policy-Report- Only` (with a stricter future policy) simultaneously.
- Lesson 2873 — Transitioning from Report-Only to Enforcement
- Maintain easier
- enhancing is cleaner than constantly overriding previous styles
- Lesson 380 — Mobile-First Philosophy
- Maintain focus order
- Ensure tab navigation flows logically through your component.
- Lesson 2472 — Shadow DOM and Accessibility
- Maintain layout
- Keep your navigation and branding visible.
- Lesson 1662 — Handling 403: Access Denied UI
- Maintain optical consistency
- with `opsz` automatically tuning at different sizes
- Lesson 582 — Variable Fonts in Design Systems
- Maintain User Experience
- Budgets translate technical metrics into real user impact.
- Lesson 1930 — Why Performance Budgets Matter
- Maintainability
- Change your site's entire color scheme by editing one CSS file instead of thousands of HTML pages.
- Lesson 32 — CSS Standardization and the Separation of ConcernsLesson 44 — The Importance of Keeping Pillars SeparateLesson 595 — Why CSS Architecture MattersLesson 654 — Utility-First vs Component- Based CSS: Understanding the Trade-offsLesson 1367 — Component-Level Theme Variables
- Maintenance burden
- Polyfills need updates and testing
- Lesson 2495 — Browser Support and Polyfill Considerations
- Maintenance nightmares
- when other developers encounter broken markup
- Lesson 1446 — Why Lint HTML? Catching Errors Early
- Maintenance overhead
- You're maintaining two rendering pipelines
- Lesson 1881 — Dynamic Rendering and Bot Detection
- Maintenance Phase
- Accessibility isn't "done" at launch.
- Lesson 994 — Accessibility in the Development Lifecycle
- Maintenance Status
- Check the last update date on npm or GitHub.
- Lesson 2946 — Evaluating Package Health Before Installing
- Make conscious trade-offs
- between typography and performance
- Lesson 1277 — font-display: auto Behavior
- Make it compelling
- Use action words and tell users what value they'll get.
- Lesson 85 — Meta Description for SEO
- Make one control tabbable
- with `tabindex="0"`, all others get `tabindex="-1"`
- Lesson 1203 — Toolbar Pattern
- Make the heading focusable
- using `tabindex="-1"` (since headings aren't naturally focusable)
- Lesson 1091 — Route Change Focus Management
- Manage cache
- – content-based hashing ensures browsers fetch updated files
- Lesson 1420 — Chunk Naming and Output
- Managing application state locally
- Store user preferences, session data, and temporary information in the browser (localStorage, sessionStorage, or memory)
- Lesson 1473 — Statelessness in REST APIs
- Manifest
- View your PWA manifest file settings (name, icons, theme colors)
- Lesson 2233 — Application Panel Overview and NavigationLesson 2239 — Web App Manifest ValidationLesson 2307 — Testing and Validation
- Manipulate localStorage
- to change role/permission data
- Lesson 1648 — Client-Side Permission Security Limitations
- Manipulation through representations
- JSON/XML represent state
- Lesson 1472 — The Uniform Interface Constraint
- manual control
- .
- Lesson 649 — Dark Mode ConfigurationLesson 1285 — Tools for Font SubsettingLesson 1576 — Mobile and Native App Authentication
- Manual Inspection
- Lesson 1974 — Identifying Critical CSS
- Manual optimization
- Use Squoosh to experiment and understand trade-offs
- Lesson 2003 — Compression Tools and Techniques
- Manual reset
- User-triggered errors, logic bugs, or when you need user acknowledgment.
- Lesson 1673 — Reset and Recovery Mechanisms
- Manual Testing
- Use browser DevTools to inspect requests, modify token values, and observe responses.
- Lesson 2916 — Testing CSRF Protection
- Manual testing is essential
- Automated tools find roughly 30-40% of accessibility issues.
- Lesson 2227 — Lighthouse Accessibility Audits
- Manual update simulation
- In Chrome DevTools → Application → Service Workers, use the "Update on reload" checkbox to force updates on every refresh.
- Lesson 2435 — Testing Service Worker Updates
- Many elements
- need the same listener (dozens of list items, table rows)
- Lesson 767 — Delegation vs Direct Binding
- Margin
- = space between your box and other boxes on the shelf (space outside the border)
- Lesson 3 — IP Addresses and Domain NamesLesson 139 — The Box Model: Content, Padding, Border, MarginLesson 144 — Margin: Outer SpacingLesson 265 — Flexbox and the Box ModelLesson 2176 — Viewing and Understanding the Box Model
- Margin (m)
- creates space *outside* an element's border, pushing other elements away.
- Lesson 618 — Spacing: Margin and Padding
- Margins collapse
- in normal flow, but in flexbox they *never collapse*—every margin value counts
- Lesson 265 — Flexbox and the Box Model
- Margins, padding, and borders
- Lesson 24 — Layout and Reflow
- Mark as "uploading"
- with visual indicators like progress bars
- Lesson 2720 — Upload with Optimistic UI Updates
- Mark images with `data-src`
- instead of `src` (preventing immediate load)
- Lesson 1254 — Custom Lazy Loading Implementation
- Mark the control element
- with the `peer` class (usually an `<input>`)
- Lesson 639 — Peer State Variants
- Marketing and Landing Pages
- Lesson 1776 — When to Use SSG
- Marketing cookies and tracking
- (analytics, ads, social media pixels)
- Lesson 2960 — Legitimate Interest vs Consent
- Marketing pages
- Very long intervals (days/weeks) for stable content
- Lesson 1796 — Configuring Revalidation Intervals
- Marketing/Advertising
- Track users across sites, personalize ads, retargeting
- Lesson 2969 — Granular Cookie Category Controls
- Markup hiding
- Internal implementation details stay hidden from document queries
- Lesson 2459 — What is Shadow DOM and Why It Exists
- Massive page counts
- → Use fallback strategies or switch to SSR for some routes
- Lesson 1777 — Limitations of Pure SSG
- Match page content
- Don't mislead—searchers will bounce immediately
- Lesson 1826 — The Meta Description Tag
- Match tags or categories
- Find posts sharing the same taxonomy terms
- Lesson 1787 — Related Content and Computed Fields
- Match the context
- The same image needs different alt text depending on its purpose.
- Lesson 1138 — Writing Descriptive Alt Text
- Match your deployment cadence
- If you deploy weekly, checking every hour is overkill.
- Lesson 2434 — Update Frequency Best Practices
- Mathematical Calculations
- Cryptographic operations, data encryption/decryption, physics simulations, or financial calculations with large datasets.
- Lesson 2094 — Real-World Use Cases: Heavy Computation
- Max-width to the rescue
- Setting `max-width: 100%` on images and other media ensures they never exceed their container's width:
- Lesson 385 — Avoiding Horizontal Scroll
- Maximum cacheability
- Static files cache perfectly on CDNs
- Lesson 1767 — What is Static Site Generation?
- Maximum security
- Since the token never touches `localStorage`, it's immune to XSS-based token theft that reads from storage.
- Lesson 1598 — Memory-Only Token Storage
- Maximum size caps properly
- Headlines don't become absurdly large on wide screens
- Lesson 413 — Testing Fluid Typography
- MDX
- takes Markdown one step further: it lets you **embed JSX components directly in your Markdown**.
- Lesson 1782 — Markdown and MDX for Content
- measure
- it scientifically.
- Lesson 546 — Measuring Animation PerformanceLesson 586 — Line Length and MeasureLesson 2066 — Measuring the Impact
- Measure file sizes
- Keep total font weight under 100KB when possible
- Lesson 572 — Web Font Best Practices Checklist
- Measure performance
- Which pages convert visitors into customers?
- Lesson 2779 — Understanding Analytics and User Behavior Tracking
- Measure the x-height ratio
- of both your web font and fallback font (many tools and browser DevTools can help)
- Lesson 1304 — Matching Font Aspect Ratios
- Measure their actual heights
- after rendering using `getBoundingClientRect()` or `offsetHeight`
- Lesson 2101 — Variable-Height Item Virtualization
- media conditions
- (like media queries) paired with **length values**:
- Lesson 419 — The sizes AttributeLesson 1215 — The sizes Attribute FundamentalsLesson 1216 — Writing Effective sizes Values
- Media Object
- Places an image beside text content (think profile pics next to usernames).
- Lesson 1336 — The Objects Layer: Layout Primitives and Structure
- media queries
- to detect whether a user has a standard screen or a high-density "retina" display.
- Lesson 165 — Resolution Units: dpi, dpcm, dppxLesson 390 — Media Query Syntax and StructureLesson 430 — What Are Container Queries?Lesson 2014 — Media Queries in Picture Sources
- Media Types
- identify the data format, enabling the client to parse responses correctly without guessing.
- Lesson 1476 — Self-Descriptive Messages
- Medium Priority
- Lesson 1969 — Resource Hint Priorities
- Medium screens
- Gray text, turns *purple* on hover
- Lesson 641 — Combining State and Responsive Variants
- Memory
- Devices struggle with oversized files
- Lesson 1212 — The Resolution Switching ProblemLesson 1569 — Token-Based Authentication FlowLesson 1593 — Token Storage Options OverviewLesson 1764 — Cost and Infrastructure ConsiderationsLesson 2917 — Token Storage Options: localStorage vs sessionStorage vs Memory
- Memory (JavaScript variable)
- Lesson 2917 — Token Storage Options: localStorage vs sessionStorage vs Memory
- Memory consumption
- Event listeners and data buffering use browser resources
- Lesson 2787 — Performance Impact of Analytics
- Memory-only with refresh tokens
- Store short-lived access tokens in memory and longer-lived refresh tokens in HttpOnly cookies
- Lesson 1599 — Token Storage in Single-Page Applications
- Menu Button Pattern
- – Think of this like a software application menu (File, Edit, View).
- Lesson 1163 — Accessible Dropdown Patterns Overview
- Messages
- Every message sent and received, timestamped in chronological order
- Lesson 2206 — WebSocket and EventSource Inspection
- Messaging
- `postMessage`, `onmessage` (as you've learned)
- Lesson 2090 — Worker Scope and Available APIs
- metadata
- information *about* your webpage rather than content *shown* on your webpage.
- Lesson 81 — The <head> Element StructureLesson 1498 — Common HTTP Response HeadersLesson 1511 — Pagination Metadata
- method
- to tell the server *what kind* of action it wants to perform.
- Lesson 8 — HTTP Methods: GET and POSTLesson 830 — Making POST Requests with JSON DataLesson 861 — Simple vs Preflight Requests
- Methods requiring preflight approval
- Lesson 866 — Allowed HTTP Methods
- Methods that return `null`
- Lesson 683 — Checking if Elements Exist
- Methods to control behavior
- (`preventDefault()`, `stopPropagation()`)
- Lesson 746 — The Event Object: What It Is and Why It Matters
- Micro-frontend architecture boundaries
- are the contracts and isolation mechanisms that allow these independent pieces to operate side- by-side safely.
- Lesson 2489 — Micro-Frontend Architecture Boundaries
- Micro-Frontend Boundaries
- Use Web Components as integration points where different teams own different parts of the application, potentially using different frameworks.
- Lesson 2494 — Hybrid Approach with Frameworks
- Microdata
- embeds structured data directly into your HTML attributes using `itemscope`, `itemtype`, and `itemprop`.
- Lesson 1855 — JSON-LD vs Microdata vs RDFa
- Milliseconds
- `ms` (e.
- Lesson 503 — The transition-duration PropertyLesson 506 — The transition-delay PropertyLesson 515 — The animation-duration PropertyLesson 1386 — Vite vs Other Build Tools
- MIME type
- (like `"image/jpeg"` or `"application/pdf"`).
- Lesson 2698 — File Type Validation by MIME Type
- Min-max preservation
- For each bucket, keep the min and max values to maintain range visibility
- Lesson 2652 — Performance with Large Datasets
- Minimal Dependencies Philosophy
- Lesson 656 — When Traditional CSS Is a Better Choice
- Minimal network latency
- Files travel shorter physical distances, reducing Time to First Byte (TTFB)
- Lesson 1818 — Pre-rendering and Edge Distribution
- Minimal retention
- Delete data when it's no longer needed
- Lesson 2975 — Understanding Ethical vs Invasive Tracking
- Minimal server load
- You're just serving files, not running application code
- Lesson 1767 — What is Static Site Generation?
- minimum
- , **preferred** (fluid), and **maximum**.
- Lesson 410 — Preventing Overly Large TextLesson 1838 — Open Graph Image Requirements
- Minimum size works
- Text remains readable at the smallest viewport
- Lesson 413 — Testing Fluid Typography
- Missing context
- Can users understand what controls do when navigating out of context?
- Lesson 1099 — Why Screen Reader Testing is Essential
- Missing dependencies
- Some elements might rely on parent container styles that aren't obviously visible
- Lesson 1975 — Extracting Critical CSS Manually
- Missing HATEOAS
- Clients must know all endpoints upfront instead of discovering them through links
- Lesson 1481 — RESTful vs REST-ish APIs
- Missing keys
- Code references translations that don't exist in one or more locales
- Lesson 2536 — Translation Coverage and Missing Key Detection
- Missing Protocol in URLs
- Always use absolute URLs with `https://` for images and canonical URLs.
- Lesson 1845 — Social Sharing Best Practices
- Missing Token Rejection
- Remove the token entirely from a request.
- Lesson 2916 — Testing CSRF Protection
- Mixing concerns
- HTML structure gets tangled with JavaScript behavior
- Lesson 719 — Inline vs addEventListener
- Mobile (375px wide)
- Crop tightly to just the main subject's face
- Lesson 1227 — Understanding Art Direction in Responsive Images
- Mobile (Large) / Phablets
- Lesson 391 — Common Breakpoint Values
- Mobile (Small devices)
- Lesson 391 — Common Breakpoint Values
- Mobile users burn data
- downloading pixels they'll never see
- Lesson 2007 — Responsive Images: Why Resolution Switching Matters
- Mobile-First (min-width)
- Start with styles for small screens, then add media queries that apply *when the screen is at least* a certain width.
- Lesson 392 — min-width vs max-width Strategies
- Mobile-first web app
- Lesson 1603 — Token Storage Best Practices by Use Case
- Mock fetch/HTTP libraries
- to return errors on the first N calls, then succeed
- Lesson 1696 — Testing Retry Logic
- Modal dialogs
- (though `<dialog>` is emerging, it's incomplete)
- Lesson 1031 — When Semantic HTML Doesn't ExistLesson 1092 — Focus Restoration Patterns
- Mode
- "Navigation" (full page load) or "Timespan" (measure interactions over time)
- Lesson 2224 — Running Lighthouse in Chrome DevToolsLesson 2462 — Open vs Closed Shadow DOM
- Moderate
- Exploitable under specific conditions or with limited impact
- Lesson 2944 — Reading npm Audit Reports
- Moderator
- Review and approve user submissions
- Lesson 1628 — Role-Based Access Control (RBAC) Fundamentals
- Modern browsers
- Use it for sizing, alt text, and accessibility, but load images from `<source>` elements
- Lesson 2013 — Fallback Images and Browser SupportLesson 2745 — Choosing the Right Date Library
- Modern over legacy
- Always prefer modern alternatives to deprecated events.
- Lesson 745 — Event Type Selection and Best Practices
- Modifier
- A variation or state of a block or element.
- Lesson 596 — BEM (Block Element Modifier) MethodologyLesson 1320 — BEM Fundamentals: Block, Element, Modifier
- Modifiers
- might be "featured card" or "card with shadow"
- Lesson 1320 — BEM Fundamentals: Block, Element, ModifierLesson 1323 — BEM Modifier Naming with Double Hyphens
- Modify content dynamically
- Change text, images, or entire sections without reloading the page
- Lesson 41 — JavaScript's Role: Adding Interactivity
- Modify JavaScript
- in DevTools to bypass your permission functions
- Lesson 1648 — Client-Side Permission Security Limitations
- Modular scope
- Keep code in modules or IIFEs to limit scope exposure
- Lesson 2113 — Global Variables and Window Pollution
- Module
- rules are reusable, independent components like buttons, cards, or navigation menus.
- Lesson 598 — SMACSS (Scalable and Modular Architecture)Lesson 1327 — Alternative Naming Conventions: SMACSS and OOCSS
- Monitor
- keyboard navigation to keep focus cycling within the modal's boundaries
- Lesson 1089 — Modal Dialog Focus Management
- Monitor closely post-launch
- Keep your reporting endpoint active.
- Lesson 2873 — Transitioning from Report-Only to Enforcement
- Monitor cumulative impact
- Track your total blocking time and JavaScript execution cost.
- Lesson 2836 — Managing Multiple Embed Scripts
- Monorepo with shared packages
- Turbopack or Vite with proper workspace configuration
- Lesson 1408 — Choosing the Right Bundler
- More efficient compression algorithm
- (less blurring at high compression)
- Lesson 1243 — AVIF: Next-Generation Image Format
- More features
- Access to options like event capturing and `once`
- Lesson 719 — Inline vs addEventListener
- More sensitive
- to changes in faces, text, and high-contrast edges
- Lesson 2004 — Quality Settings and Visual Perception
- Motor disabilities
- Users who cannot use a mouse rely on keyboard navigation or voice control
- Lesson 987 — What is Web Accessibility and Why It Matters
- Move by row
- Ctrl+Alt+Arrow keys (NVDA) or VO+Arrow keys (VoiceOver)
- Lesson 1108 — Table Navigation and Testing
- Move focus
- to the modal itself or its first focusable element
- Lesson 1089 — Modal Dialog Focus Management
- Multi-Location Testing
- Run the same test from Virginia, Singapore, and Frankfurt simultaneously to understand how geographic distance affects your TTFB and overall performance.
- Lesson 1925 — WebPageTest for Deep Analysis
- Multi-Metric Dashboards
- Different chart types for related but distinct metrics
- Lesson 2647 — Recharts Composition Patterns
- Multi-Step Forms
- Lesson 935 — Focus Management in Forms
- Multiple CDNs
- Lesson 2846 — The font-src Directive
- Multiple Client Types
- Lesson 1555 — When GraphQL Shines
- Multiple clients
- can consume the same API (web app, mobile app, partner integrations)
- Lesson 1474 — Client-Server Separation
- Multiple criteria
- `Vary: Accept-Encoding, Accept-Language` checks both headers.
- Lesson 2149 — Vary Header
- Multiple descriptions
- Lesson 1021 — aria-describedby: Additional Context
- Multiple entry points
- let you tell Webpack to create distinct bundles for each page, so users only download the code they actually need.
- Lesson 1396 — Multiple Entry Points
- Multiple output formats
- Rollup easily generates ES modules, CommonJS, and UMD bundles from a single codebase
- Lesson 1401 — Rollup: The Library Bundler
- Multiple panel expansion
- (sometimes called "independent" mode) allows users to open as many panels as they want.
- Lesson 1184 — Single vs Multiple Panel Expansion
- Multiple permission checks
- Lesson 1642 — Permission-Based UI Rendering
- Multiple properties
- (comma-separated): `background-color, opacity, transform`
- Lesson 502 — The transition-property Property
- Multiple references
- You can reference multiple IDs (space-separated) to combine labels
- Lesson 1020 — aria-labelledby: Referencing Existing Labels
- Multiple runs
- Average 3-5 runs to account for variance
- Lesson 1928 — Establishing Performance Baselines
- Multiple simultaneous changes
- Several components updating at once
- Lesson 1124 — Avoiding Announcement Spam
- Multiplication and numbering
- Lesson 1466 — Emmet for Faster HTML and CSS Writing
- must
- be filled out before the form can be submitted.
- Lesson 105 — Required, Disabled, and Readonly AttributesLesson 223 — Sticky Positioning ThresholdsLesson 479 — calc() for Dynamic ValuesLesson 739 — Drag and Drop EventsLesson 804 — SameSite Attribute for CSRF ProtectionLesson 864 — Credentials and CORSLesson 1234 — The Mandatory <img> FallbackLesson 1524 — Root Types: Query, Mutation, and Subscription (+6 more)
N
- name
- (the text users see)
- Lesson 1860 — Breadcrumb Schema for NavigationLesson 1862 — Event Schema for ListingsLesson 2196 — Network Panel Overview and Interface
- Name column
- Shows which specific file was downloaded
- Lesson 2016 — Testing Responsive Images Across Viewports
- Namespace Third-Party Styles
- Lesson 1356 — Managing Third-Party CSS Conflicts
- Namespace your legacy CSS
- If conflicts arise, wrap existing stylesheets in higher-specificity selectors or use CSS layers to ensure old styles don't interfere with Tailwind utilities.
- Lesson 660 — Migration Strategies: Adding Tailwind to Existing Projects
- Namespaces
- solve this by grouping related translations into logical categories.
- Lesson 2529 — Namespace Organization for Large Applications
- Narrator
- is Microsoft's built-in Windows screen reader.
- Lesson 1100 — Screen Reader Landscape Overview
- Native
- Higher upfront cost—multiple specialists needed (Swift/Kotlin developers, plus potentially web devs)
- Lesson 2366 — Development and Maintenance CostsLesson 2458 — Custom Element Best Practices
- Native `import` statements
- Your browser requests modules using native `<script type="module">` tags
- Lesson 1404 — ESM-Native Development
- Native apps
- launch nearly instantly after the first run—they're already compiled and installed on the device.
- Lesson 2365 — Performance CharacteristicsLesson 2368 — Offline Capabilities Comparison
- Native compilation
- Go compiles to machine code, running directly on your CPU without interpretation overhead
- Lesson 1400 — esbuild: The Speed Champion
- Native mobile app integration
- Lesson 1603 — Token Storage Best Practices by Use Case
- Navigate to `node_modules/package-name`
- after installation or view the source on GitHub/npm
- Lesson 2947 — Reviewing Package Source Code
- Navigate to next/previous table
- Jump between tables on a page
- Lesson 1108 — Table Navigation and Testing
- Navigation
- Adjust how the VoiceOver cursor moves (Navigation settings)
- Lesson 1102 — Setting Up VoiceOver on macOS
- Navigation attempts
- Before routing to protected pages
- Lesson 1641 — Checking Permissions Before Actions
- Navigation Context
- If you're adding hidden text to explain where a link goes, consider rewriting the visible link text to be more descriptive instead.
- Lesson 1135 — When NOT to Use Visually Hidden Content
- Navigation efficiency
- Can users quickly find what they need, or must they listen to everything?
- Lesson 1099 — Why Screen Reader Testing is Essential
- Navigation Menu Pattern
- – This is for groups of *links* that navigate somewhere, like a site's main navigation with category dropdowns.
- Lesson 1163 — Accessible Dropdown Patterns Overview
- Navigation menus
- Focus on a parent link to highlight child dropdown items.
- Lesson 638 — Group Hover and FocusLesson 1169 — Navigation Menus vs Application Menus
- Navigational buttons
- that need specific dimensions but should sit side-by-side
- Lesson 210 — Inline-Block Display
- Near the Source
- Place error messages directly adjacent to the field, button, or component that triggered them.
- Lesson 1683 — Error Message Placement and Timing
- Necessary trade-off
- Without it, you'd lose hydration benefits or cause poor UX
- Lesson 1745 — The Double Data Problem
- Necessity Test
- Before collecting any data point, ask: "Can this feature work without it?
- Lesson 2979 — Minimizing Data Collection
- Need real-time data
- CSR shines for dashboards, live feeds, or user-specific content
- Lesson 1727 — Data Freshness Trade-offs
- Needs improvement
- 200-500ms
- Lesson 1894 — Interaction to Next Paint (INP) as FID SuccessorLesson 1897 — CLS Thresholds and Session WindowsLesson 1902 — First Contentful Paint (FCP)Lesson 1903 — Largest Contentful Paint (LCP)Lesson 1905 — Interaction to Next Paint (INP)Lesson 1907 — Time to First Byte (TTFB)
- Negative `z-index` children
- (positioned elements with `z-index: -1`, `-2`, etc.
- Lesson 232 — Stacking Order Within a Context
- negative numbers
- .
- Lesson 343 — Grid Lines and Line NumbersLesson 348 — Negative Line NumbersLesson 970 — history.go() for Jumping Multiple Steps
- negative values
- .
- Lesson 520 — The animation-delay PropertyLesson 531 — Rotating Elements with rotate()
- Neither
- Only for critical inline scripts needed before rendering
- Lesson 1981 — Script Loading Strategies: async vs defer
- Neither attribute
- Script blocks parsing — use for critical scripts only.
- Lesson 2048 — async vs defer for Script Loading
- Netlify
- Set in the Site Settings UI or `netlify.
- Lesson 1811 — Environment VariablesLesson 1823 — Jamstack Ecosystem and Platforms
- Netlify/Vercel
- Create a `_redirects` or config file with a fallback rule
- Lesson 984 — Server Configuration for SPA Routing
- Network
- tab.
- Lesson 429 — Testing Responsive Image DeliveryLesson 869 — Debugging CORS IssuesLesson 1225 — Testing srcset BehaviorLesson 1248 — Measuring Format Performance ImpactLesson 1281 — Testing Font Loading StrategiesLesson 1299 — Measuring Preload Impact on Font Loading PerformanceLesson 1706 — Testing Offline ScenariosLesson 1916 — Chrome DevTools Performance Panel Basics (+5 more)
- Network attacks
- Modified responses during transit
- Lesson 842 — Request Integrity and Subresource Integrity
- Network Errors
- happen when the request fails completely—no internet connection, server down, or timeout.
- Lesson 1564 — Error Handling in Client LibrariesLesson 1693 — Conditional Retries Based on Error Type
- Network Information API
- or `online` event signals connectivity, loop through your queue and retry each stored request.
- Lesson 2329 — Queue Failed Requests
- Network overhead
- External scripts add HTTP requests and kilobytes of data
- Lesson 2787 — Performance Impact of Analytics
- Network panel
- in Chrome DevTools is your primary tool:
- Lesson 1972 — Measuring Resource Hint ImpactLesson 2206 — WebSocket and EventSource InspectionLesson 2209 — Tracking Third-Party RequestsLesson 2441 — Network Panel with Service Workers
- Network requests
- Visual representation of ongoing requests during the recording
- Lesson 2211 — Performance Panel Overview and RecordingLesson 2450 — disconnectedCallback: Element Removal
- Network resilience
- Small failures don't doom the entire upload
- Lesson 2717 — Chunked Upload for Large Files
- Network response arrives
- → page JavaScript updates the UI *and* cache gets updated
- Lesson 2392 — Cache Then Network Strategy
- Network Tab
- Remember the request-response cycle?
- Lesson 26 — Browser Developer ToolsLesson 2425 — Debugging Cache Strategies
- network throttling
- in browser DevTools.
- Lesson 1308 — Testing Fallback EffectivenessLesson 2435 — Testing Service Worker Updates
- Network-First
- suits:
- Lesson 2155 — Cache Strategy SelectionLesson 2399 — Handling Different Content Types
- Network-First Strategy
- is a Service Worker caching pattern that attempts to fetch resources from the network first, and only falls back to the cache if the network request fails.
- Lesson 2153 — Network-First StrategyLesson 2388 — Network-First Strategy
- Network-level failures
- are usually safe to retry:
- Lesson 1687 — Understanding When to Retry Network Requests
- Network-Only Strategy
- means your service worker intercepts a request but *always* forwards it to the network, never checking or storing it in the cache.
- Lesson 2391 — Network-Only Strategy
- NetworkFirst
- attempts the network, falling back to cache only if offline.
- Lesson 2408 — Built-In Caching Strategies
- Neutral factors
- Lesson 659 — Performance Implications of Utility-First CSS
- never
- collapse
- Lesson 146 — Margin Collapse: Vertical MarginsLesson 1056 — The outline PropertyLesson 1057 — Why outline: none is DangerousLesson 2280 — Generating Source Maps in Build ToolsLesson 2293 — Logging Best PracticesLesson 2903 — Safe Alternatives to Dangerous APIs
- Never skip versions
- Go from v1 → v2 → v3, never v1 → v3
- Lesson 796 — IndexedDB Wrappers and Best Practices
- New business requirements
- If adding a chat widget is essential, adjust your third-party script budget realistically.
- Lesson 1938 — Monitoring and Adjusting Budgets Over Time
- New projects
- almost always benefit from Vite's speed and simplicity.
- Lesson 1398 — When Webpack Makes Sense vs Modern Alternatives
- New Relic
- provide ongoing surveillance—like having a security camera instead of taking occasional photos.
- Lesson 1927 — Performance Monitoring Services
- News sites
- Static article structure, dynamic comment counts
- Lesson 1778 — Hybrid ApproachesLesson 1796 — Configuring Revalidation Intervals
- Next steps
- Guide users on what to do: "Contact your team admin to request access" or "Return to dashboard.
- Lesson 1662 — Handling 403: Access Denied UI
- Next.js
- (React): Streaming SSR with incremental hydration
- Lesson 1755 — Hydration in Different FrameworksLesson 1984 — Build-Time Critical Resource Optimization
- Next.js Image Component
- (`next/image`) takes this further by combining build-time and request-time optimization.
- Lesson 2006 — Build-Time Image Optimization Pipeline
- Next/Previous Line
- Down/Up arrows read the content line by line
- Lesson 1103 — Basic Screen Reader Navigation Commands
- Nginx
- known for speed and efficiency
- Lesson 10 — What is a Web Server?Lesson 974 — SEO and Server Configuration for History API RoutesLesson 984 — Server Configuration for SPA Routing
- No
- Triple (or more) underscores are a red flag in BEM.
- Lesson 1324 — BEM Nesting Rules and When to Create New BlocksLesson 2002 — Format Selection Decision Tree
- No `report-uri` or `report-to`
- violation reporting doesn't work
- Lesson 2876 — CSP Meta Tag Alternative
- No audio support
- Lesson 1245 — GIF: Animation and Legacy Support
- No automatic transmission
- data stays in the browser and isn't sent to your server automatically
- Lesson 770 — The Web Storage API
- No client verification
- Anyone who intercepts the redirect can steal the token
- Lesson 1618 — Implicit Flow and Why to Avoid It
- No credentials provided
- – You tried accessing a protected resource without sending an access token, JWT, or session cookie
- Lesson 1657 — Understanding 401 Unauthorized
- No CSRF concerns
- Since tokens aren't automatically attached by browsers, CSRF attacks aren't a threat.
- Lesson 1576 — Mobile and Native App Authentication
- No directive "priority"
- There's no hierarchy where one directive type overrules another—they all combine to form the final policy.
- Lesson 2878 — CSP Header Precedence Rules
- No domain specified
- Cookie is only sent to the exact host that set it (`www.
- Lesson 1602 — Domain and Path Restrictions for Cookies
- No external dependency
- Your site isn't affected if the service goes down
- Lesson 561 — Self-Hosting vs. Font Services
- No font at all
- Does `optional` skip loading on slow connections?
- Lesson 1281 — Testing Font Loading Strategies
- No form needed
- Your UI doesn't have traditional form elements, but you still need multipart encoding
- Lesson 892 — Creating FormData Without Forms
- No form validation
- Input fields aren't checked or processed
- Lesson 2476 — Templates vs. Hidden Markup: Why Templates Matter
- No head-of-line blocking
- at the HTTP layer—all requests proceed in parallel
- Lesson 2120 — HTTP/2 Multiplexing
- No human error
- Hashes update automatically with code changes
- Lesson 2865 — Build Tools and Automatic Hash Generation
- No hydration mismatch issues
- Lesson 1744 — Hydration vs. Client-Side Rendering
- No initial bundle
- The server starts instantly because it doesn't need to analyze and bundle your entire dependency tree
- Lesson 1404 — ESM-Native Development
- No JavaScript runtime overhead
- No V8 engine startup time, no JIT warmup period
- Lesson 1400 — esbuild: The Speed Champion
- No layout calculation
- Zero render tree impact
- Lesson 2476 — Templates vs. Hidden Markup: Why Templates Matter
- No layout shift tolerance
- You want zero FOUT (Flash of Unstyled Text) on repeat visits
- Lesson 1276 — font-display: optional Strategy
- No Long-Term Trends
- Each run is isolated; you won't see performance changes over time or across different pages without manual tracking.
- Lesson 2232 — Lighthouse Limitations and Complementary Tools
- No margin math
- No need to calculate negative margins on the container or selectively apply margins
- Lesson 279 — gap: Modern Spacing Between Flex Items
- No refresh tokens
- Users must re-authenticate frequently, creating poor UX
- Lesson 1618 — Implicit Flow and Why to Avoid It
- No resource loading
- Images inside templates don't make network requests
- Lesson 2476 — Templates vs. Hidden Markup: Why Templates Matter
- No script execution
- `<script>` tags remain dormant
- Lesson 2476 — Templates vs. Hidden Markup: Why Templates Matter
- No sensitive details
- in 5xx errors—just "Internal Server Error" and a tracking ID
- Lesson 1494 — Status Code Response Bodies
- No server access
- Hosting on platforms where you can't set custom headers
- Lesson 2876 — CSP Meta Tag Alternative
- No server processing time
- Pages are already built, so there's no waiting for a server to generate HTML
- Lesson 1818 — Pre-rendering and Edge Distribution
- No side effects
- Custom elements inside aren't upgraded until cloned
- Lesson 2476 — Templates vs. Hidden Markup: Why Templates Matter
- No skipped levels
- Don't jump from `<h2>` to `<h5>`
- Lesson 1104 — Heading Navigation and Structure Testing
- No stale content
- You can regenerate pages when data changes
- Lesson 1789 — Fallback Pages and On-Demand Generation
- No white screen phase
- Unlike Client-Side Rendering, where users see nothing until JavaScript builds the page, SSR shows content immediately
- Lesson 1737 — Speed Index
- node
- in the tree.
- Lesson 663 — The DOM Tree StructureLesson 707 — firstChild, lastChild, firstElementChild, lastElementChild
- Node Removal
- breakpoint is a special debugging tool in Chrome DevTools that triggers a pause the moment a specific DOM element is deleted from the page.
- Lesson 2259 — DOM Breakpoints: Node Removal
- Node/Express
- Add a catch-all route that serves `index.
- Lesson 984 — Server Configuration for SPA Routing
- NodeList
- essentially a snapshot list of all matching elements at the moment you run the query.
- Lesson 679 — document.querySelectorAll()
- Non-blocking errors
- "Image failed to load" (user can continue working)
- Lesson 1707 — Toast Notification Patterns and Use Cases
- Non-Blocking Overlays
- are the most common approach: a banner appears at the bottom or top of the viewport, allowing users to scroll and view content behind it.
- Lesson 2967 — Cookie Banner Placement and Timing
- Non-critical
- Icon fonts or fonts paired with `font-display: optional`
- Lesson 1295 — When to Preload Fonts vs When Not To
- Non-essential third-party scripts
- (chat widgets, recommendation engines)
- Lesson 2960 — Legitimate Interest vs Consent
- Non-idempotent operations
- like POST/PUT/DELETE should be retried cautiously—you might create duplicate orders or delete things twice.
- Lesson 1687 — Understanding When to Retry Network Requests
- Non-Intrusive Behavior
- The banner should not steal focus, force interaction, or cover interactive elements.
- Lesson 2326 — Offline Indicators and Banners
- Nonce support
- styled-components and Emotion can accept a nonce that gets added to every generated `<style>` tag.
- Lesson 2884 — CSS-in-JS and CSP Compatibility
- Nonces
- Better for dynamically generated pages where content varies per request
- Lesson 2859 — Understanding CSP HashesLesson 2862 — Nonces vs Hashes: When to Use EachLesson 2883 — Style Attributes vs Style TagsLesson 2889 — Emotion and CSP Setup
- Normal flow
- is the default way browsers display HTML elements when you don't apply any special CSS layout properties.
- Lesson 207 — What is Normal Flow?Lesson 211 — The position Property: OverviewLesson 212 — Static Positioning
- Normal script
- Stop everything, go to store, buy items, cook immediately, then resume your day
- Lesson 2792 — async vs defer Attributes
- Normalize.css
- takes a gentler approach, preserving useful defaults while fixing inconsistencies and bugs across browsers.
- Lesson 1334 — The Generic Layer: Resets and Normalize
- NoSQL Database
- IndexedDB stores data as key-value pairs, similar to JavaScript objects.
- Lesson 782 — What is IndexedDB and When to Use It
- not
- making the image fluid or responsive in size
- Lesson 418 — Density Descriptors (x) in srcsetLesson 453 — :empty for Conditional Content DisplayLesson 700 — Cloning Elements with cloneNodeLesson 776 — The storage EventLesson 962 — history.pushState() FundamentalsLesson 966 — The popstate Event: Detecting Back/Forward NavigationLesson 1043 — Natively Focusable ElementsLesson 1059 — The :focus-visible Pseudo-Class (+11 more)
- Not Google's preferred solution
- Google recommends SSR or static pre-rendering instead, as dynamic rendering adds complexity
- Lesson 1881 — Dynamic Rendering and Bot Detection
- Not handling failed fetches
- crashes offline functionality
- Lesson 2443 — Common Service Worker Pitfalls
- Not ideal when
- Lesson 1510 — Page-Based Pagination
- Not include uppercase letters
- `my-component` , `myComponent`
- Lesson 2447 — Custom Element Naming Requirements
- NotFoundError
- The file can't be located (perhaps deleted after selection but before reading)
- Lesson 2696 — FileReader Error Handling
- Nothing else
- not inline `<script>` tags, not `eval()`, not event handlers like `onclick=".
- Lesson 2842 — The script-src Directive
- Noticeable animations
- `500ms` to `1s` (clear but not sluggish)
- Lesson 503 — The transition-duration Property
- Notify the user
- Lesson 777 — Error Handling and QuotaExceededError
- Notify Users of Updates
- Lesson 2385 — Lifecycle Best Practices
- NotReadableError
- The file exists but can't be read (permissions issue or hardware failure)
- Lesson 2696 — FileReader Error Handling
- Numbered grid lines
- (the boundaries between tracks)
- Lesson 323 — Inspecting Grids with Browser DevTools
- Numerous
- Preloading 5+ font files creates resource congestion
- Lesson 1295 — When to Preload Fonts vs When Not To
- Nuxt
- (Vue): Hybrid rendering with selective hydration
- Lesson 1755 — Hydration in Different FrameworksLesson 1984 — Build-Time Critical Resource Optimization
- NVDA (NonVisual Desktop Access)
- is a free, open-source screen reader for Windows.
- Lesson 1100 — Screen Reader Landscape Overview
- NVDA (Windows, free)
- tends to be more literal about `aria-live` announcements.
- Lesson 1125 — Testing Announcements Across Screen Readers
O
- Object Types
- Custom types representing entities in your system (like `User`, `Post`, or `Product`)
- Lesson 1520 — The GraphQL Type SystemLesson 1523 — Object Types and Fields
- Object-Based Approach
- Lesson 1640 — Permission Data Structures
- Objects
- – Layout patterns, structure (OOCSS principles)
- Lesson 599 — ITCSS (Inverted Triangle CSS) Layer ModelLesson 1331 — What is ITCSS? The Inverted Triangle ApproachLesson 1339 — ITCSS Layer Ordering and Import Strategy
- Objects and Arrays
- plain objects, arrays, nested structures
- Lesson 2088 — Structured Clone Algorithm and Data Transfer
- Offer alternatives
- Provide email alerts or in-app notifications as fallbacks
- Lesson 2346 — Permission Best Practices and Timing
- Offer limited, non-data-collecting experience
- Lesson 2961 — Children's Privacy and Age Verification
- Offer next steps
- Don't just report the problem—show solutions:
- Lesson 1681 — Not Found and Resource Errors
- Official plugins
- are maintained by the Vite team and cover major frameworks:
- Lesson 1383 — Vite Plugins
- Offline-first applications
- that need to cache significant data
- Lesson 782 — What is IndexedDB and When to Use It
- Offline-first is complex
- – Native databases and storage are more mature for intricate offline scenarios
- Lesson 2370 — When to Choose PWA vs Native
- Offline-only features
- where network access would be incorrect or harmful
- Lesson 2390 — Cache-Only Strategy
- Offloaded traffic
- Your server focuses on dynamic content while the CDN handles static assets
- Lesson 2156 — What is a CDN and Why Use One
- Offset-x and Offset-y
- These first two values position the shadow horizontally and vertically.
- Lesson 202 — Box Shadow Basics
- Offsets
- are only safe for *instantaneous* timestamps that won't be interpreted in different contexts
- Lesson 2752 — Named Timezones vs Offsets
- OKLAB
- separate **lightness** (how bright or dark) from **color** (hue and intensity).
- Lesson 494 — LAB and OKLAB Color Functions
- OKLCH
- (improved version) describe colors based on:
- Lesson 493 — LCH and OKLCH: Perceptually Uniform Color Models
- Older browsers
- No support
- Lesson 1243 — AVIF: Next-Generation Image FormatLesson 2013 — Fallback Images and Browser Support
- On Blur
- Show validation errors when a user leaves a field—they've finished their input attempt.
- Lesson 1683 — Error Message Placement and Timing
- On Failure
- Now redirect to login (the refresh token itself has expired or been revoked)
- Lesson 1663 — Token Refresh on 401
- On first open
- Lesson 1090 — Focus Trap Implementation
- On first visit
- If a user requests a page that wasn't pre-generated, your server generates it on-demand
- Lesson 1789 — Fallback Pages and On-Demand Generation
- On functional events
- – Events like `push` or `sync` trigger an update check before the event fires.
- Lesson 2431 — Automatic Update Checks
- On large screens (≥1000px)
- Image width = full viewport minus 300px sidebar
- Lesson 1221 — Calc() in sizes Attribute
- On mobile devices
- where horizontal space is scarce (consider accordions or full sections)
- Lesson 1175 — Tabs Pattern Overview and When to Use Them
- On navigation
- When a user navigates to a page within your service worker's scope, the browser compares the current service worker file against the cached version
- Lesson 2378 — Update Checks and Triggering
- On smaller screens
- Image width = full viewport minus 40px total padding (20px each side)
- Lesson 1221 — Calc() in sizes Attribute
- On Submit
- For complex validations or server errors, wait until form submission to avoid interrupting their flow.
- Lesson 1683 — Error Message Placement and Timing
- On Success
- Store the new access token and retry the original request with updated credentials
- Lesson 1663 — Token Refresh on 401Lesson 2337 — Storing Failed Requests with IndexedDB
- On-demand for the rest
- Let less-visited pages generate when first requested, then serve them statically afterward
- Lesson 1799 — ISR with Dynamic Routes
- On-demand revalidation
- lets you trigger page rebuilds programmatically via API routes or webhooks, bypassing the time- based interval.
- Lesson 1797 — On-Demand Revalidation
- On-demand transformation
- Files are only processed when the browser requests them
- Lesson 1404 — ESM-Native Development
- once
- .
- Lesson 850 — Request Body MethodsLesson 1770 — Data Fetching at Build TimeLesson 2185 — Event Listeners PanelLesson 2366 — Development and Maintenance Costs
- one
- `<h1>` per page—this is your document's main title.
- Lesson 54 — Heading Hierarchy (h1-h6)Lesson 113 — Table Caption with <caption>Lesson 856 — Response Body MethodsLesson 2879 — X-Frame-Options vs frame-ancestors
- One `<h1>` per page
- The main title of the content
- Lesson 1104 — Heading Navigation and Structure Testing
- one direction
- either rows or columns.
- Lesson 253 — What is Flexbox and Why Use ItLesson 310 — What is CSS Grid and When to Use It
- One handler limit
- Inline attributes can only hold one handler per event
- Lesson 719 — Inline vs addEventListener
- One request per session
- Don't re-prompt if declined
- Lesson 2346 — Permission Best Practices and Timing
- One-dimensional flow is enough
- Navigation bars, button groups, or any row/column of items work perfectly with Flexbox's simpler model.
- Lesson 377 — When to Choose Grid Over Flexbox
- One-off Background Sync
- Lesson 2341 — One-off Sync vs Periodic Background Sync
- Ongoing Maintenance
- Lesson 2366 — Development and Maintenance Costs
- Online SRI Hash Generators
- Lesson 2938 — Generating SRI Hashes
- only
- `<p>` elements that are immediate children of `<article>`, not those nested deeper.
- Lesson 123 — Combinators: Descendant and ChildLesson 453 — :empty for Conditional Content DisplayLesson 786 — Creating Object StoresLesson 801 — Cookie Path and ScopeLesson 870 — Development Proxies for CORSLesson 1276 — font-display: optional StrategyLesson 2390 — Cache-Only StrategyLesson 2467 — Styling Slotted Content with ::slotted() (+1 more)
- Only 256 colors
- per frame (compared to millions in other formats)
- Lesson 1245 — GIF: Animation and Legacy Support
- only after
- you finish all your tasks
- Lesson 2792 — async vs defer AttributesLesson 2971 — Blocking Scripts Based on Consent
- only in memory
- (JavaScript variables) for maximum security, they vanish the moment a user refreshes the page or closes a tab.
- Lesson 1599 — Token Storage in Single-Page ApplicationsLesson 1609 — Refresh Token Storage Strategies
- Only local fonts
- Lesson 2846 — The font-src Directive
- opacity
- when you want to fade an entire element, including all its contents and child elements.
- Lesson 184 — Alpha Transparency and OpacityLesson 2552 — Animating CSS PropertiesLesson 2563 — Basic Animations with animate Prop
- Opaque responses
- Cross-origin requests without CORS may cache but have limited inspectability
- Lesson 2425 — Debugging Cache Strategies
- Open Mode
- creates a shadow root that remains accessible via the element's `shadowRoot` property.
- Lesson 2462 — Open vs Closed Shadow DOM
- Open source licenses
- (like SIL Open Font License) generally allow free use and modification, but check specific terms.
- Lesson 563 — Font Licensing and Legal Considerations
- Opening Lighthouse
- Lesson 2224 — Running Lighthouse in Chrome DevTools
- Opening modals or dialogs
- Focus should move into the modal immediately so keyboard users don't interact with hidden background content
- Lesson 1087 — Focus Management Fundamentals
- Operable
- means users must be able to operate the interface.
- Lesson 988 — The Four Principles of WCAG: POUR
- Operation name
- (`GetUser`): Optional but recommended for debugging
- Lesson 1528 — Variables in Operations
- Opportunities
- specific, actionable items that directly impact your Performance Score.
- Lesson 2226 — Interpreting Opportunities and Diagnostics
- Opt-in, not opt-out
- Checkboxes must be unchecked by default
- Lesson 2953 — Understanding GDPR and CCPA Fundamentals
- Optical Size (`opsz`)
- Optimizes legibility at different sizes (like 12pt vs 72pt)
- Lesson 1288 — Variable Font Axes
- Optical sizing
- is a feature in some variable fonts that automatically adjusts these subtle design details based on the text size.
- Lesson 577 — Optical Sizing with font-optical-sizing
- Optimal Caching
- Since content is pre-built, aggressive browser and CDN caching is straightforward.
- Lesson 1723 — SSG Performance Characteristics
- Optimistic permission checks
- render UI elements immediately, assuming the user likely has access.
- Lesson 1647 — Optimistic vs Defensive Permission Checks
- Optimistic UI
- renders components immediately, assuming the user has access.
- Lesson 1656 — Optimistic vs Pessimistic Authorization UI
- Optimistic UI updates
- mean you show the uploaded file as "successful" in your interface *before* the server confirms it, making the experience feel lightning-fast.
- Lesson 2720 — Upload with Optimistic UI Updates
- Optimistic updates
- assume the mutation will succeed and update the UI immediately with predicted data, then reconcile when the real server response arrives.
- Lesson 1542 — Optimistic UI Updates with Mutations
- Optimization opportunity
- Minimize serialized state by only including what's needed for hydration
- Lesson 1745 — The Double Data Problem
- Optimize with tools
- Image optimization tools (like those you'll use in build processes) can strip metadata and compress PNG files without losing quality—reductions of 20-40% are common.
- Lesson 1998 — PNG: Transparency and Quality
- Optimized but not over-compressed
- (balance quality and file size)
- Lesson 1845 — Social Sharing Best Practices
- Optimized rendering pipeline
- GSAP uses requestAnimationFrame and applies hardware acceleration intelligently
- Lesson 2546 — GSAP Overview and Why Use It
- Optimized routes
- CDNs use premium network paths, avoiding congested public internet routes
- Lesson 2157 — CDN Performance Benefits
- Optimizes assets
- images, fonts, and other static resources
- Lesson 1722 — The SSG Build and Delivery Process
- Option 1: Completely Replace
- Lesson 635 — Customizing Breakpoints
- Option 1: Loop backward
- through live collections:
- Lesson 714 — Live vs Static Collections During Traversal
- Option 2: User-Controlled Toggle
- Lesson 2661 — Accessible Data Tables as Fallbacks
- Optional values
- Everything else is optional and must come *before* the font size.
- Lesson 179 — The Font Shorthand Property
- options object
- as a second argument to control *how* the matching happens.
- Lesson 815 — Cache Matching OptionsLesson 2351 — Displaying Notifications with showNotification()
- OPTIONS preflight request
- first, listing the custom header in `Access-Control-Request-Headers`.
- Lesson 865 — Custom Headers and Preflight
- order matters
- stacking is top to bottom in the order you write them.
- Lesson 198 — Multiple BackgroundsLesson 485 — Transform Functions: translate(), rotate(), scale()
- Ordered lists
- (`<ol>`) communicate sequence and ranking.
- Lesson 1001 — Lists: Ordered, Unordered, and Description
- Ordinal scales
- (`d3.
- Lesson 2630 — Scales: Mapping Data to Visual PropertiesLesson 2631 — Linear and Ordinal Scales
- origin
- a combination of three parts:
- Lesson 778 — Security and Same-Origin PolicyLesson 965 — Updating the URL with pushState and replaceStateLesson 2185 — Event Listeners Panel
- origin server
- with your data
- Lesson 1479 — Layered System ArchitectureLesson 2160 — CDN Configuration Basics
- OS integration
- full access to Bluetooth devices, NFC, advanced camera controls (RAW photos, manual focus), USB peripherals, system-level notifications, background processing without restrictions, and widgets.
- Lesson 2363 — PWA vs Native App: Capabilities Comparison
- Other readers
- like TalkBack (Android) and Narrator (Windows) have their own quirks too.
- Lesson 1125 — Testing Announcements Across Screen Readers
- Other widget roles
- include `checkbox`, `radio`, `switch`, `combobox`, `menu`, `menuitem`, `dialog`, and more.
- Lesson 1016 — Widget Roles: Interactive Components
- Outdated information
- Keep prices, availability, and dates current
- Lesson 1868 — Structured Data Best Practices and Common Mistakes
- outer container
- handles the vertical stacking (header → content → footer), while the **inner container** manages the horizontal three-column layout.
- Lesson 294 — Holy Grail LayoutLesson 305 — Pricing Table Pattern
- Over-extraction
- Including too much CSS defeats the purpose.
- Lesson 1975 — Extracting Critical CSS Manually
- Over-fetching
- happens when your client only needs the user's name, but receives the entire user object— including the bio, followers list, and posts you don't need.
- Lesson 1547 — Over-Fetching and Under-Fetching Problems in REST
- Overlapping designs
- Create layered visual effects where one box slightly covers another.
- Lesson 149 — Negative Margins
- Overlay or Modal
- Lesson 1702 — Offline UI Indicators
- Overly complex descendant selectors
- force the browser to check many relationships:
- Lesson 137 — Selector Performance Considerations
- Overscan
- (or **buffer items**) means rendering a few *extra* items above and below the visible viewport boundaries.
- Lesson 2102 — Overscan and Buffer ItemsLesson 2103 — Virtual Grid Layouts
- Oversized fonts
- – Font files with character sets you're not actually using
- Lesson 2202 — Identifying Slow Resources
- Oxc
- for linting are all written in Rust, pursuing the same goal: native-speed tooling that makes JavaScript development feel instant, regardless of project size.
- Lesson 1403 — Turbopack and the Rust Wave
P
- Padding
- = bubble wrap directly around the gift (space inside the border)
- Lesson 3 — IP Addresses and Domain NamesLesson 139 — The Box Model: Content, Padding, Border, MarginLesson 265 — Flexbox and the Box ModelLesson 2176 — Viewing and Understanding the Box Model
- Padding (p)
- creates space *inside* the element, between content and border.
- Lesson 618 — Spacing: Margin and Padding
- Padding and borders
- , however, are considered *part of* the flex item's size.
- Lesson 265 — Flexbox and the Box Model
- Padding and margin percentages
- always reference the parent's **width**, even for top/bottom values (this surprises many developers)
- Lesson 157 — Percentage Values
- Page Down
- keys let users jump through content in meaningful chunks, typically moving several items at once rather than one at a time.
- Lesson 1081 — Page Up and Page Down
- Page Load Time
- Large, unoptimized images take longer to download, especially on slower connections.
- Lesson 1995 — Why Image Optimization Matters for Performance
- Page load time suffers
- , especially on slower connections
- Lesson 2007 — Responsive Images: Why Resolution Switching Matters
- Page Load Times
- How long until the page becomes interactive
- Lesson 2816 — Performance Monitoring Integration
- Page requests resource
- → triggers both cache lookup AND network fetch
- Lesson 2392 — Cache Then Network Strategy
- Page Up
- and **Page Down** keys let users jump through content in meaningful chunks, typically moving several items at once rather than one at a time.
- Lesson 1081 — Page Up and Page Down
- Page Up/Down
- Larger increments (optional but helpful)
- Lesson 1205 — Slider and Range ControlsLesson 1206 — Date Picker Pattern
- Page-level headers
- The main header at the top of your website containing your logo, site title, and primary navigation
- Lesson 47 — The <header> Element
- Page-level migration
- Dedicate specific pages or routes to Tailwind while legacy pages keep their old styles.
- Lesson 660 — Migration Strategies: Adding Tailwind to Existing Projects
- PageSpeed Insights
- Shows your site's CrUX scores directly
- Lesson 1926 — Chrome User Experience Report (CrUX)
- Paint
- Draws pixels on screen
- Lesson 18 — The Rendering EngineLesson 20 — The Critical Rendering PathLesson 25 — Paint and CompositeLesson 540 — The Browser's Rendering PipelineLesson 1985 — Understanding the Main Thread and Browser Rendering PipelineLesson 2591 — Understanding the 60fps TargetLesson 2592 — The Rendering PipelineLesson 2595 — Using transform Instead of Position (+1 more)
- Paint → Composite
- (cheaper—no repositioning needed)
- Lesson 540 — The Browser's Rendering PipelineLesson 2592 — The Rendering Pipeline
- Painting
- (drawing pixels to the screen)
- Lesson 2055 — What is the Main Thread?Lesson 2217 — Paint and Composite Layers
- Paints content immediately
- ← FCP happens here (much earlier!
- Lesson 1731 — First Contentful Paint (FCP)
- Panel (region)
- The content area that shows/hides based on the header state
- Lesson 1181 — Accordion Pattern Overview and Structure
- Paragraph margins
- (`margin-top`, `margin-bottom`) create vertical rhythm.
- Lesson 592 — Text Spacing System
- parallel
- (multiple at once).
- Lesson 2168 — Serial vs Parallel Request PatternsLesson 2171 — Breaking Request ChainsLesson 2716 — Multiple File Upload Queue
- Parallel Processing
- Build multiple pages simultaneously instead of one-at-a-time.
- Lesson 1788 — Build Performance with Large Datasets
- Parallelism by design
- Go's goroutines make it trivial to parse, transform, and bundle files in parallel across all CPU cores
- Lesson 1400 — esbuild: The Speed Champion
- Parcel
- aims for zero configuration—it works out of the box with smart defaults, eliminating the complex config files Webpack often requires.
- Lesson 1399 — The Modern Bundler LandscapeLesson 1405 — Comparing Build TimesLesson 1406 — Plugin Ecosystems
- Parent
- the node directly above
- Lesson 663 — The DOM Tree StructureLesson 704 — Parent-Child Relationships in the DOM
- Parent container
- If no siblings exist, focus the parent section
- Lesson 1088 — Moving Focus After Element Removal
- parent element
- when **any descendant** inside it gets focus.
- Lesson 448 — :focus-within for Container HighlightingLesson 696 — Inserting Elements with insertBeforeLesson 698 — Replacing Elements with replaceChildLesson 699 — Removing Elements from the DOMLesson 720 — Event Bubbling Phase
- Parental consent flows
- require you to obtain verifiable consent from a parent/guardian.
- Lesson 2961 — Children's Privacy and Age Verification
- Parse
- thousands of objects into memory
- Lesson 1507 — Why Pagination MattersLesson 2218 — Parsing, Compiling, and Evaluating Scripts
- Parse and execute
- the JavaScript on the main thread
- Lesson 2047 — The Performance Cost of Third-Party Scripts
- Parse CSS
- Reads stylesheets and figures out how each element should look
- Lesson 18 — The Rendering EngineLesson 20 — The Critical Rendering Path
- Parse HTML
- Reads your HTML and builds a tree structure of elements (the DOM you learned about in Browser Architecture)
- Lesson 18 — The Rendering EngineLesson 20 — The Critical Rendering Path
- Parse programmatically
- since it's JSON (useful for automated testing)
- Lesson 2210 — Export and Analyze HAR Files
- Parse the current parameters
- using `URLSearchParams` from `window.
- Lesson 980 — Query Parameters in Routes
- parsing
- comes in.
- Lesson 21 — Parsing HTML into the DOMLesson 1985 — Understanding the Main Thread and Browser Rendering Pipeline
- Parsing overhead
- The browser must parse all that JavaScript
- Lesson 1749 — Performance Cost of Hydration
- Parsing Resumes
- After the script finishes, DOM construction continues
- Lesson 672 — The Critical Rendering Path
- Partial Data
- scenarios arise when some fields succeed but others fail.
- Lesson 1564 — Error Handling in Client Libraries
- Partial hydration
- is a selective approach where you identify which components actually need interactivity and only hydrate those specific pieces.
- Lesson 1750 — Partial Hydration Concepts
- Partial SSR
- Render the page shell server-side (header, layout), but load user-specific sections client-side after hydration.
- Lesson 1763 — SSR and Authentication Requirements
- Partial translations
- Keys present in English but absent in Spanish, Arabic, etc.
- Lesson 2536 — Translation Coverage and Missing Key Detection
- Passive Mixed Content
- (images, audio, video) traditionally triggered **warnings** rather than blocks, since they can't execute code.
- Lesson 2928 — Mixed Content: Blocking and Warnings
- PATCH
- Update part of a resource
- Lesson 833 — Handling Different HTTP Methods: PUT, PATCH, DELETELesson 2949 — Updating Dependencies Safely
- Path
- = specific room in the building
- Lesson 5 — What is a URL?Lesson 965 — Updating the URL with pushState and replaceState
- Path IntelliSense
- Autocompletes file paths when importing modules or linking assets
- Lesson 1462 — VS Code Extensions for Web Development
- Patterns and Trends
- Single errors might be flukes.
- Lesson 2809 — Why Client-Side Error Tracking Matters
- Patterns during interactions
- Scrolling, hovering, or animations triggering drops
- Lesson 2214 — Frames Per Second (FPS) and Frame Drops
- Pause on caught exceptions
- Stops execution even when an error is handled by a `try.
- Lesson 2262 — Exception Breakpoints
- Pause on uncaught exceptions
- Only stops when an error isn't caught—when it would normally crash or log to the console.
- Lesson 2262 — Exception Breakpoints
- Payload
- – the actual data (claims)
- Lesson 1578 — What is a JWT and Why Use It?Lesson 1579 — JWT Structure: Header, Payload, and Signature
- Professional format for reports, combining scalability with document standards.
- Lesson 2651 — Exporting Charts as Images
- Perceivable
- means users must be able to perceive the information presented.
- Lesson 988 — The Four Principles of WCAG: POUR
- perceived performance
- how fast your site *feels* to users.
- Lesson 1293 — Understanding Font Loading and Critical Rendering PathLesson 2005 — Progressive vs Baseline Encoding
- Percentage
- `flex-basis: 50%;` — starts at 50% of container
- Lesson 282 — flex-basis: Setting Initial Item Size
- Perfectly synced
- with monitor refresh (60Hz, 120Hz, etc.
- Lesson 2597 — requestAnimationFrame for Smooth Timing
- Perform Action
- Execute the operation you suspect is leaking—open a modal, load data, switch views, etc.
- Lesson 2116 — The Three-Snapshot Technique
- Perform DNS lookups
- to resolve the external domain
- Lesson 2047 — The Performance Cost of Third-Party Scripts
- Perform periodic active checks
- when online to verify actual connectivity
- Lesson 1701 — Implementing a Connectivity Monitor
- Performance
- Inline styles can't be cached by browsers.
- Lesson 44 — The Importance of Keeping Pillars SeparateLesson 387 — Testing on Real DevicesLesson 424 — Modern Image Formats with PictureLesson 546 — Measuring Animation PerformanceLesson 918 — Field-Level vs Form-Level ValidationLesson 1299 — Measuring Preload Impact on Font Loading PerformanceLesson 1815 — Platform Selection CriteriaLesson 1916 — Chrome DevTools Performance Panel Basics (+6 more)
- Performance API
- to track when widgets load and how much they affect your page:
- Lesson 2838 — Monitoring Third-Party Widget Performance
- Performance audit
- Third-party scripts can be slow or block your critical rendering path, appearing prominently in your request waterfall.
- Lesson 2209 — Tracking Third-Party Requests
- performance budget
- is a set of predefined constraints you impose on your website's performance characteristics.
- Lesson 1929 — What is a Performance Budget?Lesson 2102 — Overscan and Buffer Items
- performance budgets
- for total page weight and metric-based budgets you established earlier.
- Lesson 1995 — Why Image Optimization Matters for PerformanceLesson 2231 — Lighthouse CI for Continuous Monitoring
- Performance comparison
- Running multiple CDNs lets you A/B test which provider performs best for your specific content and audience, then adjust traffic accordingly.
- Lesson 2164 — Multi-CDN Strategies
- Performance control
- You decide caching headers, compression, and delivery method
- Lesson 561 — Self-Hosting vs. Font Services
- Performance degradation
- As memory usage grows, your app becomes sluggish
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- Performance impact assessment
- Block heavy resources to measure how much they actually slow your page.
- Lesson 2204 — Blocking Requests
- Performance is paramount
- – Complex animations, 3D graphics, or heavy computation need native speed
- Lesson 2370 — When to Choose PWA vs Native
- Performance matters
- (reducing total listener count from 100 to 1)
- Lesson 767 — Delegation vs Direct Binding
- Performance matters more
- than perfect methodology adherence
- Lesson 604 — Mixing Methodologies Pragmatically
- Performance Optimization
- Webpack splits code into chunks, removes dead code (tree shaking), minifies files, and creates efficient bundles that reduce load times.
- Lesson 1387 — What is Webpack and Why Use It
- Performance overhead
- Polyfilled features run slower than native implementations
- Lesson 2495 — Browser Support and Polyfill Considerations
- Performance panel
- or **Lighthouse** in DevTools to measure CLS (Cumulative Layout Shift).
- Lesson 1308 — Testing Fallback EffectivenessLesson 1972 — Measuring Resource Hint ImpactLesson 2213 — Identifying Long Tasks and Blocking ScriptsLesson 2216 — Layout Thrashing and Forced Reflows
- Performance predictability
- You control compression and delivery
- Lesson 2051 — Self-Hosting Third-Party Resources
- Performance requirements
- Fastly for instant updates, Cloudflare for global reach
- Lesson 2159 — Popular CDN Providers
- Performance Tools
- Observe the critical rendering path in real-time, seeing how long parsing, layout, and paint take.
- Lesson 26 — Browser Developer Tools
- Performance-conscious choices
- Events like `scroll`, `mousemove`, and `resize` fire rapidly.
- Lesson 745 — Event Type Selection and Best Practices
- Performance-intensive tasks
- like 3D gaming, video editing, or real-time audio processing typically run better natively.
- Lesson 2363 — PWA vs Native App: Capabilities Comparison
- Performant by default
- Browser-optimized, runs on compositor thread
- Lesson 2560 — GSAP vs CSS Animations
- Periodic Background Sync
- is fundamentally different.
- Lesson 2341 — One-off Sync vs Periodic Background Sync
- Permissions
- Specific actions like "edit_post", "delete_user", "view_analytics"
- Lesson 1628 — Role-Based Access Control (RBAC) Fundamentals
- Persistent
- Explicitly requested storage that won't be evicted without user permission (via `navigator.
- Lesson 2241 — Storage Quota and Usage Analysis
- Persistent Visibility
- If an error appears far from the triggering element (like at the top of a scrolled form), ensure the user can see both simultaneously, or auto-scroll to the error.
- Lesson 1683 — Error Message Placement and Timing
- Personalization
- → Use SSR with session data or CSR with client-side fetching
- Lesson 1777 — Limitations of Pure SSGLesson 2966 — Essential vs Non-Essential Cookies
- perspective
- the visual distortion that makes closer objects appear larger and distant objects smaller.
- Lesson 535 — 3D Transforms IntroductionLesson 537 — Perspective and Perspective-Origin
- Pessimistic UI
- hides everything by default, showing only a loading state until permissions are confirmed.
- Lesson 1656 — Optimistic vs Pessimistic Authorization UI
- Photographs
- with natural scenes, people, landscapes
- Lesson 1240 — JPEG: Lossy Compression for PhotographsLesson 1244 — SVG: Scalable Vector Graphics for the WebLesson 1997 — JPEG: When and How to Use It
- Photographs with gradients
- → JPEG or WebP (lossy compression handles complex colors well)
- Lesson 1246 — Format Selection Strategy
- Physical device theft
- when the device is locked (attacker gets storage snapshot but can't run your app)
- Lesson 1601 — Token Encryption at Rest
- Pinch-to-zoom
- functionality without keyboard zoom controls
- Lesson 1196 — Touch Gesture Accessibility Considerations
- Placeholders
- Silent classes that can be extended
- Lesson 1333 — The Tools Layer: Mixins and FunctionsLesson 2523 — Form Controls and Input Direction
- Placement and Timing
- Display your offline banner at the top or bottom of the viewport, never in the center where it blocks content.
- Lesson 2326 — Offline Indicators and Banners
- Plain `fetch`
- works well for small projects with simple GraphQL needs.
- Lesson 1565 — When to Use Which Client
- Platform-as-a-Service (PaaS)
- , and **modern edge deployment platforms**.
- Lesson 1806 — Deployment Platform Categories
- Platform-specific features are essential
- – You require Bluetooth, NFC, advanced camera APIs, or other capabilities PWAs can't access
- Lesson 2370 — When to Choose PWA vs Native
- Plausible
- – Open-source, sub-1KB script, shows page views, referrers, and goals without personal data collection.
- Lesson 2785 — Privacy-Focused Alternatives
- Play/pause buttons
- ( always points right, globally understood)
- Lesson 2521 — Icons and Visual Elements in RTL
- Playful brands
- can keep warmth but stay helpful: "Hmm, we can't find that page.
- Lesson 1684 — Tone and Voice in Error Messages
- Plugin ecosystem
- Handles TypeScript, Babel, and other transformations cleanly
- Lesson 1401 — Rollup: The Library Bundler
- Plugin/Extension Process
- The specialists—handles add-ons separately
- Lesson 17 — Browser Architecture Overview
- plugins
- let you add pre-packaged functionality to your Tailwind configuration.
- Lesson 615 — Plugins and ExtensionsLesson 1432 — Plugins and Community RulesetsLesson 2038 — SVG Optimization with SVGO
- Pluralization
- "1 message" vs "2 messages" varies wildly across languages
- Lesson 2530 — Interpolation and Variable Substitution
- PNG
- for broad compatibility, or **WebP/AVIF** with fallbacks for better compression
- Lesson 2002 — Format Selection Decision TreeLesson 2004 — Quality Settings and Visual Perception
- PNG-24
- supports millions of colors (true color).
- Lesson 1241 — PNG: Lossless Compression and TransparencyLesson 1998 — PNG: Transparency and Quality
- PNG-8
- supports up to 256 colors (like GIF).
- Lesson 1241 — PNG: Lossless Compression and TransparencyLesson 1998 — PNG: Transparency and Quality
- PNG/JPEG
- Raster images perfect for presentations and documents.
- Lesson 2651 — Exporting Charts as Images
- Pointing to the original
- If you syndicate content or have URL parameters creating duplicates:
- Lesson 1847 — The rel="canonical" Link Element
- Policy Registration
- The browser parses the CSP directives when the page loads
- Lesson 2840 — How CSP Works in Browsers
- Polish
- has three distinct plural forms based on numeric patterns
- Lesson 2531 — Pluralization Rules Across Languages
- polite
- for status messages, form validation feedback, or search results loading.
- Lesson 1026 — aria-live: Announcing Dynamic ChangesLesson 1115 — Status Role for Passive UpdatesLesson 1117 — Log Role for Sequential UpdatesLesson 1120 — Form Validation Announcements
- Polling
- Your browser repeatedly asks "Anything new?
- Lesson 872 — Real-Time Communication PatternsLesson 1563 — Polling and RefetchingLesson 1704 — Polling vs Event-Driven Detection
- Polling approach
- Periodically fetch the user's current role from your backend.
- Lesson 1637 — Role Changes and UI Updates
- Poor
- >500ms
- Lesson 1894 — Interaction to Next Paint (INP) as FID SuccessorLesson 1897 — CLS Thresholds and Session WindowsLesson 1902 — First Contentful Paint (FCP)Lesson 1903 — Largest Contentful Paint (LCP)Lesson 1905 — Interaction to Next Paint (INP)Lesson 1907 — Time to First Byte (TTFB)
- Poor mobile experience
- Mobile devices have less memory and suffer more quickly
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- Poor: Over 4.0 seconds
- Lesson 1891 — LCP Thresholds and Scoring
- Popup listbox
- that appears with filtered or suggested options
- Lesson 1198 — Combobox Pattern Fundamentals
- Port
- (80, 443, 3000, etc.
- Lesson 778 — Security and Same-Origin PolicyLesson 860 — What is CORS and Why It Exists
- Portfolio Sites
- Lesson 1776 — When to Use SSG
- Position
- relative to the viewport and other elements
- Lesson 24 — Layout and ReflowLesson 487 — Gradient Functions: linear-gradient() and radial-gradient()Lesson 1860 — Breadcrumb Schema for NavigationLesson 2098 — Virtual Scrolling FundamentalsLesson 2659 — Accessible Color Palettes for Data
- Position (x, y)
- – Move elements around (values in pixels):
- Lesson 2563 — Basic Animations with animate Prop
- Position wisely
- Top bars are more noticeable; bottom bars less intrusive
- Lesson 1702 — Offline UI Indicators
- Positioning
- Each cell needs `position: absolute` with calculated `top` and `left` based on its row/column indices and your item dimensions.
- Lesson 2103 — Virtual Grid Layouts
- Positive `z-index` children
- (positioned elements with `z-index: 1`, `2`, etc.
- Lesson 232 — Stacking Order Within a Context
- Positive impact
- SSR delivers functional HTML immediately, so the page *appears* interactive faster.
- Lesson 1734 — First Input Delay (FID)
- Positive word-of-mouth
- that amplifies brand reputation
- Lesson 2982 — Building Trust Through Privacy-First Design
- POST
- .
- Lesson 8 — HTTP Methods: GET and POSTLesson 1470 — What is REST and Why It MattersLesson 1691 — Idempotent Request Design
- Post-Install Behavior
- After a user installs, track how they engage differently.
- Lesson 2361 — Install Analytics and Metrics
- POST, PUT, PATCH, DELETE
- requests that modify data
- Lesson 2908 — State-Changing Requests and CSRF Risk
- PostCSS
- (a tool for transforming CSS) and **autoprefixer** (which adds browser-specific prefixes automatically) to process your styles.
- Lesson 606 — Installing Tailwind CSSLesson 2284 — Source Maps for CSS and Preprocessors
- Potential challenge
- SSR applications still need to "hydrate"—attach JavaScript event handlers to the server-rendered HTML.
- Lesson 1734 — First Input Delay (FID)
- POUR
- Perceivable, Operable, Understandable, and Robust.
- Lesson 988 — The Four Principles of WCAG: POUR
- pre-built HTML file
- from the nearest edge server
- Lesson 1722 — The SSG Build and Delivery ProcessLesson 1726 — Subsequent Navigation Patterns
- Pre-bundles dependencies
- (from `node_modules`) once using esbuild—these rarely change
- Lesson 1373 — Vite's Development Server
- Pre-caching on Page Load
- You can open a cache and immediately store critical resources when your page loads, ensuring they're available for later use.
- Lesson 818 — Cache API Outside Service Workers
- Pre-commit hooks
- that warn developers before code is pushed
- Lesson 2536 — Translation Coverage and Missing Key Detection
- Pre-compression
- (also called static compression) means compressing your files once at build time—before they ever reach your server.
- Lesson 2137 — Pre-Compression vs Dynamic Compression
- Pre-compression is optimal when
- Lesson 2137 — Pre-Compression vs Dynamic Compression
- Pre-optimize HTML structure
- Match server/client rendering exactly to avoid mismatches
- Lesson 1739 — Hydration Time
- Pre-render popular paths
- Generate your top 100 products, most-read articles, or featured content at build time
- Lesson 1799 — ISR with Dynamic Routes
- Pre-Submission
- Call `checkValidity()` to verify without showing messages
- Lesson 911 — Understanding Constraint Validation API
- Precache your app shell
- Lesson 2421 — Combining Precache and Runtime Cache
- precaching
- , where you define a manifest of assets to cache when the service worker installs.
- Lesson 2419 — Runtime Caching FundamentalsLesson 2420 — When to Use Each Strategy
- precise control
- but can cause overflow or wasted space if content doesn't match your fixed dimensions.
- Lesson 151 — Intrinsic vs Extrinsic SizingLesson 154 — Absolute Units: px, pt, cm, mm, inLesson 326 — Defining Grid Rows with grid-template-rows
- Preconnect
- Establish full connections to servers
- Lesson 1961 — Understanding Resource Hints OverviewLesson 1963 — Preconnect for Early ConnectionsLesson 1964 — Prefetch for Future Navigation
- Predictable behavior
- Components work reliably regardless of the page they're used on
- Lesson 2459 — What is Shadow DOM and Why It Exists
- Prefer allowlisting
- If possible, map user input to predefined safe values rather than direct insertion
- Lesson 2900 — CSS Context Encoding
- Prefer instead
- `transform: translateX()`, `scale()`, `rotate()`.
- Lesson 539 — Transform Performance Best Practices
- Prefer min-width (mobile-first)
- in most cases—it aligns with progressive enhancement, performs better on mobile devices (which load the base styles first), and matches how most users browse today.
- Lesson 392 — min-width vs max-width Strategies
- Preference persistence
- Reload the page—your choices should be remembered without re-prompting
- Lesson 2974 — Testing and Auditing Cookie Consent
- Prefetch
- Resources for likely next pages (like search results or product details)
- Lesson 88 — Preloading and Resource HintsLesson 1421 — Prefetching and Preloading ChunksLesson 1945 — Prefetching and Preloading Split ChunksLesson 1961 — Understanding Resource Hints OverviewLesson 1964 — Prefetch for Future Navigation
- Preload
- Critical fonts, hero images, or above-the-fold CSS
- Lesson 88 — Preloading and Resource HintsLesson 1293 — Understanding Font Loading and Critical Rendering PathLesson 1421 — Prefetching and Preloading ChunksLesson 1945 — Prefetching and Preloading Split ChunksLesson 1961 — Understanding Resource Hints OverviewLesson 1964 — Prefetch for Future NavigationLesson 1967 — Preload Fonts Without FOIT
- Preload + `fallback`
- Middle ground with brief invisible period
- Lesson 1300 — Preload with font-display Strategies
- Preload + `optional`
- Fast load, but font might not appear if preload fails (for non-critical fonts)
- Lesson 1300 — Preload with font-display Strategies
- Preload + `swap`
- Fast load, always visible text (most common)
- Lesson 1300 — Preload with font-display Strategies
- Preload critical fonts
- Use `<link rel="preload">` for above-the-fold fonts only
- Lesson 572 — Web Font Best Practices Checklist
- Preload fonts that are
- Lesson 1295 — When to Preload Fonts vs When Not To
- Preload tells the browser
- "Download this resource NOW—you'll need it on this page very soon.
- Lesson 1965 — Preload for Critical Resources
- Preprocessor variables
- are replaced during build time and don't exist in the final CSS
- Lesson 467 — What are CSS Custom Properties?Lesson 477 — Custom Properties vs Preprocessor Variables
- Prerender.io
- , **Rendertron**, and **react-snap** (for React apps).
- Lesson 1880 — Static Pre-Rendering Solutions
- Presentation delay
- – browser painting the update
- Lesson 1894 — Interaction to Next Paint (INP) as FID Successor
- Presentational images
- created with CSS or font icons
- Lesson 1023 — aria-hidden: Removing from Accessibility Tree
- Preserve context
- – Optionally save the current URL so users can return after re-authenticating
- Lesson 1610 — Handling Failed Refresh Attempts
- Preserve log
- is a DevTools setting that maintains console output across page loads, redirects, and refreshes.
- Lesson 2195 — Preserving Log and Console Settings
- Preserve User Data
- Lesson 1670 — Fallback UI Design Patterns
- Preset devices
- Test common devices (iPhone SE, iPad, large desktop)
- Lesson 404 — Testing Media Queries Across Devices
- Pressed Button State
- Lesson 204 — Inset Shadows
- Prettier extension
- Formats your code on save (integrates with your Prettier configuration)
- Lesson 1462 — VS Code Extensions for Web Development
- Prevent accidental triggers
- (users brushing past a hover area)
- Lesson 506 — The transition-delay Property
- Prevent default validation UI
- using `novalidate` on your form (or handle it programmatically)
- Lesson 917 — Custom Error Message Display
- Prevent Performance Regression
- Without budgets, websites naturally get slower.
- Lesson 1930 — Why Performance Budgets Matter
- Preventing default behavior
- so arrow keys don't scroll the page
- Lesson 1079 — Grid Navigation Patterns
- Preventing Form Submission
- Lesson 724 — preventDefault() MethodLesson 753 — event.preventDefault(): Canceling Default Behavior
- Prevents naming collisions
- IDs and class names inside Shadow DOM won't conflict with the outside
- Lesson 2459 — What is Shadow DOM and Why It Exists
- Prevents Problematic Patterns
- Lesson 1424 — What is ESLint and Why Use It
- Preview
- and **Response** tabs let you inspect images, JSON data, HTML, and other content types right where you are.
- Lesson 2201 — Response Preview and Content Inspection
- Preview tab
- Shows a formatted, human-friendly version of the response.
- Lesson 2201 — Response Preview and Content Inspection
- Preview/Response
- The actual message content (often JSON)
- Lesson 2206 — WebSocket and EventSource Inspection
- Previous sibling
- If it was the last item, focus the previous one
- Lesson 1088 — Moving Focus After Element Removal
- Primary key path
- Shows which property serves as the key
- Lesson 2235 — IndexedDB Inspection and Debugging
- Primary metric
- The main thing you care about (conversion rate, revenue per user, signup completions)
- Lesson 2825 — A/B Testing Fundamentals
- Primitives
- strings, numbers, booleans, `null`, `undefined`
- Lesson 2088 — Structured Clone Algorithm and Data Transfer
- Prioritize what matters most
- Load critical widgets (like chat support on a pricing page) with higher priority, while deferring social sharing buttons that users rarely interact with.
- Lesson 2836 — Managing Multiple Embed Scripts
- Priority Column
- Verify that `preload` resources show "Highest" or "High" priority and start downloading earlier in the waterfall.
- Lesson 1972 — Measuring Resource Hint Impact
- Privacy
- No third-party tracking; user data stays on your domain
- Lesson 561 — Self-Hosting vs. Font ServicesLesson 2051 — Self-Hosting Third-Party Resources
- Privacy compliance
- Many third-party services collect user data.
- Lesson 2209 — Tracking Third-Party Requests
- Privacy-first
- No tracking until user consents by clicking
- Lesson 2837 — Privacy-Friendly Embed Alternatives
- Private error monitoring services
- Upload source maps to services like Sentry or Rollbar, which apply them server-side to stack traces without exposing them to end users.
- Lesson 2282 — Production Source Maps: Security and Privacy
- private key
- (for RSA algorithms like RS256).
- Lesson 1591 — Never Verify JWTs in the FrontendLesson 2348 — VAPID Keys and Application Server Keys
- Pro tip
- Stick with `deg` for precision and `turn` for clarity.
- Lesson 163 — Angle Units: deg, rad, grad, turnLesson 2197 — Recording and Filtering Network Activity
- Processing time
- – executing event handlers
- Lesson 1894 — Interaction to Next Paint (INP) as FID Successor
- Product catalogs
- Medium intervals (5-15 minutes) balancing freshness and build costs
- Lesson 1796 — Configuring Revalidation Intervals
- Product inventory
- Every 300 seconds/5 minutes (balance between freshness and server load)
- Lesson 1802 — Content Freshness vs Build Time Trade-offs
- Product listing page
- Lesson 1143 — Context-Dependent Alt Text
- Product listings
- Pre-rendered grid, client-side inventory/pricing updates
- Lesson 1778 — Hybrid Approaches
- production
- .
- Lesson 616 — Development vs Production BuildsLesson 2280 — Generating Source Maps in Build Tools
- Production builds
- measure the time to generate optimized, deployment-ready files.
- Lesson 1405 — Comparing Build Times
- Production configuration
- Lesson 1349 — Naming Hash Configuration
- Professional brands
- should be direct: "This action requires admin permissions.
- Lesson 1684 — Tone and Voice in Error Messages
- Professional polish
- Custom typography elevates your design from generic to memorable
- Lesson 558 — Introduction to Web Fonts
- Profiling or automated decision-making
- Lesson 2960 — Legitimate Interest vs Consent
- Programmatic uploads
- Sending files obtained through JavaScript APIs (camera, drag-and-drop)
- Lesson 892 — Creating FormData Without Forms
- Progress updates
- Announcing "1% complete, 2% complete, 3% complete.
- Lesson 1124 — Avoiding Announcement Spam
- Progressive disclosure
- Introduce advanced features gradually, not all at once
- Lesson 2346 — Permission Best Practices and Timing
- Progressive encoding
- saves the image in multiple passes at increasing quality levels.
- Lesson 2005 — Progressive vs Baseline Encoding
- Progressive Enhancement
- aim to make websites work for everyone, but they approach the problem from opposite directions.
- Lesson 43 — Graceful Degradation vs Progressive EnhancementLesson 386 — Mobile Performance ConsiderationsLesson 456 — Browser Support and Progressive EnhancementLesson 471 — Fallback Values in var()Lesson 1752 — Islands ArchitectureLesson 1754 — Streaming SSR and HydrationLesson 2015 — Type Attribute for Modern Image FormatsLesson 2457 — Upgrading and Progressive Enhancement
- Progressive enhancement validation
- Block JavaScript files to confirm your baseline HTML/CSS experience still works.
- Lesson 2204 — Blocking Requests
- Progressive hydration
- Hydrate visible components first
- Lesson 1739 — Hydration TimeLesson 1751 — Progressive Hydration
- Progressive rendering
- Browsers can paint content as soon as HTML chunks arrive, before JavaScript loads or executes
- Lesson 1737 — Speed Index
- Progressive Web Apps (PWAs)
- storing user-generated content
- Lesson 782 — What is IndexedDB and When to Use ItLesson 809 — What is the Cache API and Why It Matters
- Project-specific accessibility
- Custom ARIA requirements for your design system
- Lesson 1451 — Custom HTML Linting Rules
- Prominent Placement
- Position social login buttons above or alongside traditional email/password forms—never bury them.
- Lesson 1624 — Social Login UI Patterns
- Promise
- that resolves to a `Cache` object:
- Lesson 810 — Opening and Creating Cache StorageLesson 827 — Fetch API Fundamentals and Basic GET RequestsLesson 856 — Response Body MethodsLesson 1940 — Static vs Dynamic ImportsLesson 2358 — Prompt User Choice Handling
- Promise rejects
- Sync failed—browser will automatically retry later
- Lesson 2338 — Sync Event Lifecycle and Timing
- Promise resolves
- Sync completed successfully—browser won't retry
- Lesson 2338 — Sync Event Lifecycle and Timing
- Prompt Impressions
- Log every time your custom install button appears or `beforeinstallprompt` fires.
- Lesson 2361 — Install Analytics and Metrics
- Proper form state preservation
- means saving entered data, validation results, and the user's position in multi-step forms before updating the interface language.
- Lesson 2512 — Handling Language Change in Forms
- Proper landmark regions
- (`<header>`, `<nav>`, `<main>`, `<footer>`) for screen reader navigation
- Lesson 1071 — Skip Links vs Landmarks
- Properly implement token patterns
- Include CSRF tokens in forms and AJAX requests
- Lesson 2907 — What is CSRF and Why Frontend Matters
- properties
- on those element objects.
- Lesson 668 — Attributes in the DOMLesson 2445 — Defining a Custom Element Class
- Property Rules
- ensure you're using valid CSS properties correctly.
- Lesson 1439 — Common Stylelint Rules
- Proposal Stage
- Lesson 36 — Browser Vendors and the Standards Process
- Pros
- Saves screen space, handles long menus
- Lesson 383 — Mobile Navigation PatternsLesson 403 — Organizing Media Queries in CSSLesson 1570 — Session Storage and ManagementLesson 1584 — Where to Store JWTs: localStorage vs sessionStorageLesson 1704 — Polling vs Event-Driven DetectionLesson 1915 — Synthetic vs Real User Monitoring (RUM)Lesson 2528 — Translation File Formats and StructureLesson 2820 — Client-Side vs Server-Side Feature Flags
- Protocol
- = delivery method (standard mail vs.
- Lesson 5 — What is a URL?Lesson 778 — Security and Same-Origin PolicyLesson 860 — What is CORS and Why It Exists
- prove
- your component works accessibly with just semantic HTML.
- Lesson 1038 — Testing Without ARIA FirstLesson 2916 — Testing CSRF Protection
- Provide context
- If possible, explain *why* it might be missing ("This post may have been deleted" or "That user doesn't exist").
- Lesson 1681 — Not Found and Resource Errors
- Provide instant feedback
- on `:active` states (no transition needed for clicks)
- Lesson 512 — Common Transition Patterns and Best Practices
- Provide meaningful `alt` text
- This helps both accessibility and search indexing, as search engines use alt text to understand image content.
- Lesson 1257 — Lazy Loading and SEO Considerations
- Provide visual feedback
- on user interactions (hover, focus, active states)
- Lesson 501 — Introduction to CSS Transitions
- Providing context
- is crucial—include screenshots, character limits, and notes about where text appears.
- Lesson 2537 — Collaboration with Translators and Translation Services
- Providing metadata
- Information like last modification date helps crawlers prioritize fresh content
- Lesson 1869 — What is a Sitemap and Why It Matters
- Pseudonymous tracking
- uses identifiers that don't directly reveal a person's name but still uniquely identify them — like a customer number, session ID, or cookie token.
- Lesson 2980 — Anonymous vs Pseudonymous Tracking
- Public key
- Shared with the browser during subscription—it's safe to expose
- Lesson 2348 — VAPID Keys and Application Server Keys
- Public-facing SPA (low-sensitivity data)
- Lesson 1603 — Token Storage Best Practices by Use Case
- Public-facing websites
- where users share links across different language communities
- Lesson 2540 — Content Negotiation vs Explicit URLs
- Publish to npm
- Your component library becomes a standard JavaScript package
- Lesson 2487 — Design System Distribution
- Pull CDNs
- (most common) automatically fetch files from your origin server when first requested.
- Lesson 2160 — CDN Configuration Basics
- Purchase a domain
- from a registrar (like Namecheap, Google Domains)
- Lesson 1812 — Custom Domains and DNS
- PurgeCSS
- (now built into Tailwind's content configuration), unused utilities are stripped out.
- Lesson 659 — Performance Implications of Utility-First CSSLesson 1419 — Tree Shaking CSSLesson 1976 — Critical CSS Extraction Tools
- Purging/Content Configuration
- is your first line of defense.
- Lesson 643 — Performance Considerations with Variants
- Purple bars
- Layout and reflow calculations
- Lesson 1994 — Profiling Main-Thread Performance with Chrome DevToolsLesson 2212 — Reading the Timeline: Main Thread Activity
- Purple clusters after yellow
- JavaScript forcing expensive layout recalculations (layout thrashing)
- Lesson 1917 — Reading Performance Flame Charts
- purpose
- and **main takeaway** of the visualization.
- Lesson 1144 — Alt Text for Charts and GraphsLesson 2972 — Cookie Policy Pages and Transparency
- Purpose limitation
- Only collect data you actually need for stated purposes
- Lesson 2975 — Understanding Ethical vs Invasive TrackingLesson 2979 — Minimizing Data Collection
- Push CDNs
- require you to manually upload files to the CDN servers ahead of time.
- Lesson 2160 — CDN Configuration Basics
- Pushing items apart
- Lesson 289 — margin: auto for Item PositioningLesson 300 — Auto-Margins for Spacing
- PUT
- Replace an entire resource
- Lesson 833 — Handling Different HTTP Methods: PUT, PATCH, DELETELesson 1691 — Idempotent Request Design
- PWA
- (Progressive Web App) evaluates whether your site meets the criteria for installability and offline functionality.
- Lesson 2223 — What Lighthouse Measures and Why It MattersLesson 2366 — Development and Maintenance Costs
- PWAs
- must load HTML, CSS, and JavaScript before rendering, even with aggressive caching.
- Lesson 2365 — Performance CharacteristicsLesson 2368 — Offline Capabilities Comparison
Q
- Queries
- can execute in parallel (order doesn't matter when just reading)
- Lesson 1538 — Understanding GraphQL MutationsLesson 1546 — REST's Resource-Centric Model vs GraphQL's Query-Centric Model
- Query complexity
- refers to calculating a "cost" for each query based on the fields requested and their relationships.
- Lesson 1544 — Query Complexity and Depth Limiting
- Query parameters
- = special delivery instructions
- Lesson 5 — What is a URL?Lesson 2538 — URL Structure Patterns for i18n
- query string
- .
- Lesson 947 — Reading Query Strings ManuallyLesson 965 — Updating the URL with pushState and replaceState
- Query upload state
- – Before resuming, ask the server: "Which chunks do you have?
- Lesson 2718 — Resumable Upload Pattern
- Queueing
- (light gray): waiting for an available connection
- Lesson 2198 — Understanding the Request Waterfall
- Quick debugging
- without writing full `if` statements
- Lesson 2192 — Console.assert() for Runtime Checks
- Quick feedback
- `150ms` to `300ms` (feels snappy and responsive)
- Lesson 503 — The transition-duration Property
- Quick iteration is critical
- – Updates deploy instantly without app store review delays
- Lesson 2370 — When to Choose PWA vs Native
- Quick prototypes
- When rapidly sketching ideas, physical properties are faster and more familiar.
- Lesson 465 — When to Use Logical vs Physical Properties
- Quick prototyping
- Testing CSP policies before configuring the server
- Lesson 2876 — CSP Meta Tag Alternative
- Quirks mode
- Mimics old, buggy behavior from the 1990s for backward compatibility
- Lesson 79 — The Document Type Declaration
- Quota
- The maximum allowed storage (varies by device, available disk space, and browser)
- Lesson 2241 — Storage Quota and Usage Analysis
- Quotes
- The `quotes` rule can enforce `"single"`, `"double"`, or `"backtick"` quotes throughout your code.
- Lesson 1431 — Rule Options and CustomizationLesson 2874 — CSP Header Format and Syntax
- Qwik
- Resumability instead of hydration—serializes application state, avoiding replay entirely
- Lesson 1755 — Hydration in Different Frameworks
R
- Radio buttons
- Users can select *only one* option from a group (like choosing a shirt size: S, M, or L)
- Lesson 96 — Checkbox and Radio InputsLesson 897 — The required Attribute
- Range
- The span of your output visual property (`[0, 400]`)
- Lesson 2630 — Scales: Mapping Data to Visual Properties
- Rapid data refreshes
- Auto-updating feeds that change every second
- Lesson 1124 — Avoiding Announcement Spam
- Rapid development
- of standard charts (bar, line, pie)
- Lesson 2642 — D3 vs Higher-Level Charting Libraries
- Rapid Iteration and Ecosystem
- Lesson 2490 — When NOT to Use Web Components
- Rapid prototyping
- or development environments where speed matters more than production-grade security
- Lesson 2887 — unsafe-inline Tradeoffs
- Rapidly Evolving Products
- Lesson 1555 — When GraphQL Shines
- Rarely-used features
- Heavy functionality that could load on-demand
- Lesson 1949 — Analyzing Bundle Size and Split Points
- Raster images
- are made of a fixed grid of colored pixels, like a mosaic or digital photograph.
- Lesson 1239 — Understanding Raster vs Vector Image Formats
- Rate limiting information
- (like `X-RateLimit-Remaining`)
- Lesson 1504 — Custom Headers and API Conventions
- Raw Content
- Lesson 1375 — Importing Assets in Vite
- RDFa
- (Resource Description Framework in Attributes) is similar but uses different attributes like `vocab`, `typeof`, and `property`.
- Lesson 1855 — JSON-LD vs Microdata vs RDFa
- Re-import
- into DevTools by dragging the file onto the Network panel
- Lesson 2210 — Export and Analyze HAR Files
- Re-measure when content changes
- (like images loading or text expanding)
- Lesson 2101 — Variable-Height Item Virtualization
- React projects
- naturally pair well with CSS Modules or CSS-in-JS.
- Lesson 603 — Choosing an Architecture for Your Project
- React/JSX
- ESLint with `eslint-plugin-react` parses JSX as JavaScript
- Lesson 1450 — Linting HTML in Templates and Components
- Read current cell
- Screen reader announces the cell content plus associated headers
- Lesson 1108 — Table Navigation and Testing
- Read Current Line
- Insert + Up arrow tells you where you are
- Lesson 1103 — Basic Screen Reader Navigation Commands
- Read error messages
- that reference your source files and line numbers
- Lesson 2283 — Debugging with Source Maps in DevTools
- Read Page Title
- Insert + T announces the current page title
- Lesson 1103 — Basic Screen Reader Navigation Commands
- Read the user's role
- from your auth state (token payload, context, or store)
- Lesson 1631 — Route Protection with Role Checks
- Read your `.eslintrc` configuration
- to understand your project's rules
- Lesson 1464 — Inline Error Highlighting with ESLint
- Readable code
- `tomato` is easier to understand than `#FF6347`
- Lesson 180 — Color Keywords and Named ColorsLesson 1393 — Development vs Production Mode
- ReadableStream
- that delivers data in chunks as it arrives.
- Lesson 839 — Streaming Response Bodies with ReadableStream
- Reads all CSS sources
- (external files, `<style>` tags, inline styles)
- Lesson 22 — Parsing CSS into the CSSOM
- Reads your source files
- components, data sources, markdown files, API responses
- Lesson 1722 — The SSG Build and Delivery Process
- Real devices
- Verify on actual hardware when available
- Lesson 404 — Testing Media Queries Across Devices
- Real User Context
- Errors include browser details, user actions, network conditions, and custom data you attach.
- Lesson 2809 — Why Client-Side Error Tracking Matters
- Real User Monitoring (RUM)
- tools capture hydration performance from actual users' devices, revealing issues that synthetic tests miss—especially on lower-end hardware where hydration costs multiply.
- Lesson 1756 — Measuring Hydration Performance
- Real-Time (Sparingly)
- For critical constraints (like password strength or username availability), provide live feedback— but after a brief delay to avoid jarring updates on every keystroke.
- Lesson 1683 — Error Message Placement and Timing
- Real-Time Collaboration Features
- Lesson 1555 — When GraphQL Shines
- Real-time data
- → Use SSR or CSR to fetch fresh data on each request
- Lesson 1777 — Limitations of Pure SSG
- Real-time state changes
- Live regions that announce updates without disrupting user focus
- Lesson 1036 — ARIA for Application-Like Interfaces
- Real-world example
- Don't mark up product prices that differ from what's actually displayed, or include fake reviews that don't exist on your page.
- Lesson 1868 — Structured Data Best Practices and Common Mistakes
- Reality
- Building accessibility in from the start costs far less than retrofitting later.
- Lesson 995 — Common Accessibility Myths and Misconceptions
- Reassemble server-side
- The server concatenates chunks in order once all arrive
- Lesson 2717 — Chunked Upload for Large Files
- Rec2020
- (even wider) and **Lab/LCH** (perceptually uniform color spaces).
- Lesson 491 — Understanding Color Spaces: sRGB, Display-P3, and Beyond
- Receive
- The server sends back files—HTML, CSS, JavaScript, images—as the response
- Lesson 16 — What is a Web Browser?
- Recent updates look suspicious
- (sudden major version jump, new maintainer)
- Lesson 2947 — Reviewing Package Source Code
- Recessed Input Fields
- Lesson 204 — Inset Shadows
- Recharts
- is React-native and composable, using SVG and a declarative component API.
- Lesson 2643 — Overview of Popular Charting LibrariesLesson 2649 — Updating Charts with Live Data
- Record
- button (circle icon)
- Lesson 546 — Measuring Animation PerformanceLesson 1916 — Chrome DevTools Performance Panel BasicsLesson 1994 — Profiling Main-Thread Performance with Chrome DevToolsLesson 2053 — Measuring Third-Party Script ImpactLesson 2211 — Performance Panel Overview and Recording
- Recovery Actions
- Lesson 1670 — Fallback UI Design Patterns
- Red (error)
- is for rules that catch bugs or enforce critical team standards.
- Lesson 1430 — Rules: Errors, Warnings, and Off
- Red triangles
- in the corner of tasks—these mark long tasks over 50ms
- Lesson 2057 — Identifying Main-Thread Blocking
- Redirect to login
- – Send the user back to the login page
- Lesson 1610 — Handling Failed Refresh AttemptsLesson 1657 — Understanding 401 Unauthorized
- Reduce data points
- Show every 5th point instead of every point in a line chart when width drops below 600px.
- Lesson 2657 — Breakpoint-Based Chart Simplification
- Reduce initial parse time
- – Less JavaScript means faster parsing
- Lesson 1991 — Optimizing JavaScript Execution with Code Splitting
- Reduce unnecessary elements
- If you're plotting 10,000 data points in a line chart, consider:
- Lesson 2612 — SVG Performance Considerations
- Reduced bandwidth consumption
- (one compressed file is smaller than six separate ones combined)
- Lesson 579 — Variable Font Performance Benefits
- Reduced bandwidth costs
- – Less data transferred over the network
- Lesson 1478 — Cacheability ConstraintLesson 2156 — What is a CDN and Why Use One
- Reduced confusion
- Hide admin menus from regular users
- Lesson 1638 — Security Considerations for Frontend Authorization
- Reduced layout thrashing
- Batches DOM reads/writes automatically
- Lesson 2546 — GSAP Overview and Why Use It
- Reduced legal risk
- from compliance violations
- Lesson 2982 — Building Trust Through Privacy-First Design
- Reduced network hops
- Fewer routers between user and content means lower latency
- Lesson 2157 — CDN Performance Benefits
- Reduces Boilerplate
- Instead of writing dozens of lines to implement a cache-first strategy with cache expiration, Workbox condenses this into a few lines of configuration.
- Lesson 2404 — What is Workbox and Why Use It
- Reduces initial page weight
- Only critical resources load first
- Lesson 1951 — What is Lazy Loading and Why It Matters
- Redundancy and uptime
- If one CDN goes down, traffic automatically routes to another.
- Lesson 2164 — Multi-CDN Strategies
- Redundant Labels
- If you're tempted to add visually hidden text that simply repeats what's already on screen, stop.
- Lesson 1135 — When NOT to Use Visually Hidden Content
- Refetching
- means manually triggering a fresh data fetch, usually in response to user actions like pulling to refresh or clicking a reload button.
- Lesson 1563 — Polling and Refetching
- Reflecting
- means writing code to keep them in harmony.
- Lesson 2456 — Reflecting Properties to Attributes
- Reflow
- happens when the layout needs to be recalculated.
- Lesson 24 — Layout and ReflowLesson 541 — Properties That Trigger ReflowLesson 673 — DOM Performance ConsiderationsLesson 2612 — SVG Performance Considerations
- Refresh periodically
- (revalidation): Update all meals regularly to keep them fresh
- Lesson 1799 — ISR with Dynamic Routes
- refresh token
- in an HttpOnly cookie (survives refresh, protected from XSS)
- Lesson 1599 — Token Storage in Single-Page ApplicationsLesson 1600 — Refresh Token Storage StrategyLesson 1605 — Why Refresh Tokens ExistLesson 2923 — Token Expiration and Automatic Renewal
- Refresh token revocation
- means maintaining a server-side record of which refresh tokens are still valid, then actively invalidating them when needed.
- Lesson 1613 — Refresh Token Revocation
- Refresh token rotation
- Revoke the refresh token server-side while letting short-lived access tokens expire naturally
- Lesson 1574 — Session Invalidation and Logout
- Region + Language Picker
- Lesson 2506 — Language Switching UI Patterns
- registered axes
- (standardized four-letter codes) and sometimes **custom axes** (defined by the font designer).
- Lesson 575 — The font-variation-settings PropertyLesson 1288 — Variable Font Axes
- Registering
- is the critical step that connects your JavaScript class to an HTML tag name, making it usable throughout your application.
- Lesson 2446 — Registering Custom Elements
- Registration
- You pass a third argument `{ extends: 'button' }` to tell the browser which native element you're customizing
- Lesson 2453 — Extending Built-in Elements
- Registration details
- Scope, update cycle timing, and source file location
- Lesson 2322 — Testing Service Workers Locally
- Registration status
- Whether the worker is installing, waiting, or active
- Lesson 2238 — Service Worker Registration and Lifecycle
- Rejected categories
- Confirm cookies remain blocked, scripts don't load
- Lesson 2974 — Testing and Auditing Cookie Consent
- Related action
- Focus an "Add New" button or return to a main control
- Lesson 1088 — Moving Focus After Element Removal
- Related content sections
- need organization (like product details: "Description," "Reviews," "Specifications")
- Lesson 1175 — Tabs Pattern Overview and When to Use Them
- Relationships
- `aria-controls` linking tabs to their panels, `aria-labelledby` connecting panels to tabs
- Lesson 1032 — ARIA for Complex Interactive WidgetsLesson 1368 — Theme Documentation and Design Tokens
- Relative dates
- Lesson 1007 — Time Element for Dates and Durations
- Release
- When you scroll back up past its original position
- Lesson 222 — Sticky Positioning Fundamentals
- Reliability
- No external downtime affects you
- Lesson 2051 — Self-Hosting Third-Party ResourcesLesson 2333 — What is Background Sync and Why It MattersLesson 2368 — Offline Capabilities Comparison
- Reliable
- If a server crashes, another can pick up without losing context
- Lesson 1473 — Statelessness in REST APIs
- Reload recording
- captures the entire page load:
- Lesson 2211 — Performance Panel Overview and Recording
- Rely on landmarks when
- Lesson 1071 — Skip Links vs Landmarks
- Remains completely invisible
- to sighted users (no screen space, no visual clutter)
- Lesson 1126 — Why Visually Hidden Content Matters
- Remote Network Debugging
- Lesson 2290 — Remote Debugging
- Remove disabled attributes
- from DOM elements
- Lesson 1648 — Client-Side Permission Security Limitations
- Remove editor metadata
- – design tools add unnecessary comments and hidden layers
- Lesson 2001 — SVG for Vector Graphics
- Removing borders/padding
- from containers that should collapse when empty
- Lesson 453 — :empty for Conditional Content Display
- Removing elements
- Right-click any element and select "Delete element" (or press Delete/Backspace after selecting).
- Lesson 2178 — Adding and Removing Elements
- Render Times
- How long React/Vue components take to paint
- Lesson 2816 — Performance Monitoring Integration
- Render-blocking resources
- delaying First Contentful Paint
- Lesson 2222 — Performance Insights and Recommendations
- Renderer Process
- The chef—draws and displays web page content (one per tab usually)
- Lesson 17 — Browser Architecture Overview
- Rendering queue
- Pages requiring JavaScript execution get added to a separate queue for later rendering
- Lesson 1878 — Googlebot's JavaScript Rendering
- Reordering lists
- Lesson 2570 — Layout Animations with layout Prop
- repaint
- the pixels on screen.
- Lesson 542 — Properties That Trigger RepaintLesson 673 — DOM Performance Considerations
- Repeat visitors benefit
- First-time visitors see system fonts; returning visitors get the custom font (because it's cached)
- Lesson 1276 — font-display: optional Strategy
- Replace content
- Use JavaScript to iterate through elements with text or `data-i18n` attributes and swap their content with translations
- Lesson 2509 — Changing Language Without Page Reload
- Replace custom expiration logic
- Any code checking cache timestamps or entry counts can be eliminated.
- Lesson 2415 — Migration from Manual Service Workers
- Replace placeholder
- Swap the placeholder with the real widget once loaded
- Lesson 2799 — Lazy Loading Third-Party Widgets
- Replace width percentages
- with `flex: 1` (Flexbox) or `grid-template-columns` (Grid)
- Lesson 244 — Migrating from Float Layouts
- Report-Only doesn't override enforcing
- `Content-Security-Policy-Report-Only` runs alongside enforcing policies but never relaxes them.
- Lesson 2878 — CSP Header Precedence Rules
- report-only mode
- to monitor what *would* break if enforced.
- Lesson 2871 — Running Enforcing and Report-Only Policies SimultaneouslyLesson 2880 — CSP Headers in Development vs Production
- Reporting API
- , which provides a standardized, structured way to collect all kinds of browser reports—not just CSP violations, but also deprecation warnings, network errors, and more.
- Lesson 2869 — The report-to Directive
- Reproduction strategies
- are systematic techniques to bridge this gap and make bugs appear in your controlled development space.
- Lesson 2288 — Reproduction Strategies
- Request Headers
- Look for `Access-Control-Request-Method` and `Access-Control-Request-Headers` to see what your browser is asking permission for
- Lesson 869 — Debugging CORS IssuesLesson 2207 — Cache Behavior and Validation
- Request modification
- might add authentication headers or query parameters before fetching.
- Lesson 2412 — Custom Plugins and Middleware
- Request parental email
- to initiate a consent flow
- Lesson 2961 — Children's Privacy and Age Verification
- Request table columns
- Each row is one network request.
- Lesson 2196 — Network Panel Overview and Interface
- Request time
- When a user visits, they receive the ready-made HTML file immediately—no server processing needed
- Lesson 1721 — What is Static Site Generation (SSG)?
- Request Timing Breakdown
- reveals the hidden stages every HTTP request passes through, from the moment your browser decides to fetch a resource until the last byte arrives.
- Lesson 2200 — Request Timing Breakdown
- Request transformation
- Rewrite URLs, add security headers, resize images on-the-fly, or block malicious requests—all without touching your backend.
- Lesson 2163 — CDN Edge Functions and Workers
- Request-Response Cycle
- happens between your browser and a web server.
- Lesson 10 — What is a Web Server?Lesson 20 — The Critical Rendering Path
- Request/Response pairs
- the cache remembers both what was asked for (the URL/request) and what came back (the response with headers and body).
- Lesson 811 — Adding Resources to the Cache
- required
- (non-nullable).
- Lesson 1521 — Schema Definition Language (SDL)Lesson 2012 — Art Direction with the Picture Element
- Required attributes
- Lesson 86 — Linking External Stylesheets
- Required fields are announced
- The `required` attribute or `aria-required` should be communicated
- Lesson 1106 — Forms Mode and Input Testing
- Required values
- You *must* include `font-size` and `font-family`, in that order.
- Lesson 179 — The Font Shorthand Property
- Reserve space
- before images load, preventing layout shift
- Lesson 1261 — Understanding Aspect Ratio in Web Design
- Resize your browser viewport
- (make it narrower or wider)
- Lesson 429 — Testing Responsive Image Delivery
- resolution switching
- serving appropriately sized images based on the viewing context.
- Lesson 1212 — The Resolution Switching ProblemLesson 1227 — Understanding Art Direction in Responsive ImagesLesson 2007 — Responsive Images: Why Resolution Switching Matters
- Resolution-independent
- Scales perfectly at any size
- Lesson 2601 — SVG Fundamentals for Data Visualization
- Resource Request
- When your page tries to load a script, style, image, or other resource, the browser checks it against the policy
- Lesson 2840 — How CSP Works in Browsers
- Resource-level permissions
- check if a user has access to a **specific** resource, like "Can this user edit *this particular* post?
- Lesson 1645 — Resource-Level Permissions
- resources
- (users, posts, products) identified by URLs.
- Lesson 1470 — What is REST and Why It MattersLesson 1546 — REST's Resource-Centric Model vs GraphQL's Query-Centric ModelLesson 2840 — How CSP Works in Browsers
- Respect `prefers-reduced-motion`
- This CSS media query detects if users have requested reduced motion in their operating system settings.
- Lesson 1185 — Animated Transitions and Accessibility
- Respect SameSite cookie attributes
- Understand how `SameSite=Strict` or `SameSite=Lax` prevents cookies from cross-site requests
- Lesson 2907 — What is CSRF and Why Frontend Matters
- Respect the box model
- their total height includes content, padding, border, and margin
- Lesson 208 — Block-Level Elements in Normal Flow
- Respects white space
- Spaces, tabs, and line breaks in your HTML between inline elements become visible spaces in the rendered layout.
- Lesson 209 — Inline Elements in Normal Flow
- Respond to events
- Detect clicks, key presses, mouse movements, and other user actions
- Lesson 41 — JavaScript's Role: Adding Interactivity
- response
- is the prepared meal delivered to your table
- Lesson 10 — What is a Web Server?Lesson 2201 — Response Preview and Content Inspection
- Response Body
- Often the complete representation of the created resource, including server-generated fields like `id` and `createdAt`
- Lesson 1484 — POST: Creating ResourcesLesson 2237 — Cache Storage Inspection
- Response filtering
- helps you avoid caching bad responses (like 404s or server errors).
- Lesson 2412 — Custom Plugins and Middleware
- Response handling
- – What happens immediately after the data arrives?
- Lesson 2261 — XHR/Fetch Breakpoints
- Response Headers
- Check if the server returned `Access-Control-Allow-Origin`, `Access-Control-Allow-Methods`, and `Access-Control-Allow-Headers`
- Lesson 869 — Debugging CORS IssuesLesson 2139 — Verifying Compression in DevToolsLesson 2207 — Cache Behavior and ValidationLesson 2237 — Cache Storage Inspection
- Response object
- .
- Lesson 828 — The Response Object: Properties and Status HandlingLesson 853 — Response Object Basics
- Response tab
- Shows the raw, unprocessed text exactly as the server sent it—useful when you need to see formatting, check whitespace, or copy exact content.
- Lesson 2201 — Response Preview and Content Inspection
- Response time guarantees
- that may require more powerful servers
- Lesson 1764 — Cost and Infrastructure Considerations
- Responsive behavior
- if you're using fluid typography with `clamp()`
- Lesson 594 — Documentation and Type Specimens
- Responsive spacing
- Lesson 479 — calc() for Dynamic Values
- Responsive-friendly
- Change `gap` at breakpoints without touching individual items
- Lesson 279 — gap: Modern Spacing Between Flex Items
- responsiveness
- (FID), and **stability** (CLS).
- Lesson 1888 — The Three Core Web Vitals: LCP, FID, and CLSLesson 1892 — First Input Delay (FID) FundamentalsLesson 1904 — First Input Delay (FID)
- REST APIs
- or **GraphQL** endpoints provided by the CMS
- Lesson 1781 — Headless CMS Integration Fundamentals
- REST-ish
- (or "HTTP APIs")—they use HTTP methods and resource-oriented URLs but skip the stricter requirements.
- Lesson 1481 — RESTful vs REST-ish APIs
- RESTful API
- implements all of REST's architectural constraints: statelessness, uniform interface, HATEOAS, resource-based URIs, proper HTTP method semantics, and self-descriptive messages.
- Lesson 1481 — RESTful vs REST-ish APIs
- Restoring focus
- to the triggering element when the modal closes
- Lesson 1050 — Focus Trapping in Modal Dialogs
- Restrict by authentication
- Host source maps behind authentication/authorization so only your team can access them.
- Lesson 2282 — Production Source Maps: Security and Privacy
- Restructure the DOM
- or **hide/show alternate markup** for the different pattern
- Lesson 1186 — Responsive Patterns: Tabs to Accordion
- Result
- Tab enters the group once, lands on the active item.
- Lesson 1074 — Roving tabindex PatternLesson 2208 — Identifying 304 Not Modified Responses
- Resumability
- takes a fundamentally different approach: it serializes everything the server knows—including event listeners, component state, and framework context—directly into the HTML.
- Lesson 1753 — Resumability vs. Hydration
- Resume capability
- If upload fails, restart from the last successful chunk
- Lesson 2717 — Chunked Upload for Large Files
- Resume operations gradually
- – Use exponential backoff for queued requests
- Lesson 1705 — Reconnection Strategies
- Retry the request
- – Attempt to reload after a delay (useful for temporary network issues)
- Lesson 2025 — Handling Failed Lazy Load Requests
- Return 404 Not Found
- the resource doesn't exist, so you can't delete it
- Lesson 1487 — DELETE: Removing Resources
- Return the cached response
- if found (instant, offline-capable)
- Lesson 2386 — Service Worker Cache API Fundamentals
- Return visitors
- Someone who's come back 3+ times clearly finds your app useful
- Lesson 2360 — Strategic Prompt Timing
- Reusability
- One stylesheet can style multiple pages consistently.
- Lesson 32 — CSS Standardization and the Separation of ConcernsLesson 651 — Plugin System Basics
- Reusable
- Same query structure, different values
- Lesson 1532 — Query Arguments and VariablesLesson 2553 — GSAP Timelines Basics
- Revalidate both
- Apply your revalidation interval to all pages, whether pre-rendered or generated on-demand
- Lesson 1799 — ISR with Dynamic Routes
- Review
- and **AggregateRating** schema markup that tells search engines exactly what people think about your product or service.
- Lesson 1863 — Review and Rating SchemaLesson 2537 — Collaboration with Translators and Translation Services
- Review changelogs
- Before updating, read the package's CHANGELOG or release notes to understand what changed and identify potential breaking changes.
- Lesson 2949 — Updating Dependencies Safely
- Review package metadata
- (author, download count, GitHub link)
- Lesson 2951 — Scoped Packages and Registry Security
- Reviewing nested data
- (though only one level deep displays well)
- Lesson 2188 — Console.table() for Structured Data
- Revocation
- Refresh tokens can be invalidated server-side (stored in a database), allowing immediate logout across all devices.
- Lesson 1605 — Why Refresh Tokens Exist
- Revoke All Consent
- Lesson 2964 — Privacy Settings Dashboard
- Revoked access
- – Your session was invalidated or token was revoked
- Lesson 1657 — Understanding 401 Unauthorized
- Rich Results Test
- shows you whether your page is eligible for rich results in Google Search (like star ratings, recipe cards, or event snippets).
- Lesson 1867 — Testing Structured Data
- Rich state management
- Complex client-side state without server round-trips
- Lesson 1760 — When CSR is Better
- Right Arrow
- keys instead of Up and Down.
- Lesson 1077 — Horizontal Navigation in ToolbarsLesson 1170 — Nested and Flyout MenusLesson 1178 — Keyboard Navigation in Tabs
- Right side
- Styles, Computed, Layout, and Event Listeners tabs for the selected element
- Lesson 2174 — Elements Panel Overview and Navigation
- Right to be forgotten
- Users can request data deletion
- Lesson 2780 — Privacy-First Analytics Philosophy
- Right to erasure
- Users can demand deletion of their personal information
- Lesson 2953 — Understanding GDPR and CCPA Fundamentals
- Right to know
- Users can request what data you've collected about them
- Lesson 2953 — Understanding GDPR and CCPA Fundamentals
- Right to opt-out
- Users can prevent the sale of their personal information (note: opt-**out**, not opt-in)
- Lesson 2953 — Understanding GDPR and CCPA Fundamentals
- Robots.txt validators
- verify proper directive formatting
- Lesson 1876 — Testing and Validating Sitemaps and Robots.txt
- Robust
- means content must work reliably across different technologies, especially assistive technologies like screen readers.
- Lesson 988 — The Four Principles of WCAG: POUR
- Role information
- Screen readers announce what something *is* (`<nav>` = "navigation landmark")
- Lesson 997 — Why Semantic HTML Matters for Accessibility
- Rollback on failure
- if the server rejects the file (validation error, network issue, etc.
- Lesson 2720 — Upload with Optimistic UI Updates
- Rollbar
- provide a small JavaScript snippet you add to your application.
- Lesson 2287 — Error Monitoring Services
- Rollup
- a powerful JavaScript bundler — to create highly optimized production assets.
- Lesson 1380 — Building for Production with ViteLesson 1386 — Vite vs Other Build ToolsLesson 1399 — The Modern Bundler LandscapeLesson 1406 — Plugin Ecosystems
- Route changes
- In single-page apps, restore focus after navigating back
- Lesson 1092 — Focus Restoration Patterns
- Route definitions
- A map of URLs to functions that render content
- Lesson 972 — Building a Client-Side Router with History API
- Route protection
- prevents this by intercepting navigation attempts and checking if the user's role permits access to that route — redirecting them away if they're unauthorized.
- Lesson 1631 — Route Protection with Role Checks
- Roving tabindex
- so only one cell is in the tab order at a time
- Lesson 1079 — Grid Navigation PatternsLesson 1203 — Toolbar Pattern
- roving tabindex pattern
- solves this by making only the *active* element in a group tabbable, while setting all others to `tabindex="-1"` (programmatically focusable, but not in the tab sequence).
- Lesson 1074 — Roving tabindex PatternLesson 1078 — Vertical Navigation in Menus
- row
- (horizontally, side by side).
- Lesson 269 — flex-direction: Row and Column LayoutsLesson 322 — Grid Auto-Flow: row, column, and dense
- row by row
- (the "row-dense" algorithm).
- Lesson 321 — Automatic Placement: How Grid Items FlowLesson 354 — grid-auto-flow Direction
- rows
- are visible (just like vertical scrolling), then for each visible row, calculate which **columns** are visible horizontally.
- Lesson 2103 — Virtual Grid LayoutsLesson 2188 — Console.table() for Structured Data
- RPC-style endpoints
- `/api/calculate` or `/api/sendEmail` instead of resource manipulation
- Lesson 1481 — RESTful vs REST-ish APIs
- Rule #1
- Never put passwords, credit card numbers, or personal identifying information in cookies.
- Lesson 807 — Cookie Security Best Practices
- Rule-based budgets
- enforce best practices and technical standards:
- Lesson 1931 — Types of Performance Budgets
- Run Prettier
- manually or on save (via editor integration)
- Lesson 1455 — Installing and Running Prettier
- Run the installer
- Choose "Install NVDA on this computer" (not just portable)
- Lesson 1101 — Setting Up NVDA on Windows
- Running the Audit
- Lesson 2224 — Running Lighthouse in Chrome DevTools
- Runtime cache everything else
- Lesson 2421 — Combining Precache and Runtime Cache
- Runtime caching
- is different—it caches resources *dynamically* as users request them during normal app usage.
- Lesson 2419 — Runtime Caching FundamentalsLesson 2420 — When to Use Each Strategy
- Runtime variables
- remain on the server and are evaluated when a request is made (only possible with SSR or serverless functions).
- Lesson 1811 — Environment Variables
- Russian
- changes based on whether a number ends in 1, 2-4, or other digits
- Lesson 2531 — Pluralization Rules Across Languages
S
- Safari
- ~5MB per origin (may prompt user for larger amounts)
- Lesson 772 — Storage Capacity and LimitsLesson 781 — Privacy Modes and StorageLesson 1055 — Default Browser Focus StylesLesson 1243 — AVIF: Next-Generation Image FormatLesson 1249 — Understanding Native Lazy Loading
- Safari (iOS)
- Lesson 2362 — Platform-Specific Install Patterns
- Safari (macOS)
- Lesson 2362 — Platform-Specific Install Patterns
- Safe hotfix process
- Lesson 2295 — Rollback and Hotfix Workflows
- Safe methods
- like `GET` and `HEAD` should only *read* data, never modify it.
- Lesson 2908 — State-Changing Requests and CSRF Risk
- Safelist
- lets you explicitly tell Tailwind to include specific classes that might be dynamically generated (like `bg-${color}-500` in JavaScript), preventing accidental purging.
- Lesson 643 — Performance Considerations with Variants
- Same browser/tool
- Stick with one measurement tool (Lighthouse, WebPageTest, etc.
- Lesson 1928 — Establishing Performance Baselines
- Same device profile
- Use the same CPU throttling and viewport size
- Lesson 1928 — Establishing Performance Baselines
- Same network throttling
- Always test with identical connection speeds (e.
- Lesson 1928 — Establishing Performance Baselines
- same origin
- (same protocol, domain, and port).
- Lesson 973 — History API Limitations and Edge CasesLesson 2853 — CSP Source Keywords: 'self', 'unsafe- inline', 'unsafe-eval'
- Same pages
- Test the same URLs in the same state (logged out, empty cart, etc.
- Lesson 1928 — Establishing Performance Baselines
- Same time of day
- Server load varies; test during typical conditions
- Lesson 1928 — Establishing Performance Baselines
- Same-origin only
- `form-action 'self'` (most restrictive, safest)
- Lesson 2851 — The form-action Directive
- same-origin policy
- is a critical security feature that restricts how web pages from different origins can access each other's data.
- Lesson 778 — Security and Same-Origin PolicyLesson 824 — Security and Privacy ConsiderationsLesson 860 — What is CORS and Why It ExistsLesson 2914 — Custom Request Headers as CSRF Defense
- SameSite Cookie Attribute
- Setting `SameSite=Strict` or `SameSite=Lax` tells browsers not to send cookies with cross-site requests, blocking CSRF attacks at the browser level.
- Lesson 1572 — CSRF Vulnerability in Cookie Auth
- SameSite=Lax
- (now browser default) is more permissive.
- Lesson 2920 — SameSite Cookie Attribute for CSRF Protection
- SameSite=None
- disables protection entirely (requires `Secure` flag).
- Lesson 2920 — SameSite Cookie Attribute for CSRF Protection
- Sampling
- is recording only a percentage of repetitive events (record every 10th car passing, not all 10,000).
- Lesson 2815 — Filtering and Sampling Errors
- Sanitization library
- Rich text where *some* HTML is needed
- Lesson 2903 — Safe Alternatives to Dangerous APIs
- Saturation
- is the intensity or vibrancy, expressed as a percentage:
- Lesson 183 — HSL and HSLA Functions
- Saves bandwidth
- Users on mobile or slow connections don't download unseen content
- Lesson 1951 — What is Lazy Loading and Why It Matters
- Scalability
- Without structure, adding new features becomes risky.
- Lesson 595 — Why CSS Architecture MattersLesson 1789 — Fallback Pages and On-Demand Generation
- Scalability Needs
- Lesson 1577 — Choosing the Right Authentication Strategy
- Scalable
- Stateless design means servers handle requests independently
- Lesson 1470 — What is REST and Why It MattersLesson 1473 — Statelessness in REST APIs
- Scalar Types
- Basic data types like `String`, `Int`, `Float`, `Boolean`, and `ID` (a unique identifier)
- Lesson 1520 — The GraphQL Type System
- Scale clarity
- Use numbers (100-900) or T-shirt sizes (xs, sm, md, lg, xl)
- Lesson 1368 — Theme Documentation and Design Tokens
- Scaling
- becomes easier: deploy more servers or CDN nodes independently
- Lesson 1474 — Client-Server Separation
- Schema Markup Validator
- (formerly Structured Data Testing Tool) performs a more technical validation.
- Lesson 1867 — Testing Structured Data
- Schema stacking
- Don't nest unrelated schemas hoping for more visibility
- Lesson 1868 — Structured Data Best Practices and Common Mistakes
- Scope
- Which URLs the worker controls (e.
- Lesson 2238 — Service Worker Registration and LifecycleLesson 2302 — Start URL and ScopeLesson 2310 — The Service Worker ScopeLesson 2371 — Service Worker Registration and ScopeLesson 2436 — DevTools Service Worker Panel
- Scope panel
- updates to show variables available at that level.
- Lesson 2270 — The Call Stack and Stack FramesLesson 2273 — Using the Scope Panel to Inspect Variables
- Scoped theme overrides
- let you redefine theme variables within specific components or sections by leveraging CSS's cascading nature and specificity.
- Lesson 1363 — Scoped Theme Overrides
- Screaming Frog
- (free for 500 URLs): Crawls your site and reports all canonical tags
- Lesson 1853 — Testing and Validating Canonicals
- Screen Reader Announcements
- Consider `aria-live` regions to announce when new content loads during scrolling, especially for infinite scroll patterns.
- Lesson 2105 — Accessibility Considerations for Virtual Lists
- Screen reader testing
- (NVDA, JAWS, VoiceOver) confirms announcements work correctly
- Lesson 1098 — Testing Focus ManagementLesson 1210 — Testing Complex WidgetsLesson 2664 — Testing Charts with Assistive Technology
- Screen readers
- can announce "navigation region" to visually impaired users
- Lesson 39 — HTML's Role: Document Structure and SemanticsLesson 48 — The <nav> ElementLesson 80 — The <html> Element and Language Attributes
- Screenshots
- where clarity matters more than file size
- Lesson 1241 — PNG: Lossless Compression and TransparencyLesson 2221 — Screenshots and Filmstrip View
- Script Encounters
- When the parser hits a `<script>` tag, it stops building the DOM
- Lesson 672 — The Critical Rendering Path
- Script Execution
- The script runs immediately (unless marked `defer` or `async`)
- Lesson 672 — The Critical Rendering Path
- Scripts
- (though sometimes placed elsewhere)
- Lesson 81 — The <head> Element StructureLesson 2840 — How CSP Works in Browsers
- Scroll Behavior
- Lock the body scroll when a modal opens to prevent the page behind from moving during touch interactions.
- Lesson 1161 — Mobile Modal Patterns
- Scroll Position
- Load comments or social embeds when users scroll near them (using Intersection Observer)
- Lesson 2049 — Lazy Loading Third-Party ScriptsLesson 2099 — Calculating Visible Range
- Scroll-based loading
- Load the widget when the user scrolls a certain percentage down the page (e.
- Lesson 2831 — Lazy Loading Chat Widgets
- Scrollable region identification
- If your modal has a scrollable section (like a content area separate from header/footer), ensure screen readers announce it properly.
- Lesson 1160 — Scrolling and Large Modal Content
- Scrollbars
- In RTL layouts, scrollbars typically appear on the **left** side.
- Lesson 2526 — RTL-Specific Edge Cases
- search
- .
- Lesson 93 — Password and Search InputsLesson 1514 — Query String FilteringLesson 2174 — Elements Panel Overview and Navigation
- Search and Filtering
- Client-side search through thousands of records, fuzzy matching algorithms, or sorting massive arrays.
- Lesson 2094 — Real-World Use Cases: Heavy Computation
- Search and replace
- is your first line of defense: scan your codebase for `http://` patterns in HTML, CSS, and JavaScript.
- Lesson 2929 — Upgrading Resources to HTTPS
- Search Console
- Core Web Vitals report based on CrUX
- Lesson 1926 — Chrome User Experience Report (CrUX)
- Search engines
- understand your content structure better
- Lesson 39 — HTML's Role: Document Structure and SemanticsLesson 48 — The <nav> ElementLesson 80 — The <html> Element and Language Attributes
- Search engines see everything
- Google's crawler receives the full article text, headlines, and metadata without executing JavaScript.
- Lesson 1757 — SSR for Content-Heavy Sites
- second
- (larger, softer) appears beneath it
- Lesson 203 — Multiple Box ShadowsLesson 525 — The animation Shorthand
- second argument
- to `postMessage`:
- Lesson 2089 — Transferable Objects for Zero-Copy CommunicationLesson 2446 — Registering Custom Elements
- Second value
- the flex-wrap behavior (`nowrap`, `wrap`, or `wrap-reverse`)
- Lesson 273 — flex-flow: Shorthand for Direction and Wrap
- Secondary metrics
- Supporting indicators (time on page, bounce rate)
- Lesson 2825 — A/B Testing Fundamentals
- Seconds
- `s` (e.
- Lesson 503 — The transition-duration PropertyLesson 506 — The transition-delay PropertyLesson 515 — The animation-duration Property
- Section-level headers
- Introductory content at the start of an `<article>` or `<section>`
- Lesson 47 — The <header> Element
- Secure
- flag ensures a cookie is only sent over HTTPS connections, never plain HTTP.
- Lesson 803 — Secure and HttpOnly FlagsLesson 807 — Cookie Security Best PracticesLesson 1532 — Query Arguments and Variables
- Secure device storage
- (not covered in browser storage)
- Lesson 1603 — Token Storage Best Practices by Use Case
- security
- .
- Lesson 17 — Browser Architecture OverviewLesson 1605 — Why Refresh Tokens ExistLesson 2209 — Tracking Third-Party RequestsLesson 2975 — Understanding Ethical vs Invasive Tracking
- Security & Validation
- Use `isTrusted` to ensure critical actions (like form submissions or payment confirmations) came from actual users, not automated scripts or malicious code trying to trigger events programmatically.
- Lesson 756 — event.timeStamp and event.isTrusted
- Security advantage
- Not accessible via storage APIs, making XSS exploitation harder (but not impossible if attacker can access your app's scope).
- Lesson 2917 — Token Storage Options: localStorage vs sessionStorage vs Memory
- Security against replay attacks
- If an attacker steals a refresh token through network interception, they have a very narrow window to use it.
- Lesson 1611 — Token Rotation on Refresh
- Security Policies
- Lesson 2199 — Request and Response Headers
- Security Requirements
- Lesson 1577 — Choosing the Right Authentication Strategy
- Security risk
- Accessible by any JavaScript on your domain, including third-party scripts.
- Lesson 2917 — Token Storage Options: localStorage vs sessionStorage vs Memory
- Security Scanning
- Use tools like OWASP ZAP or Burp Suite to systematically test CSRF vulnerabilities across your application.
- Lesson 2916 — Testing CSRF Protection
- Security tokens
- CSRF protection tokens (remember those?
- Lesson 2966 — Essential vs Non-Essential Cookies
- Security Vulnerabilities
- Lesson 2228 — Best Practices and Security Audits
- SecurityError
- Browser security policies prevent access (cross-origin restrictions or sandbox violations)
- Lesson 2696 — FileReader Error Handling
- Selected context only
- Shows messages only from your currently selected frame/context
- Lesson 2195 — Preserving Log and Console Settings
- Selective enabling
- After reviewing, you can run scripts for trusted packages only:
- Lesson 2952 — Post-Install Scripts and Security Risks
- Selective Generation
- For truly massive sites, consider building only critical pages (homepage, popular content) on every commit.
- Lesson 1788 — Build Performance with Large Datasets
- Selective Hydration
- with Suspense boundaries, allowing priority-based hydration where user interactions can "jump the queue" and hydrate specific components first.
- Lesson 1755 — Hydration in Different Frameworks
- self-closing
- (no closing tag needed).
- Lesson 74 — Images: src, alt, and AccessibilityLesson 76 — Horizontal Rules and Thematic Breaks
- Self-descriptive messages
- Each request contains all info needed
- Lesson 1472 — The Uniform Interface Constraint
- Self-host when possible
- Better performance and privacy than third-party services
- Lesson 572 — Web Font Best Practices ChecklistLesson 2787 — Performance Impact of Analytics
- Self-hosted
- You control the file, so the browser can fetch it early (not for Google Fonts or third-party CDNs in most cases)
- Lesson 1295 — When to Preload Fonts vs When Not To
- Self-hosting
- Download font files (like WOFF2) and serve them from your own server
- Lesson 561 — Self-Hosting vs. Font ServicesLesson 563 — Font Licensing and Legal Considerations
- Self-referencing canonical
- Even if a page has no duplicates, it's good practice to point to itself:
- Lesson 1847 — The rel="canonical" Link Element
- semantic meaning
- .
- Lesson 76 — Horizontal Rules and Thematic BreaksLesson 1000 — Article vs Section vs Div
- Semantic naming
- within the component context
- Lesson 1367 — Component-Level Theme VariablesLesson 1368 — Theme Documentation and Design Tokens
- Semantic structure
- Use `role="tree"` on the container, `role="treeitem"` on each node
- Lesson 1201 — Tree View Pattern
- Semantic/Component approach
- Lesson 600 — Atomic CSS and Utility-First Approaches
- Semantics
- means "meaning.
- Lesson 39 — HTML's Role: Document Structure and SemanticsLesson 70 — Code and Preformatted Text
- Send it
- in the authorization URL: `https://provider.
- Lesson 1622 — State Parameter for CSRF Protection
- Sending complete context
- Every API request must include authentication tokens, user IDs, or any data the server needs
- Lesson 1473 — Statelessness in REST APIs
- Sends an update signal
- to the browser over a WebSocket connection
- Lesson 1374 — Hot Module Replacement (HMR) in Vite
- Sentry
- or **Rollbar** provide a small JavaScript snippet you add to your application.
- Lesson 2287 — Error Monitoring ServicesLesson 2810 — Setting Up Sentry for Frontend
- SEO
- Search engines receive fully-rendered HTML
- Lesson 1765 — Hybrid Approaches: SSR + CSRLesson 2223 — What Lighthouse Measures and Why It Matters
- SEO (Search Engine Optimization)
- Search engines use heading hierarchy to understand your page's content and structure.
- Lesson 65 — Headings Hierarchy (h1-h6)
- SEO browser extensions
- Tools like "SEO Meta in 1 Click" display all meta tags including canonicals
- Lesson 1853 — Testing and Validating Canonicals
- SEO penalties
- when search engines can't parse content correctly
- Lesson 1446 — Why Lint HTML? Catching Errors Early
- SEO-critical applications
- requiring distinct, crawlable URLs per language version
- Lesson 2540 — Content Negotiation vs Explicit URLs
- SEO-critical user content
- → Full SSR (accept the cost)
- Lesson 1763 — SSR and Authentication Requirements
- Separate container from content
- A component should look the same no matter where you place it
- Lesson 1327 — Alternative Naming Conventions: SMACSS and OOCSS
- Separate REST endpoint
- Use GraphQL for data operations but keep a traditional REST endpoint (`POST /upload`) for files.
- Lesson 1553 — File Uploads: REST Multipart vs GraphQL Approaches
- Separate source map server
- Host source maps on a completely different domain with strict access controls.
- Lesson 2282 — Production Source Maps: Security and Privacy
- Separate structure from skin
- Keep layout properties (width, height, margin) separate from visual properties (color, border, background)
- Lesson 1327 — Alternative Naming Conventions: SMACSS and OOCSS
- separation of concerns
- is fundamental to modern web development.
- Lesson 38 — HTML, CSS, and JavaScript: The Three PillarsLesson 40 — CSS's Role: Separation of PresentationLesson 719 — Inline vs addEventListenerLesson 1855 — JSON-LD vs Microdata vs RDFa
- Sequential loading
- – resources that could load in parallel but don't
- Lesson 2166 — Understanding Request WaterfallsLesson 2172 — Optimizing Third-Party Scripts
- Serializing (Object → String)
- Lesson 775 — Storing Complex Data with JSON
- Serve conditionally
- Use server-side logic to serve source maps only to requests from your organization's IP ranges or authenticated sessions.
- Lesson 2282 — Production Source Maps: Security and Privacy
- Server
- A computer that stores and serves website files
- Lesson 1 — What is the Internet?Lesson 984 — Server Configuration for SPA RoutingLesson 2539 — Path- Based Locale Routing
- Server checks
- If the resource hasn't changed since that date, it returns `304 Not Modified` with no body
- Lesson 2145 — Last-Modified Header
- Server compresses response
- If configured, the server compresses the file using one of the supported algorithms
- Lesson 2131 — Understanding HTTP Compression Basics
- Server errors (5xx)
- other than 503/504 usually indicate serious problems where retrying immediately won't help.
- Lesson 1687 — Understanding When to Retry Network Requests
- Server processing time
- – The server generating and starting to send the response
- Lesson 1907 — Time to First Byte (TTFB)
- Server Remembers
- The server reads the cookie and knows something about you (like that you're logged in).
- Lesson 797 — What Are Cookies and How They Work
- Server responds
- If the server supports WebSockets, it responds with status code `101 Switching Protocols`
- Lesson 877 — WebSocket Fundamentals
- Server Response
- Sends the file along with caching instructions in headers
- Lesson 2141 — HTTP Caching FundamentalsLesson 2924 — Refresh Token Rotation
- Server Response Time
- measures how long it takes from when the server receives a request until it sends back the first byte of the response.
- Lesson 1738 — Server Response Time
- Server signals compression
- The response includes a `Content-Encoding` header indicating which algorithm was used
- Lesson 2131 — Understanding HTTP Compression Basics
- Server validates
- If correct, creates session in storage
- Lesson 1568 — Cookie-Based Authentication FlowLesson 1569 — Token-Based Authentication FlowLesson 2208 — Identifying 304 Not Modified Responses
- Server validates the token
- on each request without checking a session store
- Lesson 1569 — Token-Based Authentication Flow
- Server-rendered application
- Lesson 1603 — Token Storage Best Practices by Use Case
- Server-Sent Events (SSE)
- A persistent connection where the *server* pushes updates to the browser using standard HTTP.
- Lesson 872 — Real-Time Communication Patterns
- Server-side evaluation
- means your backend determines flag states before sending HTML or API responses to the client.
- Lesson 2820 — Client-Side vs Server-Side Feature Flags
- Server-Side Rendering (SSR)
- is SEO-friendly.
- Lesson 1724 — SEO Implications of Each ApproachLesson 1728 — Infrastructure and Hosting RequirementsLesson 1731 — First Contentful Paint (FCP)
- Server-Side Rendering (SSR) Errors
- Lesson 1671 — Errors That Boundaries Don't Catch
- Server-Side Rendering Requirements
- Lesson 2490 — When NOT to Use Web Components
- Server-side user profiles
- (database-backed) offer the most robust solution for logged-in users.
- Lesson 2507 — Storing User Language Preference
- service worker
- is a special JavaScript file that runs in the background of your web app, separate from the main browser thread.
- Lesson 2308 — What Service Workers Are and Why They MatterLesson 2355 — Understanding the Install Prompt
- Service Worker Tools
- in the Application panel let you inspect worker status, view cached resources, and manually unregister/update workers.
- Lesson 2332 — Testing Offline Experiences
- Service worker wakes up
- → reads from IndexedDB, retries each request
- Lesson 2337 — Storing Failed Requests with IndexedDB
- service workers
- when you want to serve cached content, synthetic responses, or handle offline scenarios.
- Lesson 857 — Creating Custom ResponsesLesson 2233 — Application Panel Overview and NavigationLesson 2342 — Testing Background Sync in DevelopmentLesson 2440 — Unregister and Hard ReloadLesson 2442 — Console Logging in Service Workers
- Session data
- Page views, session duration, bounce rate (single-page visits), and navigation paths through your site.
- Lesson 2779 — Understanding Analytics and User Behavior TrackingLesson 2814 — User Context and Session Data
- Session hijacking
- Steal authentication cookies and impersonate users
- Lesson 2892 — What is XSS and Why It Matters
- Session management
- Track which users have preview mode active
- Lesson 1792 — Preview Modes for Draft ContentLesson 2966 — Essential vs Non-Essential Cookies
- Session Replay Tools
- to verify the fix resolves user issues
- Lesson 2295 — Rollback and Hotfix Workflows
- Session replication
- Sync session data across servers (complex, with latency)
- Lesson 1575 — Scalability Considerations
- Session state
- Using cookies or server-side sessions instead of pure token-based authentication
- Lesson 1481 — RESTful vs REST-ish APIs
- Session Storage
- Key-value pairs saved in the browser
- Lesson 2233 — Application Panel Overview and Navigation
- sessionStorage
- clears when the tab closes.
- Lesson 819 — Storage Options OverviewLesson 821 — Performance CharacteristicsLesson 823 — Persistence and DurabilityLesson 825 — Cross-Tab and Offline ScenariosLesson 826 — Decision FrameworkLesson 2917 — Token Storage Options: localStorage vs sessionStorage vs Memory
- Set `font-display`
- Use `swap` for body text (avoid invisible text) or `optional` for decorative fonts
- Lesson 572 — Web Font Best Practices Checklist
- Set a global flag
- (like `isRefreshingToken` or `authFailureDetected`) to prevent new requests from being sent
- Lesson 1664 — Preventing Repeated 401/403 Requests
- Set breakpoints
- in your original source files by clicking line numbers
- Lesson 2283 — Debugging with Source Maps in DevTools
- Set custom validity
- on one field to report the composite error
- Lesson 920 — Custom Validation for Complex Inputs
- Set it as `background-color`
- on the image element or its container
- Lesson 2028 — Solid Color Placeholders
- Set size
- `aria-setsize` and `aria-posinset` describe position within siblings
- Lesson 1201 — Tree View Pattern
- Set up the placeholder
- (aspect ratio box, low-quality preview, gradient, etc.
- Lesson 2034 — Native Lazy Loading with Placeholders
- Setting initial focus
- when the modal opens (often the close button or first input)
- Lesson 1050 — Focus Trapping in Modal Dialogs
- Setting one is simple
- Lesson 2271 — Conditional Breakpoints for Targeted Stepping
- Settings
- – Variables and configuration (custom properties)
- Lesson 599 — ITCSS (Inverted Triangle CSS) Layer ModelLesson 1331 — What is ITCSS? The Inverted Triangle ApproachLesson 1339 — ITCSS Layer Ordering and Import Strategy
- Settings Layer
- , the absolute foundation of ITCSS.
- Lesson 1332 — The Settings Layer: Design Tokens and Variables
- Settings panels
- Group related options without overwhelming the interface
- Lesson 1181 — Accordion Pattern Overview and Structure
- Shadow DOM
- is a web standard that creates an **isolated DOM subtree** attached to an element.
- Lesson 2459 — What is Shadow DOM and Why It ExistsLesson 2460 — Shadow DOM vs Light DOM
- Shadow DOM Isolation
- Lesson 1356 — Managing Third-Party CSS Conflicts
- Shareable links
- to deep content
- Lesson 975 — Client-Side Routing FundamentalsLesson 1518 — URL State Management
- Shared namespaces
- `common`, `errors`, `validation`
- Lesson 2529 — Namespace Organization for Large Applications
- SharedWorker
- is different—it's a worker that can be accessed by multiple browsing contexts (tabs, windows, iframes) from the same origin.
- Lesson 2093 — Shared Workers for Cross-Tab Communication
- Shopping cart state
- Maintaining items during checkout
- Lesson 2966 — Essential vs Non-Essential Cookies
- Short expiration times
- Make tokens expire quickly (5-15 minutes), so logout just means "stop issuing new tokens"
- Lesson 1574 — Session Invalidation and Logout
- Short headlines
- or hero text where the specific typography defines the design
- Lesson 1273 — font-display: block Strategy
- Short swap period
- (~3s): Fallback text visible, but will swap if web font arrives
- Lesson 1275 — font-display: fallback Strategy
- Short-lived access tokens
- (15 min – 1 hour): reduces risk if compromised
- Lesson 1583 — JWT Expiration and the exp Claim
- Show
- a loading spinner or message when you call `readAsDataURL()`
- Lesson 2711 — Loading States During Preview Generation
- Show a facade
- Display a static image, icon, or styled div that mimics the appearance of the real embed
- Lesson 2050 — Script Loading Facades
- Show a preview
- Display a thumbnail image, title, and play button that *looks* like the real embed
- Lesson 2837 — Privacy-Friendly Embed Alternatives
- Show details on hover
- explaining what's wrong and how to fix it
- Lesson 1464 — Inline Error Highlighting with ESLint
- Show text instantly
- using Arial, Times, or whatever fallback you specified in your `font-family` stack
- Lesson 1274 — font-display: swap Strategy
- Show timestamps
- Adds timing information to each log entry
- Lesson 2195 — Preserving Log and Console Settings
- Show UI
- Display a banner, toast, or button with a message like "New version available—Refresh to update.
- Lesson 2430 — Prompting Users for Updates
- Show user notification
- Inform users certain features are unavailable
- Lesson 2797 — Error Handling for External Scripts
- Showing/hiding dynamic content
- When expanding an accordion or revealing a section, focus may need to move to the newly visible content
- Lesson 1087 — Focus Management Fundamentals
- Shrinks
- the element to 1×1 pixel
- Lesson 1127 — The CSS Visually Hidden PatternLesson 1212 — The Resolution Switching Problem
- siblings
- .
- Lesson 124 — Combinators: Adjacent and General SiblingLesson 663 — The DOM Tree StructureLesson 704 — Parent-Child Relationships in the DOM
- Side-by-side labels and inputs
- Set `flex-direction: row` on the container, give labels a fixed `flex-basis` for consistent width, and let inputs grow with `flex-grow: 1`.
- Lesson 302 — Form Layouts with Flexbox
- Side-by-side placement
- Inline elements don't force line breaks.
- Lesson 209 — Inline Elements in Normal Flow
- Sidebar thumbnail
- `sizes="(min-width: 1024px) 300px, (min-width: 768px) 200px, 150px"`
- Lesson 1216 — Writing Effective sizes Values
- Signature
- – cryptographic proof of authenticity
- Lesson 1578 — What is a JWT and Why Use It?Lesson 1579 — JWT Structure: Header, Payload, and SignatureLesson 1580 — Encoding vs Encryption: JWT Security Basics
- Simple
- Perfect for landmark elements like headers, main content areas, or forms
- Lesson 675 — document.getElementById()Lesson 861 — Simple vs Preflight Requests
- Simple Analytics
- – Event tracking without invading privacy, clean dashboard.
- Lesson 2785 — Privacy-Focused Alternatives
- Simple Array Approach
- Lesson 1640 — Permission Data Structures
- Simple looping animations
- with few colors (loading spinners, small icons)
- Lesson 1245 — GIF: Animation and Legacy Support
- Simple marketing pages
- with minimal user interaction and no sensitive data
- Lesson 2887 — unsafe-inline Tradeoffs
- Simple sites
- with minimal SEO requirements and single-language user sessions
- Lesson 2540 — Content Negotiation vs Explicit URLs
- Simpler
- No complex session management or synchronization between servers
- Lesson 1473 — Statelessness in REST APIs
- Simpler syntax
- Use `async/await` instead of callbacks
- Lesson 796 — IndexedDB Wrappers and Best Practices
- Simpler to generate
- Backend systems can inject JSON without parsing HTML
- Lesson 1855 — JSON-LD vs Microdata vs RDFa
- Simplify
- Temporarily remove `opacity`, `transform`, and other properties to see if they're creating unexpected contexts.
- Lesson 235 — Debugging Stacking Issues
- Simplify legends
- Move legends below charts, use icons instead of full text, or remove the legend entirely if you can label data directly.
- Lesson 2657 — Breakpoint-Based Chart Simplification
- Simplify paths
- – reduce decimal precision (2 places instead of 6)
- Lesson 2001 — SVG for Vector Graphics
- Simulating API unavailability
- Block API endpoints to verify your error handling displays friendly messages.
- Lesson 2204 — Blocking Requests
- Single panel expansion
- (often called "exclusive" mode) means only one accordion panel can be open at a time.
- Lesson 1184 — Single vs Multiple Panel Expansion
- Single weight
- Static font wins (~50KB vs ~80KB variable)
- Lesson 1291 — Variable Font File Size Benefits
- Single-field rules
- When a field's validity depends only on itself (like `required`, `pattern`, or `minlength` constraints)
- Lesson 918 — Field-Level vs Form-Level Validation
- Single-Location Testing
- Lighthouse tests from one location only.
- Lesson 2232 — Lighthouse Limitations and Complementary Tools
- Size
- Each heading level should be noticeably smaller than the one above it.
- Lesson 589 — Heading HierarchyLesson 2016 — Testing Responsive Images Across ViewportsLesson 2053 — Measuring Third-Party Script ImpactLesson 2139 — Verifying Compression in DevToolsLesson 2196 — Network Panel Overview and InterfaceLesson 2202 — Identifying Slow ResourcesLesson 2207 — Cache Behavior and ValidationLesson 2369 — Update Mechanisms (+1 more)
- Size column
- Shows "disk cache" or similar instead of actual bytes
- Lesson 2208 — Identifying 304 Not Modified Responses
- Sizing and layout reference
- The `<img>` element provides the dimensions, alt text, and layout properties.
- Lesson 1234 — The Mandatory <img> Fallback
- skeleton screens
- (gray placeholder boxes matching your content's shape) feel faster because they show structure immediately.
- Lesson 1946 — Loading States for Split ComponentsLesson 2036 — Choosing the Right Strategy
- Skip gzip for
- Lesson 2132 — Gzip Compression Algorithm
- Skip links
- that become visible on focus
- Lesson 1046 — tabindex='-1' for Programmatic FocusLesson 1064 — Skip to Content LinksLesson 1071 — Skip Links vs Landmarks
- Skip waiting
- Forces a waiting service worker to activate immediately instead of waiting for all tabs to close.
- Lesson 2322 — Testing Service Workers LocallyLesson 2438 — Update on Reload and Skip Waiting
- Sliding expiration
- Resets the timer on each request (keeps active users logged in)
- Lesson 1570 — Session Storage and Management
- Slot-based composition
- Light DOM content can be projected *into* shadow DOM using `<slot>` elements, creating a powerful composition model.
- Lesson 2460 — Shadow DOM vs Light DOM
- Slow cold starts
- Traditional bundlers process your entire codebase before showing anything
- Lesson 1369 — What Vite Is and Why It Exists
- Slow Image Loading
- If your image takes more than a few seconds to load, crawlers may time out and show no preview at all.
- Lesson 1845 — Social Sharing Best Practices
- Slower request transmission
- (especially on poor connections)
- Lesson 1592 — Token Payload Size and Performance
- SMACSS
- (Scalable and Modular Architecture for CSS) and **OOCSS** (Object-Oriented CSS).
- Lesson 1327 — Alternative Naming Conventions: SMACSS and OOCSSLesson 1340 — ITCSS vs Other Methodologies: When to Use What
- SMACSS alone
- Mid-sized projects needing flexibility
- Lesson 1340 — ITCSS vs Other Methodologies: When to Use What
- Small chunks
- A 2 KB chunk still requires a full network round trip—the request cost exceeds the payload benefit
- Lesson 1423 — Code Splitting Trade-offs
- Small in file size
- Subsetted or variable fonts that won't block other critical resources
- Lesson 1295 — When to Preload Fonts vs When Not To
- Small to medium projects
- (marketing sites, portfolios) work well with straightforward methodologies like BEM or OOCSS.
- Lesson 603 — Choosing an Architecture for Your Project
- Smaller bundle size
- Typically 2-5x smaller than development builds
- Lesson 1393 — Development vs Production Mode
- Smaller file sizes
- for capable browsers (often 30-50% reduction)
- Lesson 2015 — Type Attribute for Modern Image Formats
- Smart defaults
- Production builds get automatic minification, tree-shaking, and code splitting without configuration
- Lesson 1402 — Parcel: Zero Configuration Bundling
- Smooth transitions
- No jarring size jumps as you drag the viewport wider
- Lesson 413 — Testing Fluid Typography
- Smoother performance
- on mobile devices with limited resources
- Lesson 763 — Performance Benefits of Delegation
- Snapshot 1 (Baseline)
- Take a heap snapshot before any suspicious action.
- Lesson 2116 — The Three-Snapshot Technique
- Snapshot 2 (During)
- Take a snapshot immediately after the action.
- Lesson 2116 — The Three-Snapshot Technique
- Snapshot 3 (After Cleanup)
- Trigger any cleanup (close modal, navigate away), wait a few seconds for garbage collection, then take a final snapshot.
- Lesson 2116 — The Three-Snapshot Technique
- Social media embeds
- where GIF is culturally expected (though platforms often convert them to video behind the scenes)
- Lesson 1245 — GIF: Animation and Legacy Support
- Social media integration
- where link previews must match the target language
- Lesson 2540 — Content Negotiation vs Explicit URLs
- Social Media Sharing
- When someone shares your landing page on Facebook, LinkedIn, or Twitter, those platforms send crawler bots to fetch preview images, titles, and descriptions.
- Lesson 1759 — Marketing and Landing Pages
- Social media timelines
- Lesson 2153 — Network-First Strategy
- Social media widgets
- Display a "Load Twitter Feed" button instead of auto-loading the Twitter SDK
- Lesson 2050 — Script Loading Facades
- Solution
- Be very cautious about using `stopPropagation()` in applications that rely on delegation, and document where you use it.
- Lesson 765 — Common Delegation Pitfalls
- Sort naturally
- Names like `img-1`, `img-2` alphabetize correctly, while `img-10` won't without zero-padding
- Lesson 1224 — Image Source Naming Conventions
- Source file
- The JavaScript file powering the worker
- Lesson 2238 — Service Worker Registration and Lifecycle
- Sources
- data from all your configured origins (CMS, files, APIs)
- Lesson 1783 — GraphQL for Build-Time Data QueriesLesson 2254 — Setting Line-of-Code BreakpointsLesson 2260 — Event Listener BreakpointsLesson 2269 — Setting and Managing Watch Expressions
- Sources panel
- , navigate to the JavaScript file you want to debug.
- Lesson 2254 — Setting Line-of-Code BreakpointsLesson 2257 — DOM Breakpoints: Subtree ModificationsLesson 2283 — Debugging with Source Maps in DevTools
- space
- character selects *any* nested element, no matter how deeply buried:
- Lesson 123 — Combinators: Descendant and ChildLesson 1084 — Enter and Space ActivationLesson 1173 — Select-Style Custom DropdownsLesson 1180 — Automatic vs Manual Tab ActivationLesson 1189 — Keyboard Navigation RequirementsLesson 1200 — Listbox PatternLesson 2662 — Keyboard Navigation in Interactive Charts
- Space is limited
- and showing all content at once would overwhelm the page
- Lesson 1175 — Tabs Pattern Overview and When to Use Them
- Spacing
- More important headings often need more breathing room.
- Lesson 589 — Heading HierarchyLesson 593 — Responsive Typography PatternsLesson 610 — Theme Configuration OverviewLesson 1431 — Rule Options and CustomizationLesson 2650 — Theming and Custom Styles
- Spacing (margins/padding)
- `rem` (consistent, scalable)
- Lesson 159 — Absolute vs Relative: Choosing the Right Unit
- Spanning Multiple Columns
- Lesson 625 — Grid Utilities: Template and Placement
- Special alignment
- An item with `flex: 1` *and* `align-self: flex-end` grows to fill space while aligning differently than its siblings.
- Lesson 291 — Combining Item Properties Effectively
- Specific
- You get exactly what you expect
- Lesson 675 — document.getElementById()Lesson 1645 — Resource-Level PermissionsLesson 2954 — User Consent Requirements
- Specific about data types
- "We collect your email address for account recovery"
- Lesson 2981 — Transparent Data Practices
- Specific endpoints
- `form-action 'self' https://payment-processor.
- Lesson 2851 — The form-action Directive
- Specific origin
- Lesson 863 — Access-Control-Allow-Origin Header
- Specific over general
- Use the most specific event that matches your need.
- Lesson 745 — Event Type Selection and Best Practices
- Specific property names
- `opacity`, `transform`, `color`, etc.
- Lesson 502 — The transition-property Property
- Speech rate
- Press `NVDA+Control+Up/Down Arrow` to adjust speed (faster helps during testing)
- Lesson 1101 — Setting Up NVDA on Windows
- speed
- (LCP), **responsiveness** (FID), and **stability** (CLS).
- Lesson 1888 — The Three Core Web Vitals: LCP, FID, and CLSLesson 2364 — Installation and Distribution Models
- Speed to users
- PWAs can push critical fixes in minutes; native apps may take days.
- Lesson 2369 — Update Mechanisms
- Speed trumps branding
- You value instant text rendering over custom typography
- Lesson 1276 — font-display: optional Strategy
- SpeedCurve
- , **Calibre**, and **New Relic** provide ongoing surveillance—like having a security camera instead of taking occasional photos.
- Lesson 1927 — Performance Monitoring Services
- Speeding up indexing
- New pages get discovered faster than waiting for organic crawling
- Lesson 1869 — What is a Sitemap and Why It Matters
- SpiderMonkey
- Used by Firefox (the first-ever JavaScript engine, created in 1995)
- Lesson 19 — The JavaScript Engine
- Split Strategy
- Short-lived access token in memory, refresh token in HttpOnly cookie.
- Lesson 1600 — Refresh Token Storage Strategy
- Spread-radius
- (optional): Expands or contracts the shadow's size before blurring.
- Lesson 202 — Box Shadow Basics
- Spriting
- Combining many small images into one large sprite sheet to reduce the number of HTTP requests
- Lesson 2125 — HTTP/2 Anti-Patterns: Domain Sharding and Spriting
- Spriting images
- to combine many small images into one request
- Lesson 2119 — HTTP/1.1 Limitations and Connection Management
- sRGB color space
- (standard Red-Green-Blue).
- Lesson 188 — Color Space BasicsLesson 495 — Wide-Gamut Colors for High-End Displays
- SSE
- One-way server updates (live feeds, notifications, progress bars)
- Lesson 872 — Real-Time Communication Patterns
- SSE is simpler
- Lesson 882 — Choosing Between SSE and WebSockets
- SSG
- Immediate (HTML pre-built and cached)
- Lesson 1724 — SEO Implications of Each ApproachLesson 1725 — Initial Load Time ComparisonLesson 1726 — Subsequent Navigation PatternsLesson 1729 — Choosing the Right Rendering Strategy
- SSG (Static Site Generation)
- with `stale-while-revalidate` is a hybrid approach.
- Lesson 1727 — Data Freshness Trade-offs
- SSG and SSR
- provide fully-rendered HTML that crawlers can read instantly.
- Lesson 1729 — Choosing the Right Rendering Strategy
- SSL
- (Secure Sockets Layer) and **TLS** (Transport Layer Security) are the encryption technologies that make HTTPS work.
- Lesson 13 — HTTPS and SSL/TLSLesson 2169 — Connection Overhead and Timing
- SSR
- Immediate (HTML ready on request)
- Lesson 1724 — SEO Implications of Each ApproachLesson 1725 — Initial Load Time ComparisonLesson 1729 — Choosing the Right Rendering Strategy
- SSR (Server-Side Rendering)
- fetches data on *every request* at the server level, then sends complete HTML.
- Lesson 1727 — Data Freshness Trade-offs
- SSR (traditional)
- Full page reloads can feel slower and cause screen flicker, though each page arrives with complete HTML.
- Lesson 1726 — Subsequent Navigation Patterns
- SSR Approach
- The server sends fully-rendered HTML including your hero image or main text block already in the markup.
- Lesson 1732 — Largest Contentful Paint (LCP)
- SSR considerations
- Server-side rendering can pre-generate style tags with nonces before sending HTML to the browser, reducing runtime violations.
- Lesson 2884 — CSS-in-JS and CSP Compatibility
- stack
- multiple responsive utilities on the same element, each with different breakpoint prefixes.
- Lesson 634 — Stacking Responsive UtilitiesLesson 1336 — The Objects Layer: Layout Primitives and Structure
- stack trace
- shows you the "breadcrumb trail" of function calls that got you to the current line of code.
- Lesson 2191 — Console.trace() and Stack TracesLesson 2248 — console.trace for Call Stacks
- Stack vertically
- each one appears below the previous element
- Lesson 208 — Block-Level Elements in Normal Flow
- Stacked forms
- Use `flex-direction: column` so each label sits above its input, perfect for mobile layouts or narrower forms.
- Lesson 302 — Form Layouts with Flexbox
- Stage files
- Click the `+` icon next to a file to stage it (equivalent to `git add`)
- Lesson 1468 — Git Integration and Source Control Panel
- Staged rollouts
- Deploy updates to a small percentage of users first.
- Lesson 2435 — Testing Service Worker Updates
- Stagger animations
- when multiple elements transition at once
- Lesson 506 — The transition-delay Property
- Stagger initialization timing
- Instead of letting all scripts fire at once on page load, sequence them: load analytics first (lightweight), then defer chat widgets until after the page is interactive, and lazy-load social embeds only when they scroll into view.
- Lesson 2836 — Managing Multiple Embed Scripts
- Staircase patterns
- reveal serial dependencies: one resource can't start until another finishes (common with JavaScript triggering new requests).
- Lesson 2198 — Understanding the Request Waterfall
- stale-while-revalidate
- pattern you learned earlier—users never wait for rebuilds.
- Lesson 1796 — Configuring Revalidation IntervalsLesson 2155 — Cache Strategy SelectionLesson 2392 — Cache Then Network StrategyLesson 2399 — Handling Different Content Types
- Staleness Duration
- Track the time gap between when your data source updates and when the ISR page reflects that change.
- Lesson 1805 — Monitoring and Debugging ISR
- StaleWhileRevalidate
- serves cached content immediately while fetching a fresh copy in the background for next time.
- Lesson 2408 — Built-In Caching Strategies
- Stalled/Blocking
- (gray): browser delay before sending request
- Lesson 2198 — Understanding the Request Waterfall
- Standard CSS properties
- `font-weight`, `font-stretch`, `font-style`
- Lesson 1290 — Standard Properties vs Variation Settings
- Standard modern frameworks
- (React, Vue, Svelte) have excellent Vite support with minimal configuration.
- Lesson 1398 — When Webpack Makes Sense vs Modern Alternatives
- Standardization
- Lesson 36 — Browser Vendors and the Standards Process
- Standards mode
- Follows modern HTML, CSS, and JavaScript rules consistently
- Lesson 79 — The Document Type Declaration
- Start small
- Update patch versions first, then minors, then majors separately.
- Lesson 2949 — Updating Dependencies Safely
- Start the upload
- in the background (using XMLHttpRequest or fetch with progress tracking)
- Lesson 2720 — Upload with Optimistic UI Updates
- Start with a placeholder
- Show a lightweight element (image, button, or skeleton)
- Lesson 2799 — Lazy Loading Third-Party Widgets
- Start with empty backgrounds
- Don't set `background-image` in your default CSS
- Lesson 2020 — Lazy Loading Background Images
- Start with new features
- When building new components or pages, write them entirely in Tailwind utilities.
- Lesson 660 — Migration Strategies: Adding Tailwind to Existing Projects
- Start with Report-Only mode
- to collect violations without breaking your site
- Lesson 2881 — CSP Header Testing and Debugging
- Start with static fonts
- Define a traditional `@font-face` with regular, bold, italic variants
- Lesson 1292 — Browser Support and Fallbacks
- Starts with
- `[href^="https"]` matches when the attribute *begins* with the specified text
- Lesson 122 — Attribute Selectors
- startTime
- When it began
- Lesson 1986 — Identifying Long Tasks with Performance APILesson 2070 — The Long Tasks API
- Startup
- Decide if you want NVDA to auto-start (usually "no" for development machines)
- Lesson 1101 — Setting Up NVDA on Windows
- State
- rules describe how modules or layouts look in different conditions: `.
- Lesson 598 — SMACSS (Scalable and Modular Architecture)Lesson 962 — history.pushState() FundamentalsLesson 1327 — Alternative Naming Conventions: SMACSS and OOCSS
- State management
- tracking whether the listbox is expanded, which option has focus, and what text is entered
- Lesson 1198 — Combobox Pattern Fundamentals
- State Object
- Optional custom data you can attach using the History API (you'll learn this soon!
- Lesson 961 — The History Stack and Navigation StatesLesson 964 — The State Object: Storing Navigation DataLesson 973 — History API Limitations and Edge Cases
- State synchronization
- Listen for back/forward button presses and render accordingly
- Lesson 972 — Building a Client-Side Router with History API
- Stateful authentication
- means the server stores session data.
- Lesson 1567 — Stateful vs Stateless Authentication
- Stateful cons
- Requires server-side storage, harder to scale across multiple servers, database dependency.
- Lesson 1567 — Stateful vs Stateless Authentication
- Stateful pros
- Easy to invalidate sessions immediately (just delete the server record), simpler tokens (just random IDs).
- Lesson 1567 — Stateful vs Stateless Authentication
- stateless
- by default—each request is independent.
- Lesson 797 — What Are Cookies and How They WorkLesson 1470 — What is REST and Why It MattersLesson 1569 — Token-Based Authentication FlowLesson 1578 — What is a JWT and Why Use It?
- Stateless authentication
- means the server stores nothing.
- Lesson 1567 — Stateful vs Stateless Authentication
- Stateless cons
- Tokens can't be truly invalidated until they expire, tokens can grow large if they contain lots of data.
- Lesson 1567 — Stateful vs Stateless Authentication
- Stateless pros
- No server storage needed, scales horizontally easily, works great for APIs.
- Lesson 1567 — Stateful vs Stateless Authentication
- Statelessness
- means the server doesn't remember anything about previous requests from a client.
- Lesson 1473 — Statelessness in REST APIs
- static
- (the default)
- Lesson 211 — The position Property: OverviewLesson 679 — document.querySelectorAll()Lesson 680 — Live vs Static CollectionsLesson 714 — Live vs Static Collections During Traversal
- Static assets
- (compressed once at build time): Use higher levels (Gzip 9, Brotli 11) since compression time doesn't affect users.
- Lesson 2136 — Compression Levels and Trade-offsLesson 2137 — Pre-Compression vs Dynamic CompressionLesson 2152 — Cache-First Strategy
- Static collections
- Returned by modern methods like `querySelectorAll()`
- Lesson 669 — Live vs Static NodeLists
- static content
- like HTML files
- Lesson 14 — Localhost and Development ServersLesson 1729 — Choosing the Right Rendering Strategy
- Static file hosts
- (like Netlify, Vercel, or AWS S3 + CloudFront)
- Lesson 1728 — Infrastructure and Hosting Requirements
- Static files
- are created with the latest content baked in
- Lesson 1781 — Headless CMS Integration FundamentalsLesson 2158 — Types of Assets to Serve from CDNs
- Static imports
- load modules at the very beginning of your application, before any code runs.
- Lesson 1940 — Static vs Dynamic Imports
- Static performance
- Once generated, pages serve instantly from CDN
- Lesson 1789 — Fallback Pages and On-Demand Generation
- Static Site Generation (SSG)
- is the SEO gold standard.
- Lesson 1724 — SEO Implications of Each ApproachLesson 1728 — Infrastructure and Hosting RequirementsLesson 1767 — What is Static Site Generation?
- Static Table
- A predefined dictionary of common header names and values (like `:method: GET`) that both browser and server know.
- Lesson 2122 — HTTP/2 Header Compression with HPACK
- Status
- Polite, waits for pauses → "Your changes have been saved"
- Lesson 1116 — Alert Role for Urgent MessagesLesson 1645 — Resource-Level PermissionsLesson 2196 — Network Panel Overview and InterfaceLesson 2207 — Cache Behavior and ValidationLesson 2436 — DevTools Service Worker Panel
- Status Badge
- Lesson 1702 — Offline UI Indicators
- status code
- (like 200 for "OK, here's your page" or 404 for "Not Found")
- Lesson 6 — HTTP: The Language of the WebLesson 9 — Status Codes: What the Server Says BackLesson 854 — Response Status and StatusTextLesson 1492 — 4xx Client Error Codes: 409, 422, and 429Lesson 2208 — Identifying 304 Not Modified Responses
- Status indicators
- Whether your service worker is active, waiting, or installing
- Lesson 2322 — Testing Service Workers Locally
- Stays synchronized
- If you update the heading text, the accessible name updates automatically
- Lesson 1020 — aria-labelledby: Referencing Existing Labels
- Step 2: Work Bottom-Up
- Lesson 1357 — Refactoring High-Specificity Code
- Step 3: Replace Gradually
- Lesson 1357 — Refactoring High-Specificity Code
- Step Into
- skips library functions and lands in *your* next function
- Lesson 2275 — Blackboxing Third-Party Code
- Step through
- your actual code using Step Over, Step Into, and Step Out
- Lesson 2283 — Debugging with Source Maps in DevTools
- Step through execution
- – Move forward line-by-line to watch how values change
- Lesson 2253 — What Are Breakpoints and Why Use Them
- Step-by-step approach
- Lesson 1975 — Extracting Critical CSS Manually
- Sticky Footers/Headers
- remain visible as users scroll, ensuring the consent option never disappears before interaction.
- Lesson 2967 — Cookie Banner Placement and Timing
- Sticky sessions
- Route each user to the same server (limits true load balancing)
- Lesson 1575 — Scalability Considerations
- Stop
- to end recording
- Lesson 1916 — Chrome DevTools Performance Panel BasicsLesson 1994 — Profiling Main-Thread Performance with Chrome DevToolsLesson 2211 — Performance Panel Overview and Recording
- Stop recording
- Lesson 2057 — Identifying Main-Thread Blocking
- Stop Speaking
- Control key interrupts the current speech
- Lesson 1103 — Basic Screen Reader Navigation Commands
- Stopping Link Navigation
- Lesson 724 — preventDefault() MethodLesson 753 — event.preventDefault(): Canceling Default Behavior
- Stops all automatic rotation
- when activated
- Lesson 1190 — Play/Pause Controls for Auto-Rotating Carousels
- Storage
- `IndexedDB`, `Cache API`
- Lesson 2090 — Worker Scope and Available APIsLesson 2233 — Application Panel Overview and NavigationLesson 2241 — Storage Quota and Usage Analysis
- Storage limits
- Exceeding quotas can prevent new writes or trigger eviction
- Lesson 823 — Persistence and DurabilityLesson 2368 — Offline Capabilities Comparison
- Storage usage breakdown
- (how much space each data type consumes)
- Lesson 2242 — Clear Storage and Testing Fresh States
- StorageManager API
- to check your quota:
- Lesson 2396 — Cache Size ManagementLesson 2422 — Cache Size Limitations
- Store
- a reference to the element that triggered it (the button or link the user activated)
- Lesson 1089 — Modal Dialog Focus Management
- Store historical data
- so you can correlate performance changes with deployments
- Lesson 1927 — Performance Monitoring Services
- Store it
- in the user's session (server-side) or encrypted cookie
- Lesson 1622 — State Parameter for CSRF Protection
- Store references, not data
- Save a session ID in the cookie and keep actual data server-side
- Lesson 805 — Cookie Size Limitations
- Store the original timezone
- For events created by a specific user, save which timezone they were in when scheduling.
- Lesson 2756 — Calendar Events Across Timezones
- Store the request
- Save the failed request details (URL, method, headers, body) in IndexedDB
- Lesson 2401 — Background Sync for Failed Requests
- Stores preferences
- in a consent cookie or localStorage
- Lesson 2973 — Consent Management Platforms (CMPs)
- Strategy Effectiveness
- Track which caching strategies perform best for different resource types.
- Lesson 2403 — Analytics and Cache Performance Monitoring
- Strategy misconfiguration
- Verify the right strategy applies to the URL pattern
- Lesson 2425 — Debugging Cache Strategies
- Streaming SSR
- changes this: the server sends HTML in chunks as it's generated.
- Lesson 1754 — Streaming SSR and Hydration
- Streaming video
- Doesn't count toward page load budget but monitor bandwidth usage
- Lesson 1934 — Image and Media Asset Budgets
- Strictly Necessary
- (always on): Authentication, security, session management
- Lesson 2969 — Granular Cookie Category Controls
- Strictly necessary cookies
- (authentication, security, load balancing)
- Lesson 2954 — User Consent RequirementsLesson 2965 — Cookie Consent Legal Requirements
- strings
- that's their one limitation.
- Lesson 773 — setItem and getItemLesson 783 — IndexedDB vs localStorage: Key DifferencesLesson 2639 — Data Loading with d3.json and d3.csv
- strong importance
- (browsers show it bold by default)
- Lesson 67 — Bold, Italic, and UnderlineLesson 1008 — Strong vs Em vs B vs I
- Strongly Typed Schema
- Lesson 1519 — What is GraphQL?
- Structural errors
- Unclosed tags, improper nesting, missing required attributes
- Lesson 1446 — Why Lint HTML? Catching Errors Early
- Structural understanding
- Headings (`<h1>`–`<h6>`) create a document outline that users can navigate through
- Lesson 997 — Why Semantic HTML Matters for Accessibility
- structure
- of HTML to help users navigate.
- Lesson 62 — Semantic Elements and AccessibilityLesson 597 — OOCSS (Object-Oriented CSS) Principles
- Structured Data
- You can store complex objects, arrays, files, and even Blobs without converting everything to JSON strings first.
- Lesson 782 — What is IndexedDB and When to Use ItLesson 1854 — Introduction to Structured Data and Schema.org
- Style attributes
- are CSS rules applied directly to an HTML element:
- Lesson 2883 — Style Attributes vs Style Tags
- Style calculation
- Determines which CSS rules apply to each element
- Lesson 1985 — Understanding the Main Thread and Browser Rendering Pipeline
- Style encapsulation
- through Shadow DOM means your widget's appearance won't be corrupted by host page CSS.
- Lesson 2488 — Long-Lived Widgets and Embeds
- Style isolation
- Your component's CSS won't accidentally style the page, and page CSS won't break your component
- Lesson 2459 — What is Shadow DOM and Why It ExistsLesson 2489 — Micro-Frontend Architecture Boundaries
- Style the transition
- so the real image smoothly replaces the placeholder
- Lesson 2034 — Native Lazy Loading with Placeholders
- Style-only contexts
- where you're confident no user-controlled content can inject CSS (though this is harder to guarantee than you think)
- Lesson 2887 — unsafe-inline Tradeoffs
- Stylelint
- is a linter—a tool that automatically checks your CSS code against rules you configure.
- Lesson 1330 — Enforcing Naming Conventions with Linters
- Styles pane
- (typically on the right) shows all CSS rules affecting that element.
- Lesson 2179 — Inspecting and Modifying CSS Properties
- Styles panel
- shows all the CSS rules *targeting* that element—but the **Computed tab** shows what the browser *actually applied* after processing inheritance, specificity, cascading, and default values.
- Lesson 2183 — Computed Tab and Final Styles
- Styling hooks
- (adding a background color to a group of elements)
- Lesson 60 — When to Use <div> vs Semantic Elements
- Subdirectories (Path-Based)
- Lesson 2538 — URL Structure Patterns for i18n
- Submit-time checks
- Using `checkValidity()` or `reportValidity()` on the entire form before sending data
- Lesson 918 — Field-Level vs Form-Level Validation
- Subresource Integrity (SRI)
- lets you specify a cryptographic hash of the expected content.
- Lesson 842 — Request Integrity and Subresource IntegrityLesson 2906 — XSS Prevention Checklist
- Subscriptions
- Unsubscribe from external data sources
- Lesson 2450 — disconnectedCallback: Element Removal
- Subsequent Navigation
- Fast, app-like transitions without full page refreshes
- Lesson 1765 — Hybrid Approaches: SSR + CSR
- Subsequent Request
- Lesson 1506 — Conditional Requests with ETag and If-None-MatchLesson 2145 — Last-Modified Header
- Subsequent requests
- Browser includes cookie header
- Lesson 1568 — Cookie-Based Authentication FlowLesson 1795 — Stale-While-Revalidate PatternLesson 1796 — Configuring Revalidation Intervals
- Subsequent visit
- Browser sends a conditional request with `If-None-Match` (ETag) or `If-Modified-Since` headers
- Lesson 2208 — Identifying 304 Not Modified Responses
- Subset your fonts
- Remove unused characters with unicode ranges to dramatically reduce file size
- Lesson 572 — Web Font Best Practices Checklist
- Subsetting freedom
- You can customize files to include only the characters you need
- Lesson 561 — Self-Hosting vs. Font Services
- Subtracting time
- Lesson 2738 — date-fns: Arithmetic and Manipulation
- Success
- Move focus to a success message or confirmation heading.
- Lesson 1095 — Form Submission and Error FocusLesson 2724 — Upload State Management
- Success confirmations
- "Settings saved," "File uploaded"
- Lesson 1707 — Toast Notification Patterns and Use Cases
- Success messages
- work the same way—use `role="status"` for non-urgent confirmations or `role="alert"` if the user needs to know immediately.
- Lesson 1120 — Form Validation Announcements
- Success Toasts
- Lesson 1712 — Toast Types and Visual Hierarchy
- Supply chain attacks
- Altered dependencies
- Lesson 842 — Request Integrity and Subresource IntegrityLesson 2948 — Lock Files and Dependency Pinning
- Suppress hydration warnings carefully
- Only when you *intentionally* have different server/client content (like timestamps showing "2 minutes ago")
- Lesson 1747 — Avoiding Hydration Mismatches
- SvelteKit
- Minimal JavaScript shipping with optional hydration
- Lesson 1755 — Hydration in Different Frameworks
- SVG
- Universally supported for vector content
- Lesson 1246 — Format Selection StrategyLesson 1310 — Fallback Fonts for Icon FontsLesson 2002 — Format Selection Decision TreeLesson 2613 — Canvas Element BasicsLesson 2651 — Exporting Charts as Images
- SVG icons
- can be loaded individually (better for tree-shaking) or as optimized sprite sheets.
- Lesson 2042 — Icon Fonts vs SVG Icons
- Swap `data-src` to `src`
- when the image becomes visible
- Lesson 1254 — Custom Lazy Loading Implementation
- SWC
- (Speedy Web Compiler) for transpiling and **Oxc** for linting are all written in Rust, pursuing the same goal: native-speed tooling that makes JavaScript development feel instant, regardless of project size.
- Lesson 1403 — Turbopack and the Rust Wave
- Swipe Gestures
- Consider allowing swipe-down gestures to dismiss modals (common pattern), but only if it doesn't conflict with internal scrolling.
- Lesson 1161 — Mobile Modal Patterns
- Swipe-only carousels
- with no previous/next buttons
- Lesson 1196 — Touch Gesture Accessibility Considerations
- Switch chart types
- Transform a detailed multi-line chart into a simpler bar chart, or a stacked area chart into a single-line summary showing totals only.
- Lesson 2657 — Breakpoint-Based Chart Simplification
- Switch the header
- Change your server configuration from:
- Lesson 2873 — Transitioning from Report-Only to Enforcement
- synchronous
- they block the main thread.
- Lesson 783 — IndexedDB vs localStorage: Key DifferencesLesson 1940 — Static vs Dynamic Imports
- Synchronous code
- executes line-by-line, blocking the main thread until each operation completes.
- Lesson 2058 — Synchronous vs Asynchronous Code
- Syntax pattern
- Lesson 1221 — Calc() in sizes Attribute
- System fonts
- are the typefaces already installed on a user's computer or device — like Arial, Times New Roman, or Georgia.
- Lesson 558 — Introduction to Web Fonts
- System Settings
- Open System Settings → Accessibility → VoiceOver → toggle "Enable VoiceOver"
- Lesson 1102 — Setting Up VoiceOver on macOS
T
- Tab
- Move to next form field
- Lesson 930 — Select and Combobox PatternsLesson 933 — Date and Time Picker AccessibilityLesson 1046 — tabindex='-1' for Programmatic FocusLesson 1183 — Keyboard Support for AccordionsLesson 1466 — Emmet for Faster HTML and CSS WritingLesson 2662 — Keyboard Navigation in Interactive Charts
- Tab key
- to move between headers.
- Lesson 1186 — Responsive Patterns: Tabs to AccordionLesson 1203 — Toolbar Pattern
- Tab panels
- Arrow keys to switch between tabs horizontally
- Lesson 1072 — When Custom Navigation is Needed
- Table of contents
- Show document structure without cluttering the page
- Lesson 1181 — Accordion Pattern Overview and Structure
- Tablet (768px wide)
- Crop to show three people in the center
- Lesson 1227 — Understanding Art Direction in Responsive Images
- Tablet (Portrait)
- Lesson 391 — Common Breakpoint Values
- Tabs
- (a tablist with multiple tab panels)
- Lesson 1031 — When Semantic HTML Doesn't ExistLesson 1032 — ARIA for Complex Interactive Widgets
- tag
- a unique identifier for this sync event.
- Lesson 2334 — Background Sync API BasicsLesson 2351 — Displaying Notifications with showNotification()
- Tags
- are the actual third-party scripts or tracking pixels you want to deploy—Google Analytics events, Facebook Pixel, conversion trackers, or custom JavaScript.
- Lesson 2802 — Google Tag Manager ArchitectureLesson 2804 — Tags, Triggers, and Variables
- Tailwind CSS
- has PurgeCSS built directly into its configuration
- Lesson 1419 — Tree Shaking CSSLesson 2527 — RTL in CSS FrameworksLesson 2890 — Utility-First CSS and CSP
- Tailwind excels here
- because utility classes let you prototype directly in HTML without context-switching.
- Lesson 657 — Tailwind in Design-Heavy vs Component-Heavy Projects
- Tailwind still works well
- , but you'll extract repeated utility patterns into framework components (not CSS classes).
- Lesson 657 — Tailwind in Design-Heavy vs Component-Heavy Projects
- Take full width
- stretch from left edge to right edge of their container
- Lesson 208 — Block-Level Elements in Normal Flow
- TalkBack
- is Google's screen reader for Android devices.
- Lesson 1100 — Screen Reader Landscape Overview
- Tall stacks
- Deep function call chains that might indicate recursion issues or inefficient algorithms
- Lesson 1917 — Reading Performance Flame Charts
- target element
- (the deepest element you actually interacted with)
- Lesson 720 — Event Bubbling PhaseLesson 730 — Mouse Position and Coordinates
- Target GPU properties
- `will-change` works best with `transform` and `opacity` since these are already GPU- accelerated.
- Lesson 2596 — The Composite Layer Strategy
- Targeted landing pages
- Serve campaign-specific content based on UTM parameters or referral sources without client-side redirects.
- Lesson 1762 — Geographic and Personalized Content
- Targeted releases
- Enable premium features only for paid users, or beta features for internal testers.
- Lesson 2819 — What Are Feature Flags and Why Use Them
- Targeted sampling
- Focus on specific user segments, regions, or feature flags
- Lesson 2294 — Performance Profiling in Production
- Targeting and segmentation
- let you control *who* sees a feature based on user attributes—like geography, subscription tier, browser type, or any custom property you define.
- Lesson 2823 — Targeting and Segmentation
- TCP head-of-line blocking
- when a single TCP packet is lost, all multiplexed streams on that connection must wait for retransmission, even streams that received their data successfully.
- Lesson 2127 — HTTP/3 and QUIC Protocol
- Team Alignment
- Lesson 1424 — What is ESLint and Why Use It
- Team Collaboration
- When multiple developers work on the same project, inconsistent approaches create conflicts.
- Lesson 595 — Why CSS Architecture Matters
- Team Expertise and Comfort
- Lesson 656 — When Traditional CSS Is a Better Choice
- Team Familiarity
- Lesson 2490 — When NOT to Use Web Components
- Team familiarity matters
- If your team is unfamiliar with logical properties and the project has no internationalization needs, introducing them may add confusion without benefit.
- Lesson 465 — When to Use Logical vs Physical Properties
- Team Structure
- Lesson 2366 — Development and Maintenance Costs
- Technical control
- Fastly for advanced configuration, Vercel for simplicity
- Lesson 2159 — Popular CDN Providers
- Technology independence
- Each team can choose their internal stack
- Lesson 2489 — Micro-Frontend Architecture Boundaries
- Template literals validated
- when constructing HTML/JS dynamically
- Lesson 2906 — XSS Prevention Checklist
- Templates and Slots Pattern
- the backbone of truly reusable Web Components.
- Lesson 2485 — Templates and Slots Pattern: Reusable Component Markup
- Temporary overlays
- Dropdowns, tooltips, or pop-ups that appear and disappear
- Lesson 1092 — Focus Restoration Patterns
- Terms below were extracted from bolded phrases in lesson content. Click a lesson reference to jump
- Ternary operator approach
- Lesson 1642 — Permission-Based UI Rendering
- Test all site features
- – forms, embeds, analytics, and interactive elements
- Lesson 2881 — CSP Header Testing and Debugging
- Test by inlining
- this CSS in your `<head>` and temporarily removing external stylesheets
- Lesson 1975 — Extracting Critical CSS Manually
- Test conditions
- Date, tool versions, throttling settings
- Lesson 1928 — Establishing Performance Baselines
- Test edge cases
- Non-matching elements, deeply nested children, removed elements
- Lesson 769 — Testing Delegated Event Handlers
- Test FOUT/FOIT
- Ensure your site remains usable while fonts load
- Lesson 572 — Web Font Best Practices Checklist
- Test from multiple locations
- worldwide, revealing geographic performance issues
- Lesson 1927 — Performance Monitoring Services
- Test in different modes
- browse mode vs forms mode can change behavior
- Lesson 1125 — Testing Announcements Across Screen Readers
- Test incrementally
- Migrate one caching strategy or route at a time.
- Lesson 2415 — Migration from Manual Service Workers
- Test on slow connections
- Use DevTools throttling to ensure acceptable loading experience
- Lesson 572 — Web Font Best Practices Checklist
- Test on wide viewports
- Preview at 1920px, 2560px, or wider to see the cap in action
- Lesson 410 — Preventing Overly Large Text
- Test responsiveness
- modern methods often require less media query complexity
- Lesson 244 — Migrating from Float Layouts
- Test the same announcement
- (like form validation or a loading message) in at least 2-3 different screen readers
- Lesson 1125 — Testing Announcements Across Screen Readers
- Test the Waiting State
- Lesson 2385 — Lifecycle Best Practices
- Test thoroughly
- Users may upgrade from any previous version
- Lesson 796 — IndexedDB Wrappers and Best PracticesLesson 2949 — Updating Dependencies Safely
- Test with keyboard navigation
- (Tab, Enter, Space, Arrow keys)
- Lesson 1038 — Testing Without ARIA First
- Test with real tools
- Always verify your components with actual screen readers (NVDA, JAWS, VoiceOver) and keyboard-only navigation.
- Lesson 2472 — Shadow DOM and Accessibility
- Test with SSR enabled
- Always verify your components render identically on both environments
- Lesson 1747 — Avoiding Hydration Mismatches
- testing
- code that expects Response objects without making real network requests.
- Lesson 857 — Creating Custom ResponsesLesson 2929 — Upgrading Resources to HTTPS
- Testing controls
- Buttons and checkboxes specifically for development
- Lesson 2322 — Testing Service Workers Locally
- Testing Phase
- Test with real assistive technologies like screen readers, keyboard-only navigation, and automated accessibility checkers.
- Lesson 994 — Accessibility in the Development Lifecycle
- Testing third-party failures
- Block analytics scripts or ad networks to ensure your core functionality remains intact.
- Lesson 2204 — Blocking Requests
- Text alignment
- (`.
- Lesson 591 — Typographic Utility ClassesLesson 2521 — Icons and Visual Elements in RTLLesson 2608 — SVG Text and Labels in Charts
- Text and content properties
- Lesson 541 — Properties That Trigger Reflow
- text node
- in the DOM—and that includes whitespace you didn't even think about.
- Lesson 667 — Text Nodes and WhitespaceLesson 693 — Creating Text NodesLesson 2903 — Safe Alternatives to Dangerous APIs
- Text within images
- becomes illegible at smaller sizes
- Lesson 1227 — Understanding Art Direction in Responsive ImagesLesson 1241 — PNG: Lossless Compression and Transparency
- Text-based formats
- are highly compressible because they contain lots of repetition and patterns:
- Lesson 2135 — What to Compress and What Not to Compress
- textContent
- sets or retrieves all text inside an element.
- Lesson 694 — Setting Element Content: textContent vs innerHTMLLesson 2903 — Safe Alternatives to Dangerous APIs
- Theme
- rules define colors, typography, and visual styling that can be swapped.
- Lesson 598 — SMACSS (Scalable and Modular Architecture)Lesson 1327 — Alternative Naming Conventions: SMACSS and OOCSS
- Theme-aware
- Automatically integrate with your color, spacing, and breakpoint scales
- Lesson 651 — Plugin System Basics
- Theming
- means defining your visual language once and applying it everywhere.
- Lesson 2650 — Theming and Custom Styles
- there.
- They're not
- JWTs use **base64url encoding**, which is simply a way to represent binary data as text—it's completely reversible by anyone.
- Lesson 1580 — Encoding vs Encryption: JWT Security Basics
- Think of it like
- Adding a footnote that appears on demand, rather than cluttering your text.
- Lesson 71 — Abbreviations and DefinitionsLesson 193 — Background ImagesLesson 621 — Text Styling: Color, Alignment, and DecorationLesson 626 — Effects: Shadow, Opacity, and Blend ModesLesson 1945 — Prefetching and Preloading Split ChunksLesson 2080 — Timeout Option for Guaranteed ExecutionLesson 2181 — Adding New CSS Rules and ClassesLesson 2369 — Update Mechanisms
- Think of this as
- "Assign a new destination and add it to the travel log.
- Lesson 945 — Navigating with location
- Third row
- Takes up remaining space (flexible with `fr`)
- Lesson 326 — Defining Grid Rows with grid-template-rows
- Third-party assets
- (fonts, libraries from CDNs): `Cache-First` with long expiration — they're versioned and don't change.
- Lesson 2394 — Choosing the Right Strategy per Resource
- Third-party files
- you don't want hashed or transformed
- Lesson 1379 — Public Directory and Static Assets
- Third-party library bloat
- Do you need the entire library or just a few functions?
- Lesson 1949 — Analyzing Bundle Size and Split Points
- Third-party overrides
- Styling components from libraries that inject their own class names
- Lesson 1346 — Global Styles in CSS Modules
- Third-party provider
- If set by external services (e.
- Lesson 2972 — Cookie Policy Pages and Transparency
- Third-party resources
- require verification: check that the external service *supports* HTTPS.
- Lesson 2929 — Upgrading Resources to HTTPS
- Third-party services
- – External analytics or ad scripts with poor response times
- Lesson 2202 — Identifying Slow Resources
- Third-party tracking
- happens when external domains collect data about your visit through embedded resources.
- Lesson 2976 — First-Party vs Third-Party Tracking
- Third-Party Widgets
- Embed analytics dashboards, chat widgets, or payment forms as Web Components that work regardless of your framework choice.
- Lesson 2494 — Hybrid Approach with FrameworksLesson 2870 — Analyzing CSP Violation Reports
- This is dangerous
- If an attacker injects HTML into your page, inline scripts will execute.
- Lesson 2853 — CSP Source Keywords: 'self', 'unsafe-inline', 'unsafe-eval'
- Three fundamental selectors
- Lesson 3 — IP Addresses and Domain Names
- Three politeness levels
- Lesson 1026 — aria-live: Announcing Dynamic Changes
- Three+ weights
- Variable font wins (~150KB+ vs ~80KB variable)
- Lesson 1291 — Variable Font File Size Benefits
- Throttle
- Scroll progress, infinite scroll triggers, position tracking
- Lesson 1989 — Debouncing and Throttling Event HandlersLesson 2064 — Debouncing and Throttling Events
- Throttling
- Limits how often your function runs (e.
- Lesson 737 — Scroll Events and Performance ConsiderationsLesson 1706 — Testing Offline ScenariosLesson 1989 — Debouncing and Throttling Event HandlersLesson 2064 — Debouncing and Throttling EventsLesson 2224 — Running Lighthouse in Chrome DevTools
- Thumbnail Facades
- Replace the iframe with a static thumbnail image.
- Lesson 2834 — YouTube and Vimeo Embeds
- time
- (left to right), while the y-axis shows the **call stack depth** (bottom to top).
- Lesson 1917 — Reading Performance Flame ChartsLesson 2053 — Measuring Third-Party Script ImpactLesson 2196 — Network Panel Overview and Interface
- Time column
- Very fast (typically <10ms) since no content transferred
- Lesson 2208 — Identifying 304 Not Modified Responses
- Time Delay
- Load analytics after the critical page content is ready
- Lesson 2049 — Lazy Loading Third-Party Scripts
- Time only
- Lesson 57 — The <time> Element
- Time scales
- (`d3.
- Lesson 2630 — Scales: Mapping Data to Visual PropertiesLesson 2632 — Time and Log Scales
- Time to Interactive
- marks this moment.
- Lesson 1743 — The Hydration Process FlowLesson 1749 — Performance Cost of HydrationLesson 1750 — Partial Hydration ConceptsLesson 1908 — Total Blocking Time (TBT)Lesson 1935 — Total Page Weight BudgetsLesson 1941 — Route-Based Code SplittingLesson 2123 — Stream Prioritization in HTTP/2
- Time to Interactive (TTI)
- Less bandwidth used means faster overall page load
- Lesson 428 — Performance Implications of Responsive ImagesLesson 1736 — Total Blocking Time (TBT)Lesson 1738 — Server Response TimeLesson 1749 — Performance Cost of HydrationLesson 1751 — Progressive HydrationLesson 1756 — Measuring Hydration PerformanceLesson 1762 — Geographic and Personalized ContentLesson 1909 — Time to Interactive (TTI) (+1 more)
- Time-based bucketing
- For time-series data, group points by intervals (e.
- Lesson 2652 — Performance with Large Datasets
- Time-to-Live (TTL)
- is a duration after which a cached resource expires and should be refreshed.
- Lesson 2395 — Cache Expiration and TTL
- Timeline sections
- Main thread activity (JavaScript execution, layout, paint), GPU compositing, and more
- Lesson 2598 — Measuring Animation Performance
- Timeouts
- The server might be slow or overloaded.
- Lesson 1693 — Conditional Retries Based on Error Type
- Timers
- `setTimeout`, `setInterval`, `clearTimeout`, `clearInterval`
- Lesson 2090 — Worker Scope and Available APIsLesson 2450 — disconnectedCallback: Element Removal
- Timers and callbacks
- (`setTimeout`, `setInterval`) that never get cleared
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- timestamp
- (in seconds since Unix epoch: January 1, 1970).
- Lesson 1583 — JWT Expiration and the exp ClaimLesson 2782 — Event Tracking Fundamentals
- Timezone sanity
- Libraries like `Luxon` understand timezones properly, letting you work with "Europe/Paris" or "America/New_York" instead of cryptic offset calculations.
- Lesson 2735 — Why Use Date Libraries Over Native Date
- Timezone-aware operations
- are central to your app (booking systems, global scheduling)
- Lesson 2745 — Choosing the Right Date Library
- Timing
- How long until text appears?
- Lesson 1281 — Testing Font Loading StrategiesLesson 1702 — Offline UI IndicatorsLesson 2206 — WebSocket and EventSource InspectionLesson 2261 — XHR/Fetch Breakpoints
- Timing Analysis
- Use `timeStamp` to measure how quickly users respond, calculate delays between events, or detect double-clicks vs single clicks by comparing timestamps.
- Lesson 756 — event.timeStamp and event.isTrusted
- Timing-based budgets
- set thresholds for actual user-experienced metrics:
- Lesson 1931 — Types of Performance Budgets
- TLS
- (Transport Layer Security) are the encryption technologies that make HTTPS work.
- Lesson 13 — HTTPS and SSL/TLS
- Toast Notification
- Lesson 1702 — Offline UI Indicators
- Toggle switches or checkboxes
- for non-essential categories
- Lesson 2969 — Granular Cookie Category Controls
- Token blacklist
- Add logged-out tokens to a database blocklist (defeats statelessness but works)
- Lesson 1574 — Session Invalidation and Logout
- Token Exchange
- Your backend exchanges this code + client secret for an access token
- Lesson 1615 — OAuth 2.0 Flow Overview
- Token family tracking
- Store token chains (from rotation in lesson 1611) and revoke entire families when compromise is detected.
- Lesson 1613 — Refresh Token Revocation
- Token Persistence
- Keep the token in memory throughout the SPA lifecycle.
- Lesson 2915 — CSRF Protection in SPAs
- Token Refresh
- Since SPAs run for extended periods, tokens may expire.
- Lesson 2915 — CSRF Protection in SPAsLesson 2924 — Refresh Token Rotation
- Token refresh detection
- If using JWTs, the refresh token flow (from earlier lessons) returns a new token with updated claims.
- Lesson 1637 — Role Changes and UI Updates
- Token validation checklist
- Lesson 1626 — OAuth Libraries and Security Best Practices
- Token-based authentication
- (like JWT with Bearer tokens) fits mobile apps perfectly because:
- Lesson 1576 — Mobile and Native App Authentication
- Tokenization
- It breaks the HTML into meaningful pieces called tokens—things like `<div>`, `</div>`, text content, and attributes.
- Lesson 21 — Parsing HTML into the DOM
- Tokens exposed in URLs
- Access tokens appear in browser history, referrer headers, and logs
- Lesson 1618 — Implicit Flow and Why to Avoid It
- Too granular
- Splitting every small component into its own chunk means the overhead of fetching multiple files outweighs the benefit of parallel loading
- Lesson 1423 — Code Splitting Trade-offs
- Too many entry points
- Each route or feature split multiplies your HTTP requests
- Lesson 1423 — Code Splitting Trade-offs
- Too many listeners
- If you're attaching the same handler to 10+ elements, consider delegation.
- Lesson 767 — Delegation vs Direct BindingLesson 2185 — Event Listeners Panel
- Too robotic
- "Error code 422: The requested operation failed validation requirements.
- Lesson 1684 — Tone and Voice in Error Messages
- Tools
- – Mixins and functions (if using preprocessors)
- Lesson 599 — ITCSS (Inverted Triangle CSS) Layer ModelLesson 1331 — What is ITCSS? The Inverted Triangle ApproachLesson 1339 — ITCSS Layer Ordering and Import StrategyLesson 1915 — Synthetic vs Real User Monitoring (RUM)
- Tools to help
- Browser DevTools often include visual cubic-bezier editors, and sites like cubic-bezier.
- Lesson 505 — Custom Cubic Bezier Curves
- Tooltip trigger areas
- (even if the visible marker is smaller)
- Lesson 2658 — Touch-Friendly Interaction Targets
- Tooltips and Popovers
- These often have directional "arrows" or tails pointing to their trigger element.
- Lesson 2526 — RTL-Specific Edge Cases
- Top toolbar
- Contains the red record button (should be active), a clear button to wipe the log, filter buttons for resource types (XHR, JS, CSS, Img, etc.
- Lesson 2196 — Network Panel Overview and Interface
- Top-Level Boundary
- Always wrap your entire app with an error boundary as a safety net.
- Lesson 1669 — Positioning Error Boundaries in the Component Tree
- Total Blocking Time
- is a performance metric that measures the total amount of time the main thread was blocked during the critical period between **First Contentful Paint (FCP)** and **Time to Interactive (TTI)**.
- Lesson 1736 — Total Blocking Time (TBT)Lesson 1750 — Partial Hydration ConceptsLesson 1893 — FID vs Total Blocking Time (TBT)Lesson 1941 — Route-Based Code SplittingLesson 1995 — Why Image Optimization Matters for Performance
- Total Blocking Time (TBT)
- captures how much the main thread is blocked during hydration.
- Lesson 1756 — Measuring Hydration PerformanceLesson 1893 — FID vs Total Blocking Time (TBT)Lesson 1908 — Total Blocking Time (TBT)Lesson 1994 — Profiling Main-Thread Performance with Chrome DevToolsLesson 2053 — Measuring Third-Party Script ImpactLesson 2066 — Measuring the ImpactLesson 2225 — Understanding the Performance ScoreLesson 2794 — Script Loading Performance Impact
- Total page load time
- From initial request to load complete
- Lesson 2173 — Measuring and Improving Waterfall Metrics
- Total page weight
- Combined impact of all images
- Lesson 1248 — Measuring Format Performance ImpactLesson 1960 — Measuring Lazy Loading Impact
- Touch-Friendly Targets
- Close buttons and action buttons need to be at least 44×44 pixels (Apple's guideline) or 48×48 pixels (Material Design).
- Lesson 1161 — Mobile Modal Patterns
- Track author connections
- Link all posts by the same author
- Lesson 1787 — Related Content and Computed Fields
- Track chunk completion
- – Store which chunks succeeded (in memory, localStorage, or server-side)
- Lesson 2718 — Resumable Upload Pattern
- Track cumulative angles
- Each slice starts where the previous one ended
- Lesson 2607 — Creating Pie and Donut Charts
- Track progress
- Monitor completed chunks to show overall upload progress
- Lesson 2717 — Chunked Upload for Large Files
- Track trends
- over weeks and months, showing if your LCP is improving or degrading
- Lesson 1927 — Performance Monitoring Services
- Tracking cookies
- (analytics, advertising, social media pixels)
- Lesson 2954 — User Consent Requirements
- Trade-off
- Content freshness is bounded by your revalidation interval.
- Lesson 1801 — ISR Performance CharacteristicsLesson 2369 — Update Mechanisms
- Traditional server routing
- Lesson 975 — Client-Side Routing Fundamentals
- Traffic distribution
- 50/50 splits reach significance faster than 90/10 splits
- Lesson 2827 — Statistical Significance and Sample Size
- Traffic sources
- How users found you—search engines, social media, direct visits, or referral links.
- Lesson 2779 — Understanding Analytics and User Behavior Tracking
- Transaction completion
- (processing an order the user initiated)
- Lesson 2954 — User Consent Requirements
- Transfer size
- Actual bytes sent over the network (after compression)
- Lesson 1248 — Measuring Format Performance Impact
- Transferred size
- (smaller number) — actual bytes sent over the network after compression
- Lesson 2139 — Verifying Compression in DevTools
- Transfonter
- provide visual interfaces where you can upload fonts, check boxes for character sets (Latin, Cyrillic, etc.
- Lesson 1285 — Tools for Font Subsetting
- Transform matrix calculations
- More efficient than browser recalculations on complex chained animations
- Lesson 2546 — GSAP Overview and Why Use It
- Transforms
- `transform` (translate, rotate, scale)
- Lesson 509 — Properties That Can and Cannot TransitionLesson 1783 — GraphQL for Build-Time Data QueriesLesson 2552 — Animating CSS Properties
- Transforms direct children
- only the immediate children become flex items (not grandchildren or deeper descendants)
- Lesson 254 — Enabling Flexbox with display: flex
- Translation
- means shifting an element from its original position along the X-axis (horizontal) and/or Y-axis (vertical).
- Lesson 529 — 2D Translation with translate()Lesson 2537 — Collaboration with Translators and Translation Services
- Translation coverage tools
- scan your codebase and compare it against your translation files.
- Lesson 2536 — Translation Coverage and Missing Key Detection
- Translation tools
- rely on it to offer accurate translations.
- Lesson 80 — The <html> Element and Language Attributes
- Transparency
- RGBA lets backgrounds show through
- Lesson 182 — RGB and RGBA FunctionsLesson 1241 — PNG: Lossless Compression and TransparencyLesson 1652 — Placeholder Content for Unauthorized UsersLesson 1998 — PNG: Transparency and QualityLesson 1999 — WebP: Modern Image Format BasicsLesson 2975 — Understanding Ethical vs Invasive TrackingLesson 2981 — Transparent Data Practices
- Transparency needed
- → PNG or WebP (JPEG doesn't support transparency)
- Lesson 1246 — Format Selection Strategy
- Transparency requirements
- Clear disclosure of data collection practices
- Lesson 2953 — Understanding GDPR and CCPA Fundamentals
- Transparent disclosure
- Explain what you track and why
- Lesson 2780 — Privacy-First Analytics Philosophy
- Tree Construction
- It uses these tokens to build a tree of nodes.
- Lesson 21 — Parsing HTML into the DOM
- Tree views
- (hierarchical, expandable lists)
- Lesson 1031 — When Semantic HTML Doesn't ExistLesson 1072 — When Custom Navigation is Needed
- tree-shaking
- to scan your HTML, JavaScript, and template files, keeping *only* the utility classes you actually use.
- Lesson 616 — Development vs Production BuildsLesson 1393 — Development vs Production ModeLesson 2744 — Tree-Shaking and Bundle SizeLesson 2745 — Choosing the Right Date Library
- Trend with Context
- Area for volume ranges, Line for average
- Lesson 2647 — Recharts Composition Patterns
- Trigger layout shifts
- when content appears late (hurting CLS)
- Lesson 2047 — The Performance Cost of Third-Party Scripts
- Triggers
- define *when* tags should fire.
- Lesson 2802 — Google Tag Manager ArchitectureLesson 2804 — Tags, Triggers, and Variables
- True menus
- provide actionable choices with arrow key navigation, type-ahead, and roving tabindex
- Lesson 1172 — Disclosure Widgets vs True Menus
- True Offline-First
- Complements offline form handling patterns you've already learned
- Lesson 2333 — What is Background Sync and Why It Matters
- Truly directional needs exist
- A decorative element that *must* stay on the left side regardless of language should use `left: 0`, not `inset-inline-start: 0`.
- Lesson 465 — When to Use Logical vs Physical Properties
- TTF
- (TrueType Font) is the original desktop font format.
- Lesson 560 — Font File Formats: WOFF2, WOFF, TTF, EOT
- TTFB
- (which you learned previously) is when the kitchen acknowledges your order, while **FCP** is when the first appetizer arrives at your table.
- Lesson 1731 — First Contentful Paint (FCP)
- TTI
- measures when users can actually interact with your page.
- Lesson 1717 — CSR Performance Characteristics
- Turbopack
- (from the Vercel team) uses Rust for extreme performance and incremental computation, remembering what it's already built to avoid redundant work.
- Lesson 1399 — The Modern Bundler Landscape
- Twitter-specific features
- Like `twitter:site` handle attribution
- Lesson 1842 — Twitter Cards vs Open Graph Fallbacks
- two axes
- that work together to organize your layout.
- Lesson 256 — The Main Axis and Cross AxisLesson 458 — Block and Inline Axes
- Two main approaches emerged
- Lesson 1553 — File Uploads: REST Multipart vs GraphQL Approaches
- Two main values
- Lesson 354 — grid-auto-flow Direction
- two-dimensional layouts
- it controls both rows *and* columns simultaneously, like arranging items in a spreadsheet with precise row and column placement.
- Lesson 309 — Flexbox vs Grid DecisionLesson 310 — What is CSS Grid and When to Use It
- Two-dimensional layouts matter
- If you need precise control over both rows *and* columns simultaneously, Grid is your answer.
- Lesson 377 — When to Choose Grid Over Flexbox
- Two-way channel open
- Both sides can now send messages freely without the request-response pattern
- Lesson 877 — WebSocket Fundamentals
- Type checking
- Ensuring numbers are numbers, dates are valid dates
- Lesson 2905 — Validating and Sanitizing Input
- Type scale
- Headings and body sizes shrink on smaller screens
- Lesson 593 — Responsive Typography PatternsLesson 594 — Documentation and Type Specimens
- Type selectors
- Default styles for all elements of that type
- Lesson 121 — Basic Selectors: Type, Class, and IDLesson 137 — Selector Performance Considerations
- Type selectors and pseudo-elements
- (`div`, `p`, `::before`): Worth **0,0,0,1 points** each
- Lesson 131 — Understanding Specificity: The Point System
- Typed arrays
- `Uint8Array`, `Float32Array`, etc.
- Lesson 2088 — Structured Clone Algorithm and Data TransferLesson 2691 — Reading Files as ArrayBuffer
- Typical pattern
- Lesson 2426 — Cache Versioning Strategies
- Typical results
- Lesson 659 — Performance Implications of Utility-First CSS
- Typical setup
- Lesson 296 — Card Layouts
- Typography
- `rem` (scales with user settings)
- Lesson 159 — Absolute vs Relative: Choosing the Right UnitLesson 610 — Theme Configuration Overview
- Typos in attributes
- Misspelled attribute names or invalid values
- Lesson 1446 — Why Lint HTML? Catching Errors Early
- Typosquatting
- with packages named similar to popular libraries
- Lesson 2943 — Understanding Supply Chain AttacksLesson 2951 — Scoped Packages and Registry Security
U
- U+202A
- (LEFT-TO-RIGHT EMBEDDING, `‎` for mark): Forces LTR direction
- Lesson 2522 — Bidirectional Text (Bidi) Challenges
- U+202B
- (RIGHT-TO-LEFT EMBEDDING, `‏` for mark): Forces RTL direction
- Lesson 2522 — Bidirectional Text (Bidi) Challenges
- U+202C
- (POP DIRECTIONAL FORMATTING): Closes the embedding
- Lesson 2522 — Bidirectional Text (Bidi) Challenges
- UA-Parser.js attack (2021)
- injected cryptominers and password stealers into a package downloaded 7+ million times weekly.
- Lesson 2943 — Understanding Supply Chain Attacks
- UDP
- using a new protocol called **QUIC** (Quick UDP Internet Connections).
- Lesson 2127 — HTTP/3 and QUIC Protocol
- Unauthorized Resource Loading
- Want to ensure images only load from your CDN?
- Lesson 2839 — What is Content Security Policy?
- Uncaught exceptions
- (syntax errors, reference errors, etc.
- Lesson 2810 — Setting Up Sentry for Frontend
- Under-fetching
- occurs when one endpoint doesn't give you enough.
- Lesson 1547 — Over-Fetching and Under-Fetching Problems in REST
- Understand your audience
- Who are your users and what do they need?
- Lesson 2779 — Understanding Analytics and User Behavior Tracking
- Understandable
- means both the information and the operation of the interface must be clear.
- Lesson 988 — The Four Principles of WCAG: POUR
- Unexpected version changes
- that introduce bugs or vulnerabilities
- Lesson 2948 — Lock Files and Dependency Pinning
- Unexpectedly large chunks
- Should that "simple" component really be 200KB?
- Lesson 1949 — Analyzing Bundle Size and Split Points
- Unicode ranges
- numerical blocks that group related characters together.
- Lesson 1284 — Unicode Ranges in Font Files
- Unique, custom visualizations
- that don't fit standard chart types
- Lesson 2642 — D3 vs Higher-Level Charting Libraries
- Unique, Highly-Custom Designs
- Lesson 656 — When Traditional CSS Is a Better Choice
- Unknown at build time
- (you can't predict what users will request)
- Lesson 2420 — When to Use Each Strategy
- Unoptimized images
- – Multi-megabyte JPEGs or PNGs that should be compressed or converted to modern formats
- Lesson 2202 — Identifying Slow ResourcesLesson 2222 — Performance Insights and Recommendations
- Unordered lists
- (`<ul>`) indicate collections where order doesn't matter, like navigation menus or features.
- Lesson 1001 — Lists: Ordered, Unordered, and Description
- unplugging your mouse
- (literally or mentally):
- Lesson 1053 — Testing Tab Order Without a MouseLesson 1086 — Testing Custom Navigation
- Unregister
- Remove the worker entirely—useful when testing or removing outdated workers
- Lesson 2238 — Service Worker Registration and LifecycleLesson 2322 — Testing Service Workers LocallyLesson 2436 — DevTools Service Worker Panel
- Unregister and Hard Reload
- is your nuclear option—it removes the service worker entirely and forces a fresh start.
- Lesson 2440 — Unregister and Hard Reload
- Unregister and re-register
- Between tests, unregister your Service Worker completely to test fresh installations versus updates.
- Lesson 2435 — Testing Service Worker Updates
- Unsafe methods
- (POST, PUT, PATCH, DELETE) are CSRF-vulnerable because they perform actions.
- Lesson 2908 — State-Changing Requests and CSRF Risk
- Unstick and scroll away
- when the bottom edge of the parent reaches the sticky element's position
- Lesson 224 — Sticky Positioning Containing Block
- Unused keys
- Translations that exist but are never referenced in code (dead weight)
- Lesson 2536 — Translation Coverage and Missing Key Detection
- Up Arrow
- and **Down Arrow** keys, just like they can in native desktop applications.
- Lesson 1078 — Vertical Navigation in MenusLesson 1166 — Keyboard Navigation in MenusLesson 1178 — Keyboard Navigation in TabsLesson 1199 — Building an Accessible Combobox
- Up/Down arrows
- move through menu items vertically
- Lesson 1093 — Dropdown and Popup FocusLesson 1170 — Nested and Flyout MenusLesson 1189 — Keyboard Navigation Requirements
- Update
- Force-check for a new service worker version
- Lesson 2238 — Service Worker Registration and LifecycleLesson 2436 — DevTools Service Worker PanelLesson 2576 — useTransition for Mounting/UnmountingLesson 2629 — Selections and the Enter-Update- Exit Pattern
- Update calculations when scrolling
- to determine which items should be visible based on scroll position
- Lesson 2101 — Variable-Height Item Virtualization
- Update keyboard handlers
- to match accordion behavior instead of tab behavior
- Lesson 1186 — Responsive Patterns: Tabs to Accordion
- Update labels
- on interactive elements to reflect new context
- Lesson 1207 — Drag and Drop Accessibility
- Update on reload
- Check this box to force the browser to fetch a fresh service worker file every time you refresh the page.
- Lesson 2322 — Testing Service Workers LocallyLesson 2436 — DevTools Service Worker PanelLesson 2438 — Update on Reload and Skip Waiting
- Update preference
- Save the new locale to `localStorage` (lesson 2507)
- Lesson 2509 — Changing Language Without Page Reload
- Updates the cache
- with the fresh response for the *next* request
- Lesson 2389 — Stale-While-Revalidate Pattern
- Updating records
- uses the same `put()` method you used for adding data.
- Lesson 791 — Updating and Deleting Records
- Upload
- Push the source file to your TMS via API or CI/CD integration
- Lesson 2537 — Collaboration with Translators and Translation Services
- URI (Uniform Resource Identifier)
- that serves as its address on the web.
- Lesson 1471 — Resources and Resource Identifiers
- URL
- The address that tells your browser where to find a specific website
- Lesson 1 — What is the Internet?Lesson 5 — What is a URL?Lesson 14 — Localhost and Development ServersLesson 961 — The History Stack and Navigation StatesLesson 962 — history.pushState() Fundamentals
- URL mismatches
- Cache keys must match exactly (including query strings)
- Lesson 2425 — Debugging Cache Strategies
- URL state management
- solves this by encoding your app's viewing state directly into the query string.
- Lesson 1518 — URL State Management
- URL-based locale
- (explicit user choice, highest priority)
- Lesson 2502 — Fallback Chains for Locale Resolution
- URL-encoded
- (application/x-www-form-urlencoded) is the default format for forms.
- Lesson 893 — Form Serialization PatternsLesson 2044 — Inline SVG Data URIs
- URLs have permanently moved
- (old structure → new structure)
- Lesson 1850 — Canonical URLs vs 301 Redirects
- Usage guidelines
- "Use `--color-brand-primary` for primary CTAs and key actions"
- Lesson 1368 — Theme Documentation and Design Tokens
- Use
- Confirm completed actions like "Profile saved" or "Payment successful"
- Lesson 1712 — Toast Types and Visual Hierarchy
- Use .npmrc configuration
- to disable scripts by default in your project, enabling them only when verified safe.
- Lesson 2952 — Post-Install Scripts and Security Risks
- Use "we" and "you"
- to feel human, not "system" or passive voice
- Lesson 1684 — Tone and Voice in Error Messages
- Use `'class'`
- when you want user-controlled toggles or need to persist preferences in localStorage
- Lesson 649 — Dark Mode Configuration
- Use `<b>`, `<i>`, `<u>`
- only when you need the visual style without adding meaning — like a product name that's italicized by convention, or a keyword in documentation.
- Lesson 67 — Bold, Italic, and Underline
- Use `<g>` elements wisely
- Group related shapes to reduce selector complexity, but don't over-nest (deep hierarchies slow traversal).
- Lesson 2612 — SVG Performance Considerations
- Use `<strong>` and `<em>`
- for 99% of cases where you want bold or italic text — they're accessible and meaningful.
- Lesson 67 — Bold, Italic, and Underline
- Use `aria-atomic="true"`
- so the entire count is re-announced, not just what changed
- Lesson 1122 — Search Result Announcements
- Use `aspect-ratio` CSS
- when dimensions vary responsively
- Lesson 1270 — Cumulative Layout Shift (CLS) and Images
- Use `auto-fill` when
- Lesson 337 — Auto-Fill vs Auto-Fit: When to Use Each
- Use `auto-fit` when
- Lesson 337 — Auto-Fill vs Auto-Fit: When to Use Each
- Use `const` and `let`
- Modern block-scoped declarations prevent accidental globals
- Lesson 2113 — Global Variables and Window Pollution
- Use `getElementById()` when
- Lesson 688 — Choosing the Right Selector
- Use `inline-size`
- (default choice): For most responsive components where you care about available width but want natural content flow vertically.
- Lesson 437 — Size vs Inline-Size Containment
- Use `longdesc` attribute
- You can reference a separate page or section with the full description (though this attribute has limited modern support and isn't widely used anymore).
- Lesson 1141 — Alt Text Length and Complexity
- Use `navigator.onLine`
- as a quick initial state check
- Lesson 1701 — Implementing a Connectivity Monitor
- Use `querySelector()` when
- Lesson 688 — Choosing the Right Selector
- Use `querySelectorAll()` when
- Lesson 688 — Choosing the Right Selector
- Use `size`
- Only when you need to query both dimensions *and* have explicit height control on your container.
- Lesson 437 — Size vs Inline-Size Containment
- Use `skipWaiting()` Sparingly
- Lesson 2385 — Lifecycle Best Practices
- Use `transition-timing-function: ease-out`
- for elements entering view—they start fast and slow down naturally
- Lesson 512 — Common Transition Patterns and Best Practices
- Use `x` descriptors
- Fixed-size images (icons, logos, thumbnails with CSS width)
- Lesson 1217 — Device Pixel Ratio and srcset
- Use appropriate politeness levels
- Reserve `aria-live="assertive"` for truly urgent messages.
- Lesson 1124 — Avoiding Announcement Spam
- Use ARIA correctly
- Apply `role`, `aria-label`, or `aria-labelledby` attributes within the shadow root, referencing only internal IDs.
- Lesson 2472 — Shadow DOM and Accessibility
- Use aria-atomic="true"
- so the entire message announces, not just changed text fragments.
- Lesson 1119 — Toast Notification Patterns
- Use arrow keys
- in custom components you built
- Lesson 1098 — Testing Focus ManagementLesson 1203 — Toolbar Pattern
- Use async when
- The script is independent and doesn't rely on DOM structure or other scripts.
- Lesson 2830 — Async and Defer Script Loading
- Use auto when
- Lesson 1251 — Eager vs Lazy vs Auto Loading
- Use Cache API when
- Lesson 816 — Cache API vs localStorage and IndexedDB
- Use cache versioning
- to cleanly remove old caches during activation
- Lesson 2396 — Cache Size Management
- Use case
- You've restructured your API paths from `/api/v1/users` to `/api/v2/users` permanently.
- Lesson 1489 — 3xx Redirection Status CodesLesson 1602 — Domain and Path Restrictions for CookiesLesson 1831 — Additional Robots DirectivesLesson 2181 — Adding New CSS Rules and ClassesLesson 2917 — Token Storage Options: localStorage vs sessionStorage vs Memory
- Use cases
- Test how a page looks without a navigation bar, duplicate a card component to see grid behavior with more items, or add temporary wrapper divs to diagnose CSS issues.
- Lesson 2178 — Adding and Removing Elements
- Use clear naming
- Custom claims should be descriptive and namespace them if needed (`app_role` instead of just `role`) to avoid conflicts with future JWT standards.
- Lesson 1582 — Custom Claims and Payload Design
- Use consistent data sources
- Pass timestamps or random values as props from the server rather than generating them during render
- Lesson 1747 — Avoiding Hydration Mismatches
- Use cookies for
- Lesson 808 — When to Use Cookies vs Other Storage
- Use CSS escape sequences
- Replace dangerous characters with their `\HEX` equivalents (e.
- Lesson 2900 — CSS Context Encoding
- Use defer when
- The script needs the full DOM available or must execute in a specific order relative to other deferred scripts.
- Lesson 2830 — Async and Defer Script Loading
- Use descriptive text
- Write "Read our privacy policy" instead of "Click here"
- Lesson 72 — Hyperlinks Fundamentals
- Use DevTools 3D view
- (if available in your browser) to visualize stacking layers.
- Lesson 235 — Debugging Stacking Issues
- Use eager for
- Lesson 1251 — Eager vs Lazy vs Auto Loading
- Use explicit placement when
- Lesson 357 — Implicit vs Explicit Placement
- Use fallback values
- When using `font-variation-settings`, always pair it with standard properties like `font-weight`
- Lesson 1292 — Browser Support and Fallbacks
- Use Flexbox when
- Lesson 324 — Grid vs Flexbox: Choosing the Right Tool
- Use GET
- for searches or filtering, where data appears in the URL.
- Lesson 91 — The <form> Element and Form Submission
- Use hashes when
- Lesson 2862 — Nonces vs Hashes: When to Use Each
- Use HTTPS URLs explicitly
- Update all resource URLs to `https://`
- Lesson 2928 — Mixed Content: Blocking and Warnings
- Use iframe sandboxing
- For particularly risky embeds (ads, untrusted content), load them in sandboxed iframes with restricted permissions.
- Lesson 2829 — Embedding Third-Party Scripts Safely
- Use implicit placement when
- Lesson 357 — Implicit vs Explicit Placement
- Use in-memory fallback
- Lesson 777 — Error Handling and QuotaExceededError
- Use IndexedDB for
- Lesson 808 — When to Use Cookies vs Other Storage
- Use IndexedDB when
- Lesson 816 — Cache API vs localStorage and IndexedDB
- Use Intersection Observer
- to watch when images enter the viewport
- Lesson 1254 — Custom Lazy Loading ImplementationLesson 1256 — Lazy Loading Background ImagesLesson 2020 — Lazy Loading Background Images
- Use lazy for
- Lesson 1251 — Eager vs Lazy vs Auto Loading
- Use lightweight alternatives
- Privacy-focused tools like Plausible or Fathom are often 10-20x smaller than Google Analytics.
- Lesson 2787 — Performance Impact of Analytics
- Use live expressions when
- Lesson 2277 — Live Expressions vs Watch Expressions
- Use live regions
- to announce successful moves ("Item moved to Completed list")
- Lesson 1207 — Drag and Drop Accessibility
- Use localStorage
- For client-side data that doesn't need server access, switch to `localStorage` (typically 5-10MB limit)
- Lesson 805 — Cookie Size Limitations
- Use localStorage for
- Lesson 808 — When to Use Cookies vs Other Storage
- Use localStorage when
- Lesson 771 — localStorage vs sessionStorageLesson 816 — Cache API vs localStorage and IndexedDB
- Use lock files
- to prevent unexpected package swaps
- Lesson 2951 — Scoped Packages and Registry Security
- Use lowercase and hyphens
- for multi-word names (also called kebab-case):
- Lesson 1321 — BEM Block Naming
- Use max-width (desktop-first)
- when retrofitting older desktop-only sites or when your primary audience uses desktops.
- Lesson 392 — min-width vs max-width Strategies
- Use modern formats
- WOFF2 compresses ~30% better than older formats
- Lesson 1934 — Image and Media Asset Budgets
- Use named timezones
- when storing recurring events, user preferences, or any date that needs correct DST handling across seasons
- Lesson 2752 — Named Timezones vs Offsets
- Use nonces when
- Lesson 2862 — Nonces vs Hashes: When to Use Each
- Use PATCH when
- Lesson 1486 — PATCH: Partial Updates
- Use POST
- when submitting data that changes something (like creating an account).
- Lesson 91 — The <form> Element and Form Submission
- Use prefetching wisely
- Add prefetch hints to chunks users will likely need soon, reducing the "cost" of splitting without forcing immediate downloads.
- Lesson 1950 — Code Splitting Trade-offs and Best Practices
- Use preprocessor variables when
- Lesson 477 — Custom Properties vs Preprocessor Variables
- Use PUT when
- Lesson 1486 — PATCH: Partial Updates
- Use scoped packages
- for critical dependencies when possible
- Lesson 2951 — Scoped Packages and Registry Security
- Use sessionStorage for
- Lesson 808 — When to Use Cookies vs Other Storage
- Use sessionStorage when
- Lesson 771 — localStorage vs sessionStorage
- Use Shift+Tab
- to move backward
- Lesson 1053 — Testing Tab Order Without a MouseLesson 1098 — Testing Focus Management
- Use skip links when
- Lesson 1071 — Skip Links vs Landmarks
- Use strict mode
- Add `"use strict";` at the top of files—it throws errors for undeclared variables
- Lesson 2113 — Global Variables and Window Pollution
- Use suppressHydrationWarning flags
- (temporarily) to isolate which component causes issues
- Lesson 1746 — Hydration Mismatch Errors
- Use surrounding text
- Place a detailed description in a paragraph or caption right before or after the image.
- Lesson 1141 — Alt Text Length and Complexity
- Use Tab
- to move forward through interactive elements
- Lesson 1053 — Testing Tab Order Without a MouseLesson 1098 — Testing Focus Management
- Use the actual width
- `800w` in the filename should match an 800-pixel-wide image
- Lesson 1224 — Image Source Naming Conventions
- Use tokens
- (like JWT) for ongoing authentication, not just at connection time
- Lesson 881 — WebSocket Security Considerations
- Use User Settings for
- Lesson 1467 — Workspace Settings vs User Settings
- Use user signals
- Trigger manual checks when users perform significant actions (like submitting critical forms) rather than passively browsing.
- Lesson 2434 — Update Frequency Best Practices
- Use watch expressions when
- Lesson 2277 — Live Expressions vs Watch Expressions
- Use when
- You want strict control and no ambiguity.
- Lesson 978 — Route Matching StrategiesLesson 1128 — display:none vs visibility:hidden vs Clip Pattern
- Use width descriptors
- (`w`): Responsive images that scale with viewport
- Lesson 1217 — Device Pixel Ratio and srcset
- Use WOFF2 first
- It offers the best compression; include WOFF as fallback for older browsers
- Lesson 572 — Web Font Best Practices Checklist
- Use Workspace Settings for
- Lesson 1467 — Workspace Settings vs User Settings
- Used for primary content
- Body text fonts that cover most of your visible text
- Lesson 1295 — When to Preload Fonts vs When Not To
- User action
- Clearing browsing data, using private/incognito mode, or storage management tools
- Lesson 823 — Persistence and Durability
- User Choice
- When you call `prompt()` and get back the user's decision via `userChoice`, track whether they clicked "Install" or "Cancel".
- Lesson 2361 — Install Analytics and Metrics
- User Consent
- The user logs in and approves what your app can access
- Lesson 1615 — OAuth 2.0 Flow Overview
- User control
- Let users opt out or delete their data easily
- Lesson 2975 — Understanding Ethical vs Invasive Tracking
- User demographics
- Geographic location, device type (mobile/desktop), browser, operating system, and screen resolution.
- Lesson 2779 — Understanding Analytics and User Behavior Tracking
- User Experience
- Users stay logged in for extended periods without constant re-authentication.
- Lesson 1605 — Why Refresh Tokens ExistLesson 1765 — Hybrid Approaches: SSR + CSR
- User experience goal
- Lossy compression typically delivers better performance because smaller files load faster
- Lesson 1996 — Lossy vs Lossless Compression
- User Feedback
- Show a loading indicator while checking, so users know something is happening.
- Lesson 916 — Async Validation Patterns
- User frustration
- Slowdowns lead to abandoned sessions and lost engagement
- Lesson 2107 — What Are Memory Leaks and Why They Matter
- User in New York
- (UTC-5) sees it correctly as "1:00 AM local"
- Lesson 2747 — Understanding UTC and Timezone Offsets
- User in Tokyo
- creates an event at "3:00 PM local" (UTC+9)
- Lesson 2747 — Understanding UTC and Timezone Offsets
- User Input
- Browser continuously validates as users type
- Lesson 911 — Understanding Constraint Validation API
- User Input Events
- clicks, keypresses, mouse movements, touch gestures
- Lesson 716 — What Are DOM Events?
- User Interaction
- Load a chat widget only when someone clicks "Contact Us"
- Lesson 2049 — Lazy Loading Third-Party Scripts
- User logout
- Remove personalized content from the cache
- Lesson 813 — Deleting Cached EntriesLesson 1613 — Refresh Token Revocation
- User logs in
- client sends credentials (username/password) to the server
- Lesson 1569 — Token-Based Authentication Flow
- User preferences
- Display dashboard layouts, saved filters, or recently viewed items for logged-in users immediately.
- Lesson 1762 — Geographic and Personalized Content
- User Request
- Your app redirects the user to an authorization server (like Google or GitHub)
- Lesson 1615 — OAuth 2.0 Flow Overview
- User requests a resource
- Lesson 2154 — Stale-While-Revalidate Strategy
- User Settings
- apply globally across all projects on your computer.
- Lesson 1467 — Workspace Settings vs User Settings
- User triggers change
- Click a language selector button or dropdown
- Lesson 2509 — Changing Language Without Page Reload
- User warnings
- Alert users when forms are submitted over HTTP
- Lesson 2932 — Detecting HTTPS in JavaScript
- User-agent
- Specifies which crawler the rules apply to (`*` means all crawlers, or you can target specific bots like `Googlebot`)
- Lesson 1873 — Robots.txt Fundamentals
- User-agent detection isn't foolproof
- Bots can be spoofed, and new crawlers appear regularly
- Lesson 1881 — Dynamic Rendering and Bot Detection
- User-generated content
- where freshness matters but speed is critical
- Lesson 2392 — Cache Then Network StrategyLesson 2394 — Choosing the Right Strategy per ResourceLesson 2956 — Personal Data in the Frontend
- User-triggered
- (chat widgets, video players)
- Lesson 1942 — Component-Based Code SplittingLesson 2793 — Dynamic Script Loading with JavaScript
- User-triggered loading
- Load the widget when a user clicks a "Chat with us" button or hovers over a chat icon.
- Lesson 2831 — Lazy Loading Chat Widgets
- User-triggered migration
- – When users log in with the new system, mark them as "migrated"
- Lesson 1604 — Migrating Between Storage Strategies
- User-triggered vs Automatic
- updates have different tolerances.
- Lesson 1118 — Announcement Timing and Delays
- Users
- People assigned to one or more roles
- Lesson 1628 — Role-Based Access Control (RBAC) Fundamentals
- Users need quick switching
- between sections without page reloads
- Lesson 1175 — Tabs Pattern Overview and When to Use Them
- Users perceive continuity
- rather than sudden content appearance
- Lesson 2028 — Solid Color Placeholders
- Users provide content
- via Light DOM, which projects through slots
- Lesson 2485 — Templates and Slots Pattern: Reusable Component Markup
- Using `<polyline>`
- Lesson 2606 — Creating Line Charts with SVG
- Using CSS Custom Properties
- as a bridge—define theme-specific values that Tailwind utilities consume
- Lesson 653 — Multi-Theme Architecture Patterns
- Using Node.js
- Lesson 2938 — Generating SRI Hashes
- Using OpenSSL (command line)
- Lesson 2938 — Generating SRI Hashes
- UTC
- (Coordinated Universal Time) or the **browser's local timezone**.
- Lesson 2730 — Timezone Representation LimitationsLesson 2747 — Understanding UTC and Timezone Offsets
- UTC offset
- is a simple number: how many hours (and minutes) ahead or behind UTC a location is *at this moment*.
- Lesson 2752 — Named Timezones vs Offsets
- UTF-8
- is a universal character encoding standard that supports virtually all written languages, symbols, and emoji.
- Lesson 82 — Character Encoding with <meta charset>
- Utilities
- – Helper classes that override everything
- Lesson 599 — ITCSS (Inverted Triangle CSS) Layer ModelLesson 1328 — Utility Classes vs BEM ComponentsLesson 1331 — What is ITCSS? The Inverted Triangle ApproachLesson 1339 — ITCSS Layer Ordering and Import Strategy
- Utility classes
- that should *always* apply (e.
- Lesson 134 — !important and When to Avoid ItLesson 609 — CSS Layer DirectivesLesson 1328 — Utility Classes vs BEM Components
- Utility-first
- Fast-moving projects prioritizing speed over custom architecture
- Lesson 1340 — ITCSS vs Other Methodologies: When to Use WhatLesson 1350 — CSS Modules vs Other Approaches
- Utility-first approach
- Lesson 600 — Atomic CSS and Utility-First Approaches
- Utility-first approaches
- (like Tailwind) compose styles from single-purpose classes:
- Lesson 654 — Utility-First vs Component-Based CSS: Understanding the Trade-offs
- Utility-First CSS
- instead offers:
- Lesson 605 — What is Utility-First CSSLesson 654 — Utility-First vs Component-Based CSS: Understanding the Trade-offs
V
- Validate data before sending
- Lesson 895 — FormData Best Practices
- Validate decisions
- Does that redesign actually improve engagement?
- Lesson 2779 — Understanding Analytics and User Behavior Tracking
- Validate first
- Only allow expected values (like hex colors or specific keywords)
- Lesson 2900 — CSS Context Encoding
- Validate individual fields first
- (each date is properly formatted)
- Lesson 920 — Custom Validation for Complex Inputs
- Validate input
- Check if a form is filled out correctly before submission
- Lesson 41 — JavaScript's Role: Adding Interactivity
- Validate on meaningful events
- For date ranges, validate when *either* field changes.
- Lesson 920 — Custom Validation for Complex Inputs
- Validate origins
- Check referrer headers on sensitive actions
- Lesson 2907 — What is CSRF and Why Frontend Matters
- Validate state
- Lesson 2192 — Console.assert() for Runtime Checks
- Validation
- The resource's origin is compared to the allowed sources in that directive
- Lesson 2840 — How CSP Works in Browsers
- Validation icons
- Error/success indicators typically appear at the "end" of the field (left in RTL)
- Lesson 2523 — Form Controls and Input Direction
- Validation state management
- means maintaining a data structure that tracks which files are valid, which are invalid, and why.
- Lesson 2704 — Validation State Management
- Validation-based caching
- The server gives the file a unique identifier.
- Lesson 2141 — HTTP Caching Fundamentals
- value
- (the data):
- Lesson 773 — setItem and getItemLesson 809 — What is the Cache API and Why It MattersLesson 2234 — Inspecting localStorage and sessionStorageLesson 2774 — Intl.RelativeTimeFormat
- Value column
- The stored data (objects, arrays, primitives)
- Lesson 2235 — IndexedDB Inspection and Debugging
- VAPID public key
- (a security token that proves your server is authorized to send pushes):
- Lesson 2347 — Push Subscription Creation
- Variable fonts
- Consider variable fonts when you need multiple weights—one file instead of many
- Lesson 572 — Web Font Best Practices ChecklistLesson 573 — What Are Variable Fonts?
- Variable sizes
- Like variable-height lists, variable column widths require tracking cumulative widths for accurate positioning.
- Lesson 2103 — Virtual Grid Layouts
- Variable usage
- (`id: $userId`): Where you actually use the variable in your query
- Lesson 1528 — Variables in Operations
- variables
- let you separate those values from the query structure, making them reusable and safer.
- Lesson 1532 — Query Arguments and VariablesLesson 2802 — Google Tag Manager ArchitectureLesson 2804 — Tags, Triggers, and Variables
- Vary Header Respect
- Your origin should send `Vary: Accept-Encoding` so the CDN caches separate versions for gzip, Brotli, and uncompressed responses based on client capabilities.
- Lesson 2140 — Compression and CDN Configuration
- Vector images
- store mathematical instructions describing shapes, lines, and curves — not pixels.
- Lesson 1239 — Understanding Raster vs Vector Image Formats
- Vendor chunk splitting
- separates your `node_modules` dependencies into their own bundle file.
- Lesson 1948 — Vendor and Common Chunk Splitting
- Verbosity
- Control how much information VoiceOver announces (General → Verbosity)
- Lesson 1102 — Setting Up VoiceOver on macOS
- Vercel
- Configure in Project Settings or `.
- Lesson 1811 — Environment VariablesLesson 1823 — Jamstack Ecosystem and Platforms
- verify
- those decisions are happening as expected.
- Lesson 429 — Testing Responsive Image DeliveryLesson 1622 — State Parameter for CSRF Protection
- Verify functional images
- – For buttons or links containing images, does the alt text clearly describe the action?
- Lesson 1146 — Testing Alt Text with Screen Readers
- Verify handler execution
- Check DOM changes, state updates, or use flags
- Lesson 769 — Testing Delegated Event Handlers
- Verify headers
- in the Network tab under Response Headers
- Lesson 2881 — CSP Header Testing and Debugging
- Verify licensing
- Self-hosted fonts must have appropriate licenses for web use
- Lesson 572 — Web Font Best Practices Checklist
- Verify politeness levels
- work as expected—`polite` shouldn't interrupt, `assertive` should
- Lesson 1125 — Testing Announcements Across Screen Readers
- Verify the `state` parameter
- matches what you sent (prevents CSRF attacks—you learned about this in session management)
- Lesson 1621 — Redirect URIs and Callback Handling
- Verify zero critical violations
- Before switching, confirm your monitoring dashboard shows no reports for at least a few days across different user segments.
- Lesson 2873 — Transitioning from Report-Only to Enforcement
- Version bumping
- Change a cache name or add a comment to your Service Worker file to trigger byte-diff detection.
- Lesson 2435 — Testing Service Worker Updates
- Version change
- When you open an existing database with a *higher* version number than what's stored
- Lesson 785 — Database Versioning and onupgradeneeded
- Version changes
- New app version means old cached assets are obsolete
- Lesson 813 — Deleting Cached Entries
- Version control
- Your CSP policy evolves with your codebase
- Lesson 2865 — Build Tools and Automatic Hash Generation
- Version logging
- Include version identifiers in your Service Worker (`const VERSION = '2.
- Lesson 2435 — Testing Service Worker Updates
- Version mismatch
- Old pages may expect cached resources the new worker no longer provides
- Lesson 2377 — skipWaiting() to Bypass WaitingLesson 2428 — The skipWaiting Pattern
- Version tokens easily
- without managing dozens of font files
- Lesson 582 — Variable Fonts in Design Systems
- Version-Aware Caching
- Include version identifiers in your cache names (`static-v1`, `static-v2`).
- Lesson 2381 — Handling Version Mismatches
- Version-controlled
- (you manage updates through new service worker versions)
- Lesson 2420 — When to Use Each Strategy
- Vertical offset
- How far down (positive) or up (negative) the shadow moves
- Lesson 176 — Text ShadowLesson 205 — Text Shadow
- Via Build Tool Integration
- Lesson 2405 — Installing and Configuring Workbox
- Via CDN (Quick Start)
- Lesson 2405 — Installing and Configuring Workbox
- Via npm (Production Projects)
- Lesson 2405 — Installing and Configuring Workbox
- Victory
- also targets React with excellent accessibility and cross-platform support (works in React Native).
- Lesson 2643 — Overview of Popular Charting Libraries
- VideoObject
- and **ImageObject** schemas are structured data vocabularies from Schema.
- Lesson 1865 — Video and Image Object Schema
- View changes
- See all modified, added, or deleted files at a glance
- Lesson 1468 — Git Integration and Source Control Panel
- View diffs
- Click any modified file to see a side-by-side comparison of what changed—old version on the left, new on the right
- Lesson 1468 — Git Integration and Source Control Panel
- View page source
- (Ctrl+U): Search for "canonical" to see the raw HTML
- Lesson 1853 — Testing and Validating Canonicals
- View the Call Stack
- with meaningful function and file names
- Lesson 2283 — Debugging with Source Maps in DevTools
- viewport
- (browser window), not the element.
- Lesson 196 — Background AttachmentLesson 220 — Fixed PositioningLesson 221 — Fixed vs Absolute PositioningLesson 431 — Container Queries vs Media Queries
- viewport units
- (like `vw`) combined with calculation techniques to make font sizes proportional to screen width.
- Lesson 405 — Understanding Fluid TypographyLesson 619 — Sizing: Width and Height
- Virtual Keyboard Management
- When forms appear in mobile modals, the virtual keyboard can obscure content.
- Lesson 1161 — Mobile Modal Patterns
- Virtualization
- (also called "windowing") is a technique where you only render the DOM nodes that are currently visible in the viewport, plus a small buffer above and below.
- Lesson 2097 — What is Virtualization and When to Use ItLesson 2652 — Performance with Large Datasets
- visible viewport
- (the browser window area you can see).
- Lesson 730 — Mouse Position and CoordinatesLesson 750 — Event Coordinates: pageX, clientX, screenX, and offsetX
- Visual clarity
- Style your scrollable area so users *see* there's more content (shadows, fade effects, or visible scrollbars help).
- Lesson 1160 — Scrolling and Large Modal Content
- Visual Consistency
- Lesson 1670 — Fallback UI Design Patterns
- Visual Design
- Use calm, informative colors (yellows or oranges rather than reds).
- Lesson 2326 — Offline Indicators and Banners
- Visual differentiation
- Blurred content, lock icons, or semi-transparent overlays signal restricted access
- Lesson 1652 — Placeholder Content for Unauthorized Users
- Visual examples
- Show the color swatch or spacing demonstration
- Lesson 1368 — Theme Documentation and Design Tokens
- Visual Feedback
- Combine both approaches—show disabled buttons for common actions, hide buttons for privileged ones:
- Lesson 1655 — Action Button States
- Visual hierarchy
- Unique fonts help distinguish headings, body text, and special elements
- Lesson 558 — Introduction to Web FontsLesson 1624 — Social Login UI PatternsLesson 1662 — Handling 403: Access Denied UI
- Visual impairments
- Users who are blind or have low vision use screen readers that convert text to speech or braille
- Lesson 987 — What is Web Accessibility and Why It Matters
- Visual Proximity
- Use color, icons, or borders to create a visual connection between the error message and its source.
- Lesson 1683 — Error Message Placement and Timing
- Visual separators
- like decorative borders or spacers
- Lesson 1023 — aria-hidden: Removing from Accessibility Tree
- Visually hidden
- using the clip pattern (not `display:none`, which screen readers ignore)
- Lesson 1133 — Loading and Status Messages
- Vite
- and **Webpack Dev Server** have built-in proxy configuration:
- Lesson 870 — Development Proxies for CORSLesson 1386 — Vite vs Other Build ToolsLesson 1405 — Comparing Build TimesLesson 1406 — Plugin EcosystemsLesson 1419 — Tree Shaking CSSLesson 1984 — Build-Time Critical Resource Optimization
- Voice
- Change speech rate and voice characteristics (Speech settings)
- Lesson 1102 — Setting Up VoiceOver on macOS
- VoiceOver
- Use `VO + U`, then arrow to the Landmarks menu
- Lesson 1070 — Landmark Navigation in Screen ReadersLesson 1100 — Screen Reader Landscape Overview
- VoiceOver (macOS/iOS, built-in)
- can be pickier about timing—announcements that happen too quickly after DOM insertion may be missed.
- Lesson 1125 — Testing Announcements Across Screen Readers
- VoiceOver modifier keys
- (`Control + Option`, often abbreviated as `VO`) activate most commands.
- Lesson 1102 — Setting Up VoiceOver on macOS
- Volume controls
- Lesson 2521 — Icons and Visual Elements in RTL
- VPN or Proxy Issues
- The device might have a network connection, but intermediate networking layers could be blocking your specific API endpoints.
- Lesson 1699 — Limitations of Browser Offline Detection
- Vue
- Use `eslint-plugin-vue` which understands `.
- Lesson 1450 — Linting HTML in Templates and Components
W
- W3C CSS specifications
- live at `https://www.
- Lesson 37 — Web Standards Today: Finding Current Specifications
- W3C Nu HTML Checker
- validates your HTML and catches invalid ARIA usage during development.
- Lesson 1028 — ARIA Validation and Testing Tools
- Wait before acting
- – Not every "online" signal means stable connectivity
- Lesson 1705 — Reconnection Strategies
- Wait for consent
- Only when the user clicks do you load the actual third-party script
- Lesson 2837 — Privacy-Friendly Embed Alternatives
- Waiting (TTFB)
- – time until the first byte arrives from the server
- Lesson 2166 — Understanding Request WaterfallsLesson 2169 — Connection Overhead and TimingLesson 2198 — Understanding the Request Waterfall
- Waiting phase
- The new worker waits in the background while the old one still controls pages
- Lesson 2423 — Precache Update Flow
- waiting state
- .
- Lesson 2373 — The Waiting State and Update FlowLesson 2427 — Service Worker Update LifecycleLesson 2428 — The skipWaiting Pattern
- Want zero configuration
- Parcel handles complexity automatically.
- Lesson 1408 — Choosing the Right Bundler
- Warning toasts
- 5–6 seconds (needs attention)
- Lesson 1709 — Toast Timing and Auto-DismissLesson 1712 — Toast Types and Visual Hierarchy
- warnings
- (should review), and **info messages** (suggestions).
- Lesson 1452 — Integrating with W3C ValidatorLesson 2244 — console.warn and console.errorLesson 2928 — Mixed Content: Blocking and Warnings
- Waterfall
- Visual timeline showing when requests happened
- Lesson 2196 — Network Panel Overview and Interface
- Waterfall Chart
- A detailed timeline showing every single resource request—HTML, CSS, JavaScript, images, fonts —with color-coded bars indicating DNS lookup, connection time, waiting, and download phases.
- Lesson 1925 — WebPageTest for Deep Analysis
- Waterfall loading
- If split chunks depend on each other, they load sequentially, not in parallel, creating cascading delays
- Lesson 1423 — Code Splitting Trade-offs
- WAVE
- (browser extension) provides a visual overlay showing ARIA landmarks, labels, and errors directly on your page layout.
- Lesson 1028 — ARIA Validation and Testing ToolsLesson 1053 — Testing Tab Order Without a MouseLesson 1098 — Testing Focus Management
- Wave animations
- Combine `sin()` with custom properties to create smooth, oscillating motion—think of floating elements or breathing effects.
- Lesson 489 — Math Functions: sin(), cos(), tan(), and Trigonometry
- WCAG Documentation
- itself is your technical reference manual.
- Lesson 996 — Resources for Learning and Staying Current
- WCAG Requirements
- Lesson 186 — Color Contrast and Readability
- WeakMap
- is perfect for attaching metadata to DOM nodes or objects you don't control:
- Lesson 2117 — WeakMap and WeakSet for Automatic Cleanup
- WeakSet
- works for tracking objects without preventing their cleanup:
- Lesson 2117 — WeakMap and WeakSet for Automatic Cleanup
- web browser
- (like Chrome, Firefox, Safari, or Edge) is an application installed on your computer or phone that serves as your window to the Web.
- Lesson 16 — What is a Web Browser?Lesson 17 — Browser Architecture Overview
- Web fonts
- are custom typefaces that are downloaded from a server when someone visits your website.
- Lesson 558 — Introduction to Web FontsLesson 2418 — Precaching Static Assets
- Web fonts loading
- Text reflows when custom fonts replace fallback fonts
- Lesson 1895 — Cumulative Layout Shift (CLS) Explained
- Web licenses
- specifically permit embedding fonts in websites, often with restrictions like:
- Lesson 563 — Font Licensing and Legal Considerations
- web server
- is both the hardware (a computer) and software (a program) that stores website files and sends them to browsers when requested.
- Lesson 10 — What is a Web Server?Lesson 14 — Localhost and Development Servers
- Web Vitals library
- to measure LCP improvements across real users:
- Lesson 1960 — Measuring Lazy Loading Impact
- Web Workers
- are separate JavaScript threads that run in the background, completely independent of the main thread.
- Lesson 1992 — Moving Computation to Web WorkersLesson 2085 — What Web Workers Are and Why They Exist
- Webhooks
- that notify your hosting platform to regenerate pages
- Lesson 1781 — Headless CMS Integration Fundamentals
- WebP
- and **AVIF** create dramatically smaller files than JPEG or PNG—sometimes 30-50% smaller— which means faster page loads.
- Lesson 424 — Modern Image Formats with PictureLesson 1246 — Format Selection Strategy
- WebP lossless
- to avoid compression artifacts around sharp edges
- Lesson 2002 — Format Selection Decision Tree
- WebP/AVIF
- with fallbacks for better compression
- Lesson 2002 — Format Selection Decision TreeLesson 2004 — Quality Settings and Visual Perception
- Webpack
- comes in.
- Lesson 1387 — What is Webpack and Why Use ItLesson 1405 — Comparing Build TimesLesson 1406 — Plugin EcosystemsLesson 1419 — Tree Shaking CSSLesson 1984 — Build-Time Critical Resource Optimization
- Webpack and Parcel
- bundle everything upfront before serving your development server.
- Lesson 1386 — Vite vs Other Build Tools
- Webpack plugins
- like `webpack-bundle-analyzer` can be paired with custom scripts or plugins like `size-limit` to automatically fail builds when bundle budgets are exceeded.
- Lesson 1937 — Enforcing Budgets in CI/CD
- WebPageTest
- (webpagetest.
- Lesson 1318 — Testing and Measuring Font-Related CLSLesson 1983 — Measuring Critical Resource ImpactLesson 2232 — Lighthouse Limitations and Complementary Tools
- WebSocket/real-time approach
- If your app uses real-time connections, the backend can push role changes instantly when they occur.
- Lesson 1637 — Role Changes and UI Updates
- WebSockets require more code
- Lesson 882 — Choosing Between SSE and WebSockets
- Weight
- (thin to black)
- Lesson 573 — What Are Variable Fonts?Lesson 589 — Heading HierarchyLesson 2123 — Stream Prioritization in HTTP/2
- Weight axis
- From thin (100) to black (900), and any value in between (like 427 or 863)
- Lesson 1287 — Introduction to Variable Fonts
- what
- parts of a live region get announced and **how much** context is provided when dynamic content changes.
- Lesson 1027 — aria-atomic and aria-relevantLesson 2222 — Performance Insights and RecommendationsLesson 2346 — Permission Best Practices and TimingLesson 2881 — CSP Header Testing and Debugging
- What it is
- `role="tablist"`, `role="tab"`, `role="tabpanel"`
- Lesson 1032 — ARIA for Complex Interactive Widgets
- What it means
- `flex-grow: 1`, `flex-shrink: 1`, `flex-basis: 0%`
- Lesson 284 — Common flex Shorthand Values
- What's the alternative
- Sometimes a slightly larger, well-maintained package is safer than many small ones
- Lesson 2950 — Minimizing Dependency Count
- What's the true cost
- Check the package's dependency tree—a 10-line utility might pull in 50 other packages
- Lesson 2950 — Minimizing Dependency Count
- WHATWG HTML Living Standard
- at `https://html.
- Lesson 37 — Web Standards Today: Finding Current Specifications
- when
- to load a resource.
- Lesson 1250 — The loading='lazy' AttributeLesson 1639 — Permission Checking FundamentalsLesson 1971 — When to Use Each Hint TypeLesson 2198 — Understanding the Request WaterfallLesson 2578 — useChain for Orchestration
- When arrow keys navigate
- The currently focused item's `tabindex` becomes `"-1"`, and the newly focused item's `tabindex` becomes `"0"`, then you programmatically focus it
- Lesson 1074 — Roving tabindex Pattern
- When contextually relevant
- Ask in response to a user action that naturally connects to notifications (clicking "Get alerts," enabling a reminder feature)
- Lesson 2346 — Permission Best Practices and Timing
- When Errors Appear
- Lesson 935 — Focus Management in Forms
- When to use
- Short tab panels, simple content, fast-loading data.
- Lesson 1180 — Automatic vs Manual Tab Activation
- When to use it
- Lesson 1346 — Global Styles in CSS ModulesLesson 2268 — Understanding Step Over, Step Into, and Step Out
- where
- to send the data and **how** to send it:
- Lesson 91 — The <form> Element and Form SubmissionLesson 1279 — font-display in @font-face RulesLesson 1639 — Permission Checking FundamentalsLesson 2853 — CSP Source Keywords: 'self', 'unsafe- inline', 'unsafe-eval'
- Where to go
- The domain name (which DNS converts to an IP address)
- Lesson 7 — The Request-Response Cycle
- Which element it controls
- – Use `aria-controls` with the menu's ID
- Lesson 1164 — Menu Button Semantics and ARIA
- Whitelist matching
- Accepting only predetermined valid values (dropdowns, radio buttons)
- Lesson 2905 — Validating and Sanitizing Input
- Why
- it matters (impacts user experience metrics)
- Lesson 2222 — Performance Insights and RecommendationsLesson 2346 — Permission Best Practices and Timing
- Why all four
- Each event fires at different times during the drag operation.
- Lesson 2676 — Making Elements Drop Zones
- Why do this
- You get all the native element's functionality for free—form submission, focus management, ARIA support, keyboard navigation—plus your custom enhancements.
- Lesson 2453 — Extending Built-in Elements
- Why does this matter
- Semantic HTML helps search engines understand your content, makes your site accessible to people using screen readers, and makes your code easier for other developers (and future you!
- Lesson 2 — What is the Web?
- Why exclude the button
- The button has its own toggle logic.
- Lesson 1168 — Escape Key and Click-Outside Handling
- Why is this useful
- Imagine you have a navigation menu where you want all links in uppercase for visual consistency, but you don't want to type them that way in your HTML (for accessibility and maintenance reasons).
- Lesson 173 — Text Transform and Capitalization
- Why it works
- An attacker's malicious site cannot read cookies from your domain (thanks to same-origin policy) and therefore cannot forge the custom header.
- Lesson 2912 — Double Submit Cookie Pattern
- Why this is harmful
- Users with low vision *need* the ability to zoom.
- Lesson 388 — Common Viewport Pitfalls
- Why this matters
- A page might load perfectly stable (CLS 0), but if a user clicks a button and triggers multiple shifts 3 seconds later, that new session window could produce a poor CLS score.
- Lesson 1897 — CLS Thresholds and Session Windows
- Wide adoption
- Popular libraries get more security scrutiny
- Lesson 1626 — OAuth Libraries and Security Best Practices
- Wide panoramas
- become unreadable when shrunk to mobile widths
- Lesson 1227 — Understanding Art Direction in Responsive Images
- Widget roles
- describe interactive components (`button`, `tab`, `slider`)
- Lesson 1014 — ARIA Roles: Defining Element Purpose
- width
- , even for top/bottom values (this surprises many developers)
- Lesson 157 — Percentage ValuesLesson 573 — What Are Variable Fonts?Lesson 1263 — The Old Padding- Bottom TechniqueLesson 2212 — Reading the Timeline: Main Thread ActivityLesson 2605 — Creating Bar Charts with SVG
- Width (`wdth`)
- Adjusts horizontal compression or expansion (condensed to extended)
- Lesson 1288 — Variable Font Axes
- Width determined by content
- Inline elements only take up as much width as their content needs.
- Lesson 209 — Inline Elements in Normal Flow
- Width or descriptor
- The actual pixel width or device pixel ratio (`400w`, `800w`, `2x`)
- Lesson 1224 — Image Source Naming Conventions
- Wildcard (any origin)
- Lesson 863 — Access-Control-Allow-Origin Header
- Wildcard scopes
- like `user:*` for all user-related permissions
- Lesson 1619 — OAuth Scopes and Permissions
- Windows 10/11
- Lesson 557 — Testing Reduced Motion Implementations
- With
- hardware acceleration, you draw each character on a separate transparent sheet once, then just slide the sheets around—much faster!
- Lesson 545 — Hardware Acceleration and Layer Promotion
- With delegation
- Lesson 758 — What is Event Delegation?Lesson 763 — Performance Benefits of Delegation
- With preload
- The font request starts immediately, parallel to the CSS—you'll see it near the top of the waterfall, starting early.
- Lesson 1299 — Measuring Preload Impact on Font Loading Performance
- Within 60 seconds
- All users get that same cached version
- Lesson 1796 — Configuring Revalidation Intervals
- Within a single policy
- If you accidentally repeat a directive (e.
- Lesson 2878 — CSP Header Precedence Rules
- Within sections or articles
- each `<article>` or `<section>` can have its own footer with metadata specific to that content (like an author's bio at the end of a blog post)
- Lesson 53 — The <footer> Element
- without
- changing its position in the document's layout flow.
- Lesson 528 — The Transform Property and Its PurposeLesson 545 — Hardware Acceleration and Layer Promotion
- Without HATEOAS
- (traditional approach):
- Lesson 1477 — HATEOAS: Hypermedia as the Engine of Application State
- Without preload
- The font request starts *after* the CSS is parsed—you'll see a delay between when the page loads and when the font begins downloading.
- Lesson 1299 — Measuring Preload Impact on Font Loading Performance
- WOFF
- (Web Open Font Format) is WOFF2's older sibling.
- Lesson 560 — Font File Formats: WOFF2, WOFF, TTF, EOT
- WOFF2
- (Web Open Font Format 2) is the champion for modern web development.
- Lesson 560 — Font File Formats: WOFF2, WOFF, TTF, EOTLesson 571 — Optimizing Web Font Performance
- Word order varies
- English might say "5 items," but Japanese puts the number after: "items 5"
- Lesson 2530 — Interpolation and Variable Substitution
- Work offline
- Serve cached responses when the network is unavailable
- Lesson 809 — What is the Cache API and Why It Matters
- Workbox
- is a powerful library created by Google that abstracts away the complexity of writing service workers from scratch.
- Lesson 2404 — What is Workbox and Why Use It
- Works without JavaScript
- Basic content displays even if JavaScript fails
- Lesson 1718 — What is Server-Side Rendering (SSR)?
- Workspace Settings
- are stored inside a specific project folder (in `.
- Lesson 1467 — Workspace Settings vs User Settings
- Wrap behavior
- Often, pressing Right at the end loops to the start
- Lesson 1073 — Arrow Key Navigation Patterns
- Wrapper/Container
- Controls maximum width and centers content horizontally.
- Lesson 1336 — The Objects Layer: Layout Primitives and Structure
- Wrapping focus
- from the last element back to the first (and vice versa with Shift+Tab)
- Lesson 1050 — Focus Trapping in Modal Dialogs
- Write simpler base styles
- fewer columns, simpler layouts, less CSS to override later
- Lesson 380 — Mobile-First Philosophy
- Wrong handler
- Click the function link to see the actual code and verify it's doing what you expect
- Lesson 2185 — Event Listeners Panel
X
- X-HTTP-Method-Override
- header (or variations like `X-Method-Override`).
- Lesson 1496 — Method Override and Constraints
- XHR/Fetch Breakpoints
- to catch asynchronous state changes.
- Lesson 2267 — Breakpoint Strategies for Different Scenarios
- XHTML (2000)
- tried to make HTML stricter and XML-compatible.
- Lesson 31 — HTML Evolution: From HTML 1.0 to HTML5
- XML
- might be required for enterprise systems or older integrations
- Lesson 1475 — Resource Representation
- XML sitemap validators
- check syntax errors and schema compliance
- Lesson 1876 — Testing and Validating Sitemaps and Robots.txt
- XSS attacks
- (malicious JavaScript injected into your page can read it).
- Lesson 778 — Security and Same-Origin Policy
Y
- Yellow (warn)
- is for style preferences or potential improvements that aren't dealbreakers.
- Lesson 1430 — Rules: Errors, Warnings, and Off
- Yellow bars
- JavaScript execution
- Lesson 1994 — Profiling Main-Thread Performance with Chrome DevToolsLesson 2212 — Reading the Timeline: Main Thread Activity
- you
- are responsible for:
- Lesson 1473 — Statelessness in REST APIsLesson 1616 — OAuth Roles and Terminology
- You make a request
- You type a website address (URL) into your browser, like ordering from a menu
- Lesson 1 — What is the Internet?
- You need element-specific data
- that's easier to capture in a closure
- Lesson 767 — Delegation vs Direct Binding
- You need quick alignment
- Centering items or spacing them evenly in a single direction is often faster with Flexbox.
- Lesson 377 — When to Choose Grid Over Flexbox
- Your browser displays it
- Your browser receives these files and assembles them into the visual web page you see, like your food being plated and served
- Lesson 1 — What is the Internet?
- Your defense
- Implement **cache size limits** and **expiration policies** (as covered in earlier lessons).
- Lesson 2422 — Cache Size Limitations
- YouTube embeds
- Show a thumbnail with a play button instead of loading YouTube's ~500KB+ JavaScript upfront
- Lesson 2050 — Script Loading Facades
Z
- Zero persistence
- The user must log in again after every page refresh or browser restart.
- Lesson 1598 — Memory-Only Token Storage
- Zero runtime cost
- Processing happens before deployment, not on user requests
- Lesson 2006 — Build-Time Image Optimization Pipeline
- Zero Server Computation
- No database queries, no template rendering, no server logic per request—just static file retrieval, the fastest operation web servers can perform.
- Lesson 1723 — SSG Performance Characteristics
- ZIP archives
- When bundling multiple files or including uploaded media
- Lesson 2957 — Right to Access and Data Portability