Frontend Developer (React + TypeScript) — mid-level, AI-assisted workflow, strong testing discipline
Worldwide
We are looking for a **mid-level frontend developer** to join a distributed team building and maintaining production web applications. The stack is **React + TypeScript** (Vite, Tailwind CSS, Radix UI, TanStack Query, Vitest), with a documented engineering workflow that every contributor follows — freelancers and in-house staff alike, with no separate standard for external contributors. This role is for someone who already works **with AI coding tools as part of their daily workflow** — and who knows that AI output is a draft to be verified, not code to be shipped. If you copy-paste from an assistant without reading the diff, this role is not for you. ### What you'll be working on - Building and evolving user-facing features in React + TypeScript: components, hooks, forms, data fetching, state management. - Bug fixes, refactors and UI polish, delivered as small, reviewable pull requests. - Writing and maintaining unit tests for components, hooks and business logic — tests are part of the work, not an optional extra. Full technical detail and repository access are provided **after** an NDA is signed (see Requirements). ### How we work (you must be comfortable with all of this) - **Everything goes through a pull request.** No direct pushes to shared branches, no exceptions. One branch = one ticket = one PR. - **Small PRs.** We aim for under ~400 lines changed; bigger work gets split. Refactoring and behavior changes go in separate PRs. - **Screenshots or recordings are mandatory on UI PRs.** Reviewers must see what changed, not just read the diff. - **Tests ship with every change.** New feature → tests covering the new behavior. Bugfix → the failing test that reproduces the bug is written **first**, then fixed. A PR must never decrease overall coverage — CI enforces this. - **Tests test behavior, not implementation.** One test = one behavior; if a pure refactor breaks your tests, the tests were coupled to implementation. - **Run tests and lint locally before pushing.** CI is not your test runner. A red pipeline blocks merging — no overrides. - **Clean git history.** Conventional Commits (`feat(auth): ...`), atomic commits, rebase on the integration branch — never merge commits into your feature branch. History is cleaned up before review. - **Reviews are discussions.** You answer every comment — either change the code or explain why not. First responses come within one working day, in both directions. - **2-week sprints, daily standup, live board.** You own your ticket from "To Do" to "Done" — including the review rounds. ### Requirements - **Solid React + TypeScript experience** on production applications: component design, hooks, forms, async data fetching, accessibility basics. - **Daily, disciplined use of AI coding tools** (Copilot, Cursor, Claude, ChatGPT or similar). You must be able to explain *how* you verify AI-generated code before committing it. - **Genuine unit-testing habit** with a modern test runner (Vitest, Jest, Testing Library or similar). You write tests without being asked, and you can explain what makes a good test. - Familiarity with Tailwind CSS and component-library workflows. - Comfortable with a PR-based workflow: small branches, rebasing, conventional commit messages, responding to review feedback. - Clear written English — PR descriptions, comments and ticket updates are all in writing. - Mid-level is fine: we care more about discipline, standards compliance and honesty about what you don't know than about years of experience. **Nice to have:** React Native experience (we have a mobile app), PWA experience, or E2E testing (Playwright/Cypress). ### Mandatory before any access is granted Because this system processes sensitive personal data: 1. **A signed NDA.** We provide the document; it must be signed before any technical detail, repository access or infrastructure access is shared. 2. **Government-issued photo identification**, plus proof of address, for identity verification. Contractors who cannot or prefer not to provide these should not apply — no exceptions will be made. We will share the anonymised technical brief only after both are complete. ### Engagement - **Type:** hourly. - **Start:** ASAP. - Fully remote, distributed team; overlap with VN working hours is mandatory. ### To apply, please answer 1. Which AI coding tools do you use daily, and for which tasks? Describe a concrete case where AI-generated frontend code was subtly wrong (e.g. broken accessibility, stale state, wrong edge-case handling) and how you caught it. 2. You fix a UI bug. Walk us through your exact process, from reproducing the bug to opening the PR — where do tests fit in? 3. How do you decide what deserves a unit test in a React application, and what do you deliberately *not* test? 4. Describe your git workflow on your last team project: branching, commits, PR size, how you handled review feedback. 5. Confirm explicitly that you are able to sign an NDA and provide government-issued identification. Applications that do not answer these questions will not be reviewed.
- More than 30 hrs/weekHourly
- 6+ monthsDuration
- IntermediateExperience Level
- Remote Job
- Ongoing projectProject Type
Skills and Expertise
Activity on this job
- Proposals:50+
- Last viewed by client:yesterday
- Interviewing:0
- Invites sent:0
- Unanswered invites:0
About the client
- BelgiumAntwerp12:01 PM
- $157K total spent52 hires, 12 active
- 6,717 hours
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by