The Complete Frontend Developer Skills Checklist
Hiring a frontend developer without a structured evaluation is the fastest way to a disappointing engagement. This checklist covers every skill area that separates productive frontend developers from ones who look good in interviews but produce unmaintainable code.
Use this before every frontend hire - remote or otherwise.
Skill Area 1: JavaScript and TypeScript Fundamentals
These are non-negotiable. A frontend developer who doesn't have clean JavaScript fundamentals will struggle with every framework on top of it.
What to test:
Closures and scope: Ask them to explain what a closure is and give an example. A senior developer should be able to explain it clearly without jargon - "a function that retains access to variables from its outer scope even after that scope has closed."
Async/await and Promises: Ask them to explain the difference between Promise.all and Promise.allSettled, and when to use each. Correct answer: Promise.all rejects if any promise rejects; Promise.allSettled waits for all promises to resolve or reject and returns results for each.
TypeScript depth: Give a function signature and ask them to write the TypeScript type for it - including optional parameters, union types, and a generic constraint. Evaluate whether they reach for any or write meaningful types.
Green flags: Explains concepts clearly, writes TypeScript naturally, understands the event loop at a conceptual level.
Red flags: Confused by this binding, uses any throughout TypeScript code, can't explain why async/await is syntactic sugar over Promises.
Skill Area 2: React (or Framework) Depth
For most product companies, React is the framework. Test for React depth, not just familiarity.
Component architecture: Can they decompose a complex UI into well-bounded components? Ask them to look at a design mockup and describe how they'd structure the component tree before writing any code.
Hooks proficiency: Custom hooks are the critical test. Ask them to write a useDebounce custom hook. Strong developers write it in under 5 minutes and explain the useEffect cleanup function.
State management judgment: Ask: "When would you use React Context vs. Zustand vs. a URL parameter for state?" Listen for nuanced answers - Context for theme/auth/user preferences, Zustand for complex shared client state, URL params for shareable/navigable state. Be wary of "always Redux" or "never Context" answers.
Rendering optimization: Ask them to explain when memo, useMemo, and useCallback actually help versus when they add unnecessary complexity. Strong developers use them surgically - not everywhere "just to be safe."
Skill Area 3: CSS and Responsive Design
CSS is where many "frontend developers" have hidden gaps - particularly developers who have only ever worked with CSS frameworks.
Layout systems: Ask them to explain the difference between flexbox and CSS Grid, and when to use each. Flexbox for one-dimensional layouts (a navigation bar, a row of items); Grid for two-dimensional layouts (a card grid, a page layout).
Responsive design without framework dependency: Give them a layout challenge without Tailwind or Bootstrap. Can they achieve a responsive 3-column grid that collapses to 1 column on mobile using only CSS? Strong developers reach for Grid or flexbox with media queries - not a framework utility.
Specificity and cascade: Ask them to explain a CSS specificity conflict scenario and how they'd resolve it. Strong developers know specificity values (element = 1, class = 10, ID = 100) and prefer low-specificity selectors. Weak developers override with !important.
Skill Area 4: Performance
Frontend performance directly affects user experience and conversion. A developer who doesn't think about performance creates problems that are expensive to fix later.
Core Web Vitals: Ask what LCP, INP, and CLS measure. Strong candidates know: LCP is largest contentful paint (loading performance), INP is interaction to next paint (responsiveness), CLS is cumulative layout shift (visual stability).
Bundle optimization: Ask how they'd investigate a slow bundle. Strong answer: Webpack Bundle Analyzer, dynamic imports with React.lazy(), tree shaking awareness, and separating vendor chunks from application code.
Render optimization: Ask when they'd reach for useMemo vs. memo vs. useCallback. Watch for over-optimization (adding them everywhere) as much as under-optimization (never using them).
Skill Area 5: Accessibility
Accessibility is frequently tested last and deprioritized - but it is a legal requirement and a search ranking factor.
Semantic HTML: Can they look at a component built entirely with div elements and identify what semantic HTML elements should replace them? Strong developers immediately spot: missing nav, main, article, section, header, footer, and missing form label elements.
ARIA: Ask when to use aria-label vs. a visible label. Strong answer: use a visible label when possible; aria-label for icon buttons and other interactive elements that have no visible text.
Keyboard navigation: Ask how they'd ensure a custom dropdown menu is keyboard accessible. Strong candidates walk through: focus management, tabIndex, onKeyDown handlers for arrow keys and Escape, and role="listbox" with role="option".
The Two-Hour Technical Assessment
For remote frontend developer candidates, this 2-hour take-home task covers all five skill areas simultaneously:
Task: Build a product search feature.
- Fetch products from
https://fakestoreapi.com/products - Display in a responsive card grid (3 columns desktop, 1 column mobile)
- Add a search input that filters by product title (debounced - don't filter on every keystroke)
- Show loading spinner and error message states
- Write in TypeScript with proper types
- Write one unit test for the debounce behavior or filter logic
Score:
- JavaScript/TypeScript: Is the code typed properly? Is the debounce implemented correctly?
- React: Are components well-decomposed? Is state managed sensibly?
- CSS: Does the grid respond correctly? Is it done without a framework?
- Performance: Is the search debounced? Is loading state handled?
- Accessibility: Do images have alt text? Are form inputs labeled?
Hire a pre-vetted remote frontend developer from India or contact F5 to get shortlisted profiles in 7 days.
Frequently Asked Questions
What are the most important frontend developer skills to evaluate? JavaScript/TypeScript fundamentals, React depth, CSS and responsive design, performance awareness, and accessibility knowledge - in that order.
How do I test React skills? 2-hour take-home: build a feature with API fetch, loading/error states, search/filter interaction, TypeScript typing, and at least one unit test.
What TypeScript depth should I expect from a senior developer? Generics, discriminated unions, utility types, strict null checks - and TypeScript written naturally, not just annotations on JavaScript.
How do I evaluate CSS skills?
Ask about flexbox vs. grid. Give a live CSS task without framework assistance. Check for specificity understanding and absence of !important abuse.
What performance skills matter? Core Web Vitals awareness, bundle analysis, React.lazy, and surgical use of memo/useMemo/useCallback.
What red flags should I watch for?
Excessive any in TypeScript, no error handling on API calls, no loading states, 500-line components, and inability to explain architectural decisions.
How does F5 pre-vet frontend developers? F5 runs technical screening covering framework depth, TypeScript quality, and a task-based assessment before presenting any candidate.