Skip to content
Optimal Lab

Frontend and the browser

See what the browser does between your code and the pixels.

Start: From URL to pixels →33 live · 27 coming

Sessions

Go in order. Each session is one idea you can drag, step and break.

01How the browser works

6 live · 2 coming

From a URL to pixels on the screen.

  1. Interactive

    Live

    From URL to pixels

    Everything that happens after you press Enter, in order.

    Open session →

  2. Interactive

    Coming soon

    Parsing HTML into the DOM

    How the browser turns markup into a tree it can work with.

  3. Interactive

    Live

    The cascade and specificity

    Why this rule won over that one.

    Open session →

  4. Interactive

    Live

    Style, layout, paint and composite

    The four stages that turn the DOM into pixels.

    Open session →

  5. Interactive

    Coming soon

    Reflows and repaints

    What makes the browser redo layout, and how to avoid it.

  6. Interactive

    Live

    The browser event loop

    Tasks, microtasks and when the screen gets a chance to update.

    Open session →

  7. Interactive

    Live

    Event bubbling and capturing

    How one click travels down and back up the tree.

    Open session →

  8. Interactive

    Live

    Web workers

    Move heavy work off the main thread.

    Open session →

02JavaScript in depth

4 live · 2 coming

The language features that trip people up.

Already live in other tracks: The event loop, phase by phase

  1. Interactive

    Live

    Closures and scope

    Functions that remember the variables around them.

    Open session →

  2. Interactive

    Live

    How this is decided

    Four rules that decide what this points to.

    Open session →

  3. Interactive

    Live

    Prototypes and classes

    What a class really is underneath.

    Open session →

  4. Interactive

    Live

    Promises and async/await

    What await actually pauses, and what keeps running.

    Open session →

  5. Interactive

    Coming soon

    Memory and garbage collection

    How the engine finds memory nobody can reach.

  6. Interactive

    Coming soon

    ES modules and bundling

    Imports, tree shaking and how one file becomes many chunks.

03CSS and layout

6 live · 0 coming

Getting boxes where you want them.

  1. Interactive

    Live

    The box model

    Content, padding, border and margin, and box-sizing.

    Open session →

  2. Interactive

    Live

    Flexbox

    Grow, shrink and basis: how space is shared along a line.

    Open session →

  3. Interactive

    Live

    CSS Grid

    Rows, columns and areas for two-dimensional layout.

    Open session →

  4. Interactive

    Live

    Positioning and stacking contexts

    Why z-index: 9999 still sits behind something.

    Open session →

  5. Interactive

    Live

    Responsive design

    Media queries, container queries and fluid sizes.

    Open session →

  6. Interactive

    Live

    Animations and transitions

    Which properties animate cheaply and which cause jank.

    Open session →

04React

4 live · 3 coming

How React decides what to update.

  1. Interactive

    Live

    Rendering and reconciliation

    Render, diff, commit: how React updates the DOM.

    Open session →

  2. Interactive

    Live

    Why components re-render

    State, props, context and parents: every trigger, made visible.

    Open session →

  3. Interactive

    Live

    useState and useEffect, step by step

    When state updates land and when effects run.

    Open session →

  4. Interactive

    Live

    memo, useMemo and useCallback

    Skip work you don't need, and when it doesn't help.

    Open session →

  5. Interactive

    Coming soon

    Context and prop drilling

    Share state down the tree, and what re-renders when it changes.

  6. Interactive

    Coming soon

    React Server Components

    Components that run on the server and send no JavaScript.

  7. Interactive

    Coming soon

    Suspense and streaming

    Show something now and fill the rest in as data arrives.

05State and data fetching

2 live · 3 coming

Keeping the screen in sync with the server.

  1. Interactive

    Coming soon

    Local, shared and server state

    Different kinds of state need different homes.

  2. Interactive

    Live

    Data fetching and caching

    Stale-while-revalidate, deduplication and refetching.

    Open session →

  3. Interactive

    Live

    Optimistic updates

    Show the change now, roll back if the server says no.

    Open session →

  4. Interactive

    Coming soon

    Forms and validation

    Controlled inputs, client checks and server errors.

  5. Interactive

    Coming soon

    State in the URL

    Filters and tabs that survive a reload and a shared link.

06Rendering strategies

2 live · 3 coming

Where and when HTML gets made.

  1. Interactive

    Live

    CSR, SSR, SSG and ISR

    Render in the browser, on each request, at build time, or in between.

    Open session →

  2. Interactive

    Live

    Hydration

    Make server HTML interactive, and why mismatches happen.

    Open session →

  3. Interactive

    Coming soon

    Streaming server rendering

    Send the page in pieces as each part is ready.

  4. Interactive

    Coming soon

    Islands and partial hydration

    Ship JavaScript only for the parts that need it.

  5. Interactive

    Coming soon

    Rendering at the edge

    Render close to the user, and what you can't do there.

07Web performance

5 live · 1 coming

Fast pages, measured the way users feel them.

Already live in other tracks: CDNs: caching at the edge

  1. Interactive

    Live

    Core Web Vitals

    LCP, INP and CLS: what each measures and what hurts it.

    Open session →

  2. Interactive

    Coming soon

    The critical rendering path

    What blocks the first paint, and how to unblock it.

  3. Interactive

    Live

    Code splitting and lazy loading

    Load only the code this page needs.

    Open session →

  4. Interactive

    Live

    Images and fonts

    Formats, sizes, lazy loading and avoiding layout shift.

    Open session →

  5. Interactive

    Live

    Browser caching and service workers

    Cache headers, revalidation and working offline.

    Open session →

  6. Interactive

    Live

    Long tasks and a blocked main thread

    Why the page freezes, and how to break work up.

    Open session →

08Browser APIs and security

3 live · 2 coming

What the browser lets pages do, and stops them doing.

Already live in other tracks: Cross-site scripting (XSS), Cross-site request forgery (CSRF)

  1. Interactive

    Live

    Cookies, localStorage and IndexedDB

    Where to keep data in the browser, and who can read it.

    Open session →

  2. Interactive

    Live

    CORS

    Why the browser blocks the request, and how the server allows it.

    Open session →

  3. Interactive

    Live

    Content Security Policy

    Tell the browser which scripts it may run.

    Open session →

  4. Interactive

    Coming soon

    Progressive web apps

    Install, offline and push for a website.

  5. Interactive

    Coming soon

    Web components

    Custom elements and the shadow DOM.

09Accessibility

1 live · 3 coming

Pages everyone can use.

  1. Interactive

    Coming soon

    Semantic HTML and the accessibility tree

    What a screen reader actually gets from your markup.

  2. Interactive

    Live

    Keyboard and focus

    Tab order, focus traps and visible focus.

    Open session →

  3. Interactive

    Coming soon

    ARIA

    When ARIA helps, and when it makes things worse.

  4. Interactive

    Coming soon

    Contrast and motion

    Readable colours and respecting reduced motion.

10Tooling and testing

0 live · 4 coming

The build and test setup around the code.

  1. Interactive

    Coming soon

    Bundlers

    Vite, webpack and esbuild: what a bundler does.

  2. Interactive

    Coming soon

    TypeScript for the frontend

    Types for props, state and API responses.

  3. Interactive

    Coming soon

    Testing components and flows

    Unit, component and end-to-end tests, and what each catches.

  4. Interactive

    Coming soon

    Design systems

    Shared components and tokens across a product.

11Case studies: build it

0 live · 4 coming

One interface, end to end.

  1. Interactive

    Coming soon

    An infinite scrolling feed

    Pagination, virtualization and keeping scroll position.

  2. Interactive

    Coming soon

    An autocomplete input

    Debouncing, race conditions and keyboard support.

  3. Interactive

    Coming soon

    A live dashboard

    Real-time updates without re-rendering everything.

  4. Interactive

    Coming soon

    An offline-first notes app

    Local storage, sync and conflicts.

In production

Tools you can use

96 technologies across 33 live sessions. Same names in any language — pick a session to see how the idea maps to the real world.

Services, platforms, protocols and standards — not one stack.

Roadmap

Coming soon

A step-by-step path through the track, with sessions and practice at each stage.

  1. Stage 1

    How the browser works

  2. Stage 2

    JavaScript and CSS in depth

  3. Stage 3

    React and state

  4. Stage 4

    Rendering strategies and performance

  5. Stage 5

    Accessibility, security and tooling

Projects

Coming soon

Build something real to lock in the skill.

  • Build an infinite scrolling feed
  • Build an accessible autocomplete
  • Make a slow page fast