Last updated: June 28, 2026
Frontend engineer interview questions in 2026 should be calibrated to seniority first, and to how much of the live user experience the hire will own second, not to framework trivia a candidate can look up in seconds. Score five things across the loop: platform fundamentals, component and state architecture, debugging without a clean error, judgment about the experience real users actually get, and how plainly the candidate reasons about tradeoffs out loud.
Most frontend loops I get pulled into are not asking bad questions. They are asking the wrong job’s questions. A team writes a round full of algorithm puzzles and React quiz items, runs every candidate through the same sixty minutes, and then cannot work out in the debrief why the people who passed keep shipping interfaces that feel slow on a real phone. The loop tested a demo. The job is the experience. Different things.
I’m Robert Ardell. I helped start KORE1 back in 2005, and I still sit in on the kickoff for our harder frontend searches, usually the ones where a client has passed on four strong-looking people and cannot tell me what the fifth one has to do differently. The fix is almost never a fresh sourcing channel. It is a loop that knows, at each level, what it is actually testing for.
Where I sit, so you can weigh the advice. KORE1 places frontend talent through our front-end developer staffing desk and the wider IT staffing services bench, and we get paid on the hire, not on prepping your loop. So the rubric here is one we hand clients for free, often before anything is signed, because a miscalibrated loop wastes your week and the candidate’s. We hold a 92% twelve-month retention rate on direct placements across 30+ U.S. metros, and a surprising share of that traces to a decision made before the first question gets asked. Not which framework. Which level, and how much of the running experience this person carries.
One bit of housekeeping. We already publish a frontend developer interview questions guide that cuts the role by skill area, the JavaScript core, React internals, TypeScript depth, CSS, testing. Good guide. Different reader. This one cuts by level, and by how much of the user-facing experience the hire is trusted to own. If you know which skills you need but not which level you are paying for, read both.

A Frontend Developer Builds the Interface. An Engineer Owns the Experience.
Titles do not settle this, so I stopped letting them. When a hiring manager tells me the req is for a frontend engineer, I push on one question. When a real user on a three-year-old Android, on hotel Wi-Fi, with a screen reader running, hits the thing this person built, who answers for what they get?
That sorts the loop fast. A frontend developer, the way most teams use the word, takes a design and makes it real in the browser. A frontend engineer makes it real and then answers for it in the wild. The render performance on a device they will never hold. The layout that has to survive a 320-pixel screen and a 34-inch monitor. The keyboard-only path. The bundle that doubled when marketing added a tag manager. The error that only fires in Safari on iOS. Same component skills underneath, mostly. The judgment about the uncontrolled environment is the part that separates them. That is the whole game.
Here is the thing that makes frontend different from every backend role. Your production environment is not a server you tuned. It is every browser, every device, every network, every assistive technology your users happen to bring, and you control none of it. Google made that explicit when it swapped FID for Interaction to Next Paint as a Core Web Vital in March 2024. INP is scored at the 75th percentile of field data. Real people on real hardware. Not your lab run. A frontend engineer designs for that number. A developer often does not know it exists.
So the questions move. Less “build this component,” more “this component is fine on your laptop and janky for a fifth of your users, find out why.” You are still testing whether they can build. You are also testing whether the thing they build holds up for people they will never see. Generic loops skip the second test. It is the one that predicts the hire.
What a Frontend Engineer Loop Should Actually Score
Five dimensions. Not a dozen. Try to test everything and you test nothing, because the panel burns the clock and falls back to gut feel in the debrief. Pick the five below, weight them for the level you are paying for, and score each one out loud against a written scale before anyone is allowed to say the words “good culture fit.”
| Dimension | What It Actually Reveals | Weight: Mid | Weight: Senior+ |
|---|---|---|---|
| Platform fundamentals | The browser underneath the framework. The DOM, the event loop, the render pipeline, CSS layout, accessibility primitives. Can they reason about what actually happens, not recite a hook’s name. | 30% | 15% |
| Component and state architecture | Where state lives, how data flows, what re-renders and why, where the component boundaries fall. The difference between code that scales to fifty contributors and code that does not. | 25% | 30% |
| Debugging without a clean error | The unscripted skill. Jank, a leak, a layout that shifts, no stack trace. You watch how they narrow it. | 25% | 20% |
| Experience ownership | Field performance, accessibility, cross-device reality, what they measure after ship. On-call instinct, frontend flavor. Do they know what real users got. | 10% | 25% |
| Tradeoff and collaboration | Do they pick and defend, or hide behind “it depends.” How they push back on a designer or a PM lives here too. | 10% | 10% |
Look at experience ownership. It more than doubles from mid to senior. That one cell is the whole argument of this guide. A mid-level engineer can grow into owning the field experience. A senior who has never once looked at real-user data is a developer wearing a senior title, and you find that out during your first bad Core Web Vitals month instead of during the loop, which is a far more expensive place to learn it.
Questions by Seniority Level
Same role, four different conversations. Pay attention to the gap between what the band says and what the questions assume. Hand a junior a question about design-system governance and you learn nothing except that they read the same blog you did. Ask a staff candidate to center a div and you have told them you do not respect their time.
Junior and early-career frontend engineer
You are testing for foundations and slope, not scope. Can they reason. Do they get unstuck. Will they say “I don’t know” instead of bluffing.
Here is a thing on the page that looks like a button. It’s a div with an onClick. A keyboard user can’t use it. Why does that happen, and what’s the fix? The fix is a real <button>. What you want is whether they understand why the native element matters, focusability, the Enter and Space handling, the role a screen reader announces, all of it for free. A junior who reaches first for a pile of ARIA attributes on the div, instead of just using the element the browser already ships, is solving the wrong problem with more effort. Worth knowing early.
Walk me through what happens between the browser getting your HTML and the user seeing pixels. Parse, the DOM, the CSSOM, the render tree, layout, paint. A strong junior will not have every step, and that is fine. You want curiosity at the edge of what they know, not a confident wrong answer. The one who says “I’m not totally sure when styles block rendering, but I think the browser waits for the CSS before it paints, so I’d check that” is the one who learns fast. That guess is the right instinct. The slope you want.
This list re-orders wrong when you delete an item. The keys are the array index. Small bug, real tell. When the index is the key, React reuses the wrong DOM node after the array shifts, and stateful children like an open dropdown or a focused input attach to the wrong row. The junior who reaches for a stable id as the key has shipped a list before. The one who stares at it has read about keys but never been bitten. Cheap thing to check.
Mid-level frontend engineer
Now raise the floor. A mid-level engineer owns features and whole screens. They should have opinions, a couple of scars, and at least one real story about something they shipped that broke for someone.
A search box hits the API on every keystroke and the UI stutters. Fix it, and tell me what you traded. Debounce is the first word out of most mouths. Not wrong. Incomplete. The real signal is whether they mention the race. Debouncing slows the requests, but the responses still come back out of order, so a slow result for “re” can land after the fast result for “react” and overwrite it, and now the user sees results for a query they already finished typing. The mid answer reaches for an AbortController to cancel the in-flight request, or tracks the latest query and drops stale responses. The ones who have shipped a typeahead bring up the race before I do. Listen for that.
Where should this state live? Two sibling components both need to read a filter value. Lift it to the nearest common parent is the textbook move, and it is correct often enough. The better answer asks a question first. How far apart are these components, and how many layers would the prop have to pass through. The engineer who jumps straight to a global store for two siblings is reaching for a forklift to move a chair. The one who reaches for context or a store only when the prop-drilling actually hurts has felt both failure modes. Colocation is a skill, not a default.
Tell me about a third-party script that broke your page. If they cannot name one, they have not owned a real production frontend yet, and that is a data point, not a no. The good story has a shape. A tag manager or an A/B testing tool that flashed the old content before the variant loaded, or a 200-kilobyte analytics bundle that pushed the main thread past the point where the page felt responsive. The detail I listen for is what they did about it. The ones who have lived it tend to mention, without prompting, that they moved the script to load after interaction, or fought the marketing team to drop it, and that the fight was the hard part, not the code. It usually is.
Controlled or uncontrolled input. When do you reach for each, and what breaks if you choose wrong? Cheap question, sorts people fast. The mid engineer who notes that a controlled input re-renders the form on every keystroke, and that for a big form you sometimes want it uncontrolled with a ref to keep typing smooth, has profiled a slow form before. That tradeoff is invisible until a form gets large enough to lag, and then it is the only thing anyone can talk about. Profile first.
Senior frontend engineer
Senior is where the loop should stop feeling like a quiz and start feeling like two engineers arguing about a design over coffee. The facts are assumed now. You are testing judgment.
Design the component API for a button the whole company will use. What props do you add, and what do you refuse to add? Let them lay out variant, size, the loading and disabled states, the icon slot. Then push. Someone asks for an isBlueRoundedSmall prop. Do you add it? The senior who has owned a design system knows the trap. Every boolean you add is a combination you now have to support forever, and a button with fourteen boolean props becomes a thing nobody can change without breaking three teams. Saying no to a prop is the senior skill. Watch whether they protect the API or just keep bolting things onto it. Guard the surface.
Your server-rendered app is throwing hydration mismatches in production and you cannot reproduce them locally. Walk me through it. This is debugging without a clean error, turned up. Strong seniors know hydration breaks when the server and the client render different markup, and they go straight to the usual suspects. A timestamp formatted in the server’s timezone and then the user’s. A random id generated twice. Content that branches on window or a locale the server did not have. The weak answer sprinkles suppressHydrationWarning around until the console goes quiet, which does not fix the mismatch, it just stops telling you about it. Diagnose the divergence. Do not gag the warning.
Your test phone is a new MacBook. A big chunk of your users are on a mid-range Android two years old on a train. How do you know they are getting a decent experience? This is the whole job in one question. The answer I want names field data out loud. Real-user monitoring, the CrUX report, INP and LCP at the 75th percentile, not a single Lighthouse score from a fast machine on fast Wi-Fi. The strong senior throttles the CPU and the network in DevTools, keeps a cheap real Android on the desk, and treats the lab number as a smoke test, not the truth. The one who says “Lighthouse says 98, we’re good” just told you they have never watched their own field data fall apart while the lab stayed green. Field wins.
You need to move 400 components off one styling approach onto another, and the product cannot stop shipping while you do it. No big-bang rewrite allowed, that is the constraint. The answer I trust runs incrementally. Make the two approaches coexist, write a codemod for the mechanical 80%, migrate the loud high-traffic surfaces by hand, put a lint rule in place so nobody adds new code in the old style, and delete the old system last, once the count hits zero. The candidate whose plan is “we set aside a sprint and rewrite it all” has not lived through a migration that collided with a launch. Incremental, always.
Staff and principal frontend engineer
At staff the technical bar is table stakes. You are buying leverage now. Can this person make a dozen other engineers faster and keep a frontend platform coherent while it grows.
Your design system has 30 consuming teams, and every breaking change sets off a week of cross-team firefighting. How do you ship changes without freezing everyone? This is the staff job, honestly. The answer is not “we schedule a migration week.” It is closer to versioning the system, shipping changes behind a deprecation path, providing the codemod that does the upgrade for consumers instead of filing 30 tickets that say “please migrate,” and measuring adoption so you know when it is safe to remove the old thing. Watch where the work lands. The platform owner who pushes the cost onto every consuming team has built a tax. The one who absorbs the migration cost into the platform has built a system other teams actually want to adopt.
Tell me about a frontend bet you made that you would unwind today, and what it would cost to unwind it. Staff engineers have been wrong at scale. The good ones tell you about it without flinching. A real reversal story carries a lot of signal in one anecdote. A framework choice, a CSS-in-JS library that looked clean and then taxed runtime performance on every render, a micro-frontend split that solved a team-org problem and created a load-performance one. It shows judgment, it shows whether they can say “I got that wrong” without it rattling them, and it shows whether they count the cost in engineering-years or only in how tidy the new approach looks. Count it in years.
The Experience-Ownership Questions That Separate an Engineer From a Coder
If you add one section to your existing loop, add this one. These cut across level, and they get at the thing the word “engineer” is supposed to carry. Not “can you build it.” Can you stand behind what real users actually got. Someone who watches their field metrics finds these easy, almost fun. Someone who has only ever shipped to their own laptop usually gives it away on the first follow-up, which is fine, because not every good developer needs to own the field experience. You just want to know which kind you are hiring before they own a surface, not after.
A user emails that the site is “broken.” You cannot reproduce it. Now what? The instinct is the answer. Strong engineers do not start guessing. They start narrowing. What browser, what device, what version, what did they actually try. They reach for session replay or an error monitor like Sentry to see the real session, they check whether a feature they shipped assumes an API the user’s browser does not have, they think about the long tail of devices instead of insisting it works because it works for them. “Works on my machine” is not a diagnosis. It is the problem restated.
How do you find out a deploy made the site slower, before a user complains? Listen for specifics. A performance budget enforced in CI that fails the build when the bundle crosses a line. A real-user monitoring alert on INP or LCP at the 75th percentile. A synthetic check that walks the critical path on a throttled profile after every deploy. The thin answer is “we’d see it in Lighthouse eventually.” Maybe. But a lab score on a fast machine is the last place a field regression shows up, and plenty of teams own every monitoring tool on the market and still learn about the slowdown from a support ticket. Push once. Ask which number, on which dashboard, makes them stop and look.
Walk me through the last time you shipped something that hurt real users. What changed so it could not happen again? The fix matters less than the after. Did they ship the dull follow-up work, the budget that would have caught the bundle blowup, the visual regression test that would have caught the layout shift, the one bit of monitoring that was missing? That is ownership. The other version is a war story with a hero in it and a system that did not change one inch. First kind prevents the next regression. Second kind collects them.

A Frontend Search Where the Loop Was Measuring the Wrong Thing
Last year we ran a senior frontend search for a healthcare SaaS client in the Costa Mesa area. React and TypeScript, a patient-facing portal, real compliance weight on it. Their loop was two algorithm rounds and a round of React trivia. Fast, tidy, and it produced demos that looked great in the room.
Then their Core Web Vitals fell over in the field. Lab scores near perfect, INP in the field sitting in the “poor” band for a big slice of their patients, most of them on older Android phones over carrier networks. Real users. Real conditions. And an accessibility complaint landed, because a custom modal trapped keyboard focus and a screen reader user could not get out of it.
I asked to see the scorecards. The pattern was right there. Every hire note praised clever solutions to puzzles. Not one mentioned a real device, a field metric, or a screen reader. The loop was selecting for people who were sharp in a quiet room with a fast laptop, and saying nothing about whether they could own an experience on hardware they would never touch.
We talked them into reworking it. One algorithm round came out. In its place, a round with a real component from their own codebase, sanitized, carrying a genuine layout-shift bug and a focus trap, handed to the candidate to find and fix live, on a throttled profile, with a screen reader on. The engineer they hired through the redesigned loop had been passed over elsewhere for fumbling a graph puzzle, and she found the focus trap in about ten minutes because she had shipped accessible components before and knew exactly where to look. She runs their design system now. Same caliber of person the old loop kept rejecting. The questions were the problem. Not the market.
The Quiet Tells a Polished Frontend Candidate Can Hide
The loud red flags are easy. Panels rarely miss those. What slips through is the candidate who interviews beautifully and ships poorly, and the only defense is knowing the quieter tells.
Lab numbers, never field numbers. Ask about performance and they quote a Lighthouse score. Push, gently, on what real users experience and the answer goes soft. The gap between “my Lighthouse is 100” and “our field INP for the bottom quartile of devices is 240 milliseconds” is the gap between someone who optimized for the test and someone who optimized for the user. Ask for the field number on every performance answer. Watch which confidence survives the ask.
A library for everything. There is a kind of candidate who reaches for an npm install before they reach for the platform. A 40-kilobyte date picker for a single date field. A state library for a form with three inputs. It is not always wrong, but the reflex tells you they think in packages, not in payloads, and the user pays for that in download size on a slow connection.
Then there is the one I watch for most. Everything is an effect. The candidate whose answer to derived state, to data fetching, to a value computed from props, is always another useEffect. It usually means they are fighting the render model instead of working with it, syncing state that did not need syncing, and the bugs that come out of that, the double fetch, the stale closure, the flash of wrong content, are some of the most expensive to chase down later.
Last one, and it is subtle. Pixel-perfect on the mock, blank on the user. Some candidates can match a Figma file to the pixel and have no instinct at all for the 320-pixel phone, the keyboard-only path, the user who zoomed the page to 200%. Ask anyone past junior how their last project held up for a screen reader user. The ones who owned the experience answer with a specific story. The ones who built to the mock and stopped there get vague, and that vagueness is the answer.
Calibrate the Loop to the Level and the Band
Here is the calibration miss I watch teams make over and over. The band says mid, the loop says staff, and the req sits open for six weeks while everyone blames the candidates. A $115K frontend role does not get a design-system-governance gauntlet. A $200K staff role does not get a single leetcode sprint and nothing else. The math is quiet and brutal. The senior people who could clear the hard loop are already priced above your band, and the mid-level people the band actually targets are being failed by a round nobody warned them was coming, so both groups walk and the req just sits there. Match the rigor to the money.
Rough bands from our placed frontend base over the last four quarters, cross-checked against the Bureau of Labor Statistics web developer outlook, which still projects 7% growth through 2034. Treat these as anchors, not gospel. For a deeper cut by city, framework, and specialization, our frontend developer salary guide goes well past this table, and you can pull a live local number from the salary benchmark assistant before you set a band.
| Level | Base Anchor (Most US Metros) | What the Loop Should Weight |
|---|---|---|
| Junior (0-2 yrs) | $75K to $95K | Fundamentals and learning slope, one small real bug, honesty at the edge of what they know |
| Mid (3-5 yrs) | $100K to $125K | Feature and screen ownership, one real scenario, a shipped-and-broke story |
| Senior (6-10+ yrs) | $130K to $160K | Architecture plus experience ownership, judgment under a live follow-up, field-data instinct |
| Staff / Lead | $160K to $210K+ base | Leverage, design-system and platform strategy, a bet they would unwind and what it costs |
Coastal markets like San Francisco, Seattle, and New York run 15 to 25% above these, and total comp with equity at public tech companies clears $250K well before the staff line. If you are filling a permanent seat, our direct hire staffing model fits the loop above. If the work is project-shaped, or you want a working trial before a full commitment, our contract staffing practice calibrates the bar to the scope instead of a forever role, which changes which questions actually earn their place.
What Hiring Managers Ask Us About Frontend Engineer Loops
Live coding or a take-home for the technical round?
One or the other, almost never both. A short paid take-home with a realistic component beats a whiteboard puzzle for most frontend roles, because the job is rarely “code under a stranger’s gaze,” it is “build something good with time to think.”
A take-home tells you about code quality, component structure, and how someone works when nobody is timing them. Live coding tells you how they hold up with an audience on the cursor. Real, but narrower, and most frontend work looks like the first thing. So the take-home usually wins. One rule, not negotiable. Pay for it, scope it to two hours, and tell them not to gold-plate it. The strongest frontend engineers have two other offers and no appetite for burning a weekend on spec work, and after twenty years I have stopped trying to talk them out of that stance.
How much framework internals do we actually need to test?
Enough to know they understand the render model, not enough to quiz them on the source. If a candidate can explain why a component re-rendered when it did not need to, you have your answer. The version number of the API they used to fix it matters far less.
Frameworks turn over. The engineer who understands what the browser is doing underneath React or Vue or Svelte can move between them, because the hard part, the rendering, the state, the performance, the accessibility, transfers. The one who only memorized this year’s React API is renting their skillset from a library and will be stranded the next time the framework reinvents itself, which it will. Test the model. Go light on the trivia.
Our candidates pass the loop, then ship slow, inaccessible interfaces. What are we screening wrong?
You are almost certainly testing whether they can build and not whether they can own what users get. Add the experience-ownership round and weight it. The gap you are describing is the exact gap between a developer loop and an engineer loop.
This is the single most common problem clients bring us on frontend, and it is fixable in one change. Put a real component from your own codebase, sanitized, with a genuine performance or accessibility bug in it, in front of the candidate, on a throttled device, with a screen reader available. Have them find and fix it live. Watch whether they think in field metrics, real devices, and the keyboard path. That one round predicts field performance better than every algorithm question combined, in my experience across hundreds of these searches.
Should we test design-to-code, or is engineering judgment enough?
Test it if the role works closely with designers, which most frontend roles do. Hand them a Figma frame and a real constraint the design ignores, and watch the conversation, not just the markup.
The signal is not whether they can match a mock. Most can. It is what they do when the design breaks at a width the designer did not draw, or asks for an interaction that will hurt INP on a low-end phone, or uses a gray-on-white that fails the WCAG contrast minimum. The engineer you want flags it, explains the cost in plain words, and proposes a fix the designer can live with. The one who silently ships exactly what was drawn, contrast failure and all, just told you who owns accessibility on your team. Nobody.
When does it make sense to bring in a staffing partner instead of running this ourselves?
When the req has been open more than a month, when your panel cannot agree on what “good” looks like, or when you do not have a senior frontend engineer free to run the technical rounds well.
Honest answer, including the part that costs me. If your loop is calibrated, your panel is aligned, and candidates are already showing up, you probably do not need us, and I will say so on the first call. Where we earn the fee is the ugly searches. Open six weeks, no pattern in the rejections, a hiring manager who is frankly tired of it. We start with the level and the loop before we send a single resume, and our IT desk closes at a 17-day median once that part is sorted.

Where the Frontend Hire Actually Gets Decided
The interview loop is one of three levers, and a sharp loop cannot rescue a broken band or a vague job description. But of the three, the loop is the one that quietly mislabels good engineers as weak ones and sends them to your competitor with a clean conscience. Get the level right. Test ownership of the experience, not just the building of it. Score out loud against a written scale before anyone in the room falls in love with a clever demo.
If you want a second read on the loop you are about to run, or you would rather hand the search to a team that opens with the level instead of the resume, talk to a KORE1 recruiter and we will start with the calibration call. For the skill-by-skill question bank, our companion guide on frontend developer questions goes deeper on the JavaScript, React, and TypeScript rounds, and the 2026 frontend pay benchmarks set the band before you build the loop at all.
