Frontend Developer Beginner to Expert
A roadmap for learning frontend development, from HTML, CSS, and JavaScript fundamentals to modern frameworks, state management, performance, and accessibility.
Frontend Developer Beginner to Expert
This roadmap walks you from absolute beginner to a strong, hireable frontend engineer. Work through the stages in order. The early ones build the mental model and language fundamentals everything else depends on, and the later ones cover shipping apps that are fast, accessible and tested. Skim sections you already know, slow down on the ones you do not, and build something at every stage.
How the Web Works
HTTP and HTTPS
Requests, responses, methods, status codes, and how TLS protects them in transit.
DNS and Domains
How human-readable names become IP addresses your browser can actually reach.
How Browsers Render a Page
The pipeline from HTML parsing to the DOM, CSSOM, render tree, layout, and paint.
Hosting and CDNs
Where your code lives and how content delivery networks make it fast for users worldwide.
HTML and Semantic Markup
Document Structure
Doctype, head, body, meta tags, character encoding, and the viewport meta for mobile.
Semantic Elements
header, nav, main, article, section, aside, footer, and figure communicate meaning, not just style.
Forms and Inputs
All the input types, labels, fieldsets, and built-in validation that the platform gives you for free.
Images, Media, and SVG
img alt text, picture and srcset for responsive images, video and audio elements, and inline SVG.
CSS Fundamentals
Selectors and Specificity
Type, class, id, attribute, and pseudo selectors plus the specificity rules that decide who wins.
The Box Model
Content, padding, border, margin, and the difference between content-box and border-box sizing.
Colors, Units, and Custom Properties
Hex, rgb, hsl, oklch, rem/em/px/percentages, and CSS variables for theming.
The Cascade and Inheritance
How the cascade resolves conflicts and which properties are inherited from parent to child.
CSS Layout and Responsive Design
Flexbox
One-dimensional layout: alignment, distribution, wrapping, and order.
CSS Grid
Two-dimensional layout: grid templates, areas, auto-fit and auto-fill, and where it beats flex.
Media Queries
Adapt layouts to screen size, orientation, color scheme (dark mode), and reduced motion preferences.
Mobile-First Workflow
Design and code for small screens first, then progressively enhance for larger viewports.
Container Queries
Style components based on their container size rather than the viewport.
JavaScript Language Essentials
Variables, Types, and Scope
var, let, const, primitive vs reference types, block vs function scope, and hoisting.
Functions and Closures
Function declarations vs arrow functions, the this keyword, and how closures capture variables.
Arrays and Objects
Common methods (map, filter, reduce, find), spread/rest, and immutable update patterns.
Control Flow and Iteration
if/else, switch, for/for-of/for-in, while, and when each loop is the right tool.
Modern ES6+ Features
Destructuring, template literals, default parameters, optional chaining, nullish coalescing, and ES modules.
The DOM and Browser APIs
DOM Selection and Manipulation
querySelector, createElement, appendChild, classList, and modifying attributes safely.
Events and Event Delegation
addEventListener, bubbling vs capturing, and delegating to a common ancestor for dynamic elements.
Fetch API and Promises
Make HTTP requests with fetch, handle responses, errors, and AbortController for cancellation.
async and await
Write asynchronous code that reads top-to-bottom instead of nested .then chains.
Storage: localStorage, sessionStorage, Cookies
When to use each, their size limits, expiry behavior, and security implications.
Version Control with Git and GitHub
Git Basics
init, clone, status, add, commit, push, pull, and reading the log.
Branching and Merging
Create branches, switch between them, merge changes, and resolve simple conflicts.
GitHub Workflow
Fork, pull requests, code review, issues, and protected branches in a team setting.
Rebase vs Merge
When to rewrite history with rebase, when to preserve it with merge, and what never to rebase.
Package Managers and Build Tooling
npm and package.json
Installing dependencies, semver ranges, scripts, devDependencies vs dependencies, and lockfiles.
pnpm and yarn
Faster alternatives to npm with disk-efficient stores and workspaces for monorepos.
Vite
The default modern dev server and bundler: instant HMR, native ESM in dev, Rollup for production.
Bundlers Conceptually
What webpack, Rollup, esbuild, and Turbopack actually do and why bundling exists.
Linting and Formatting
ESLint catches bugs, Prettier kills bikeshedding. Run both in pre-commit hooks and CI.
A Modern Framework (React)
Components and JSX
Functional components, JSX syntax, and how it compiles to plain JavaScript.
Props and Composition
Pass data down with props, compose small components into bigger ones, and avoid deep prop drilling.
Hooks: useState and useEffect
Manage local state with useState; subscribe to external systems and run side effects with useEffect.
Conditional Rendering and Lists
Render based on state, map over arrays with stable keys, and avoid common rendering bugs.
Comparing React, Vue, and Svelte
Know enough about each to pick the right one for a project or a job market.
State Management
Local State vs Lifted State
Start with useState in the component that owns the data; lift state up only when siblings need it.
Context API
Pass values to deeply nested components without prop drilling, plus the re-render trade-offs.
External Stores: Zustand, Redux Toolkit, Jotai
When the Context API stops scaling, reach for a small store. Know one well.
When You Do Not Need a Store
Server state belongs in a data-fetching library; URL state belongs in the URL; not everything is global.
Routing and Data Fetching
Client-Side Routing
Map URLs to components with React Router, TanStack Router, or your framework router; handle nested routes.
REST APIs
Read, parse, and design against REST endpoints; understand status codes, methods, and pagination.
GraphQL
Query exactly what you need from a single endpoint; learn enough to read schemas and write basic queries.
Data-Fetching Libraries
TanStack Query and SWR handle caching, deduping, retries, and revalidation so you stop reinventing them.
Server vs Client Data
Know the difference between data the server already has and ephemeral UI state. They want different tools.
Styling Approaches
Vanilla CSS and CSS Modules
Plain CSS works fine for small apps; CSS Modules add automatic class scoping with zero runtime.
Tailwind CSS
A utility-first framework that ships small bundles and keeps styles co-located with markup.
CSS-in-JS
Styled Components, Emotion, and the runtime trade-offs. Increasingly being replaced by Tailwind or vanilla CSS.
Design Tokens and Theming
Use CSS variables for colors, spacing, and typography so themes and dark mode are one switch away.
TypeScript for Frontend
TypeScript Basics
Primitives, arrays, objects, interfaces vs types, unions, and literal types.
Typing React Components and Props
Function components, props interfaces, children, event handlers, and refs typed correctly.
Generics and Utility Types
Partial, Pick, Omit, Record, ReturnType, and writing your own generic helpers.
tsconfig and Strict Mode
Turn on strict, noUncheckedIndexedAccess, and exactOptionalPropertyTypes early to avoid pain later.
Testing
Unit Tests with Vitest or Jest
Test pure functions, hooks, and small modules in isolation. Fast and run in milliseconds.
Component Tests with React Testing Library
Render components and assert on what the user sees, not on implementation details.
End-to-End with Playwright or Cypress
Drive a real browser through real flows: sign in, add to cart, checkout. Slowest but highest signal.
Visual Regression Testing
Tools like Chromatic and Percy catch unintended UI changes by diffing screenshots.
Web Performance and Core Web Vitals
Core Web Vitals: LCP, INP, CLS
Largest Contentful Paint (load), Interaction to Next Paint (responsiveness), Cumulative Layout Shift (stability).
Code Splitting and Lazy Loading
Ship less JavaScript up front with dynamic import, React.lazy, and route-based splitting.
Image Optimization
Modern formats (AVIF, WebP), responsive srcset, width and height to prevent CLS, lazy loading.
Caching, HTTP/2, and HTTP/3
Cache-Control headers, immutable assets, and how newer HTTP versions reduce round trips.
Lighthouse and Web Vitals Tools
Measure with Lighthouse in DevTools and the web-vitals library; track real-user metrics in production.
Accessibility
Semantic HTML and Landmarks
The right element for the right job removes most accessibility bugs before you write any ARIA.
Keyboard Navigation and Focus Management
Every interaction must work without a mouse. Manage focus deliberately on route changes and in modals.
ARIA: When to Use It (and When Not To)
The first rule of ARIA is do not use ARIA when a native element will do the job.
Color Contrast and Forms
Hit WCAG AA contrast ratios, label every input, and pair errors with the field they describe.
Screen Reader Testing
Try VoiceOver on macOS or NVDA on Windows. Five minutes a feature catches issues automated tools miss.
Progressive Web Apps and Service Workers
Web App Manifest
A small JSON file that lets users install your site to the home screen with an icon and start URL.
Service Workers: caching and offline
A scriptable network proxy that runs even when the page is closed; powers offline support and push.
Push Notifications
Re-engage users with the Push API and a service worker that handles notification events.
Workbox
Google's library that wraps service worker caching strategies into a few lines of config.
Deployment, CI, and Hosting
Static Hosting
Vercel, Netlify, Cloudflare Pages, and GitHub Pages host SPA and SSG sites with a single git push.
Continuous Integration with GitHub Actions
Run lint, tests, and a production build on every PR; fail fast before code reaches main.
Preview Deployments
A unique URL for every PR so reviewers click around the change in a real environment before merge.
Environment Variables and Secrets
Keep API keys out of the bundle and out of git history; use platform-managed secrets per environment.
Monitoring and Error Tracking
Sentry, Datadog, or Better Stack catch production errors and real-user performance issues.
Comments
Was this useful?
Continue on this topic
The same subject, covered a different way from the roadmap above.
QuizCSS Fundamentals: Selectors, Box Model & Styling
Master CSS fundamentals: selectors, box model, properties, layout basics, and styling techniques. Build the foundation for web design and responsive layouts.
FlashcardsJavaScript Intermediate Flashcards
Intermediate and advanced JavaScript concepts for deeper mastery using spaced repetition.
Dev tipKubernetes Namespaces: Organize, Isolate, and Secure Multi-Team Clusters
Sharing one Kubernetes cluster across teams without the chaos. This dev tip walks through layered namespace isolation: ResourceQuotas, LimitRanges, default-deny NetworkPolicies, and namespace-scoped RBAC, with copy-paste manifests and a Terraform example.
GlossaryNetworking Fundamentals
Core networking terms every developer and engineer should know, covering IP addressing, DNS, protocols, routing, and the OSI model.
You might also enjoy
More posts on similar topics
6 related posts





