Migrate site from Gatsby to Next.js (App Router)
Open
enhancement
todo :spiral_notepad:
- Dominant language
- JavaScript
- Stars
- 3
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
Context
The Multei! site (@multei/web) runs on Gatsby 2 (React 17, legacy plugins). That stack is outdated and friction-heavy locally (modern Node, sharp/ARM, OpenSSL/Webpack, abandoned plugins such as gatsby-plugin-prefetch-google-fonts).
Goal
Migrate the site to the latest stable Next.js (16.x line, App Router), preserving current behavior and content, with modern DX and deploy.
Motivation
- Gatsby 2 and related dependencies do not track current Node LTS or Apple Silicon without workarounds.
- The Gatsby ecosystem is relatively stagnant; Next.js is the market default for React sites on Vercel.
- App Router, Server Components, Turbopack, and current tooling improve performance, DX, and maintainability.
- Easier alignment with Vercel auth, APIs, env vars, and CI.
Suggested scope
Discovery
- Inventory routes (
src/pages), layouts, components, and critical dependencies (Material UI v4, Recoil,muy/metax, maps, images). - Map Gatsby plugins to equivalents (SEO/helmet, sitemap, manifest/PWA, sharp/images, fonts, Material UI).
- Define target: Next.js 16 (App Router) + React 19, TypeScript (in this migration or as a follow-up).
Migration
- Scaffold Next.js and
app/structure (layouts, pages, Metadata API). - Port pages and components; replace
gatsby-image/ asset GraphQL withnext/image(or equivalent). - Replace
react-helmet/ metax with Next Metadata / Open Graph. - Review global state (Recoil) and hooks; align with Server/Client Component patterns.
- Upgrade or replace Material UI v4 (evaluate MUI v6/v7 or the current design system).
- Fonts: replace the prefetch plugin with
next/font. - Configure sitemap, robots, and PWA/manifest as needed.
- Tests: migrate Jest/Cypress to the new entrypoint; smoke E2E on main routes.
Delivery
-
dev/build/startscripts, env vars, and deploy (Vercel/Netlify) equivalent to today’s flow. - Remove Gatsby and orphaned dependencies; document how to run the project.
- Cutover plan (preview → production) and rollback.
Out of scope (for now)
- Broad visual redesign (except what the stack change requires).
- Large business-domain refactors unrelated to the migration.
Acceptance criteria
- Site runs on current Node LTS without legacy workarounds (
openssl-legacy-provider,sharphacks, etc.). - Main routes and flows match the current Gatsby site.
- Production build and preview deployables work.
- Critical tests (unit/E2E) are green on the new stack.
- README updated with development instructions.
Notes
- When starting implementation, pin the latest stable Next.js available at that time (today: 16.2.x; evaluate 16.3 once out of preview).
- Prefer small incremental PRs (scaffold → pages → assets/SEO → cleanup).
- Related: hosting move in #416.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.