01 / 12
Kurulum ve araçlar
Framework mü Vite mi, ilk proje, Strict Mode, lint kuralları ve AI ile React yazarken dikkat edilecekler.
Bu Rehber Ne Anlatıyor
React resmi dokümanı tr.react.dev Türkçe ve çok iyi. Bu rehber onu tekrar etmiyor. Her derste konuyu kısaca özetleyip deneyimli mühendislerin önerilerini ve yaygın hataları topluyor. Sürüm: React 19.3 (Eylül 2026).1
Ön koşul, Web Temelleri'ndeki JavaScript dersi. Kent C. Dodds'un önerisi de aynı: React'e geçmeden önce destructuring, arrow function, map/filter, modüller ve Promise rahat olmalı; React'te karşılaştığınız zorlukların çoğu aslında JavaScript'tir.2 Tipler için TypeScript rehberi ayrıca var; buradaki örnekler .tsx ama tip konusuna girmez.
Framework mü, Vite mi?
React ekibi yeni bir uygulamaya bir framework ile başlamayı önerir: Next.js (App Router), React Router (framework modu) ya da mobil için Expo. Framework'ler routing, veri çekme ve server rendering'i hazır getirir ve sunucu olmadan statik site olarak da yayınlanabilir.3
React'in temellerini öğrenmek ya da sunucu gerektirmeyen bir SPA yazmak için Vite yeterlidir. Doküman bunun bir bedeli olduğunu açıkça söyler: routing, veri çekme ve SSR ihtiyacı doğduğunda kendi küçük framework'ünüzü yazmaya başlarsınız.4
| Durum | Öneri |
|---|---|
| React öğreniyorsunuz | Vite |
| Panel, araç gibi yalnızca tarayıcıda çalışan SPA | Vite + React Router + TanStack Query |
| SEO, ilk yükleme hızı, sunucu verisi önemli | Next.js ya da React Router framework modu |
| iOS ve Android | Expo |
Uyarı
create-react-app artık kullanılmıyor. React ekibi Şubat 2025'te yeni projeler için bıraktı.5 Eski bir tutorial npx create-react-app diyorsa güncel değildir.
Bu rehberdeki dersler Vite ile ilerler. Next.js'e özgü konular (Server Components, Server Actions) Next.js rehberinde.
İlk Proje
$ pnpm create vite@latest my-shop -- --template react-tscd my-shop
npm install
npm run devVite şablonu React 19.3, TypeScript ve Oxlint ile gelir.6 Önemli dosyalar:
| Dosya | Ne işe yarar |
|---|---|
index.html | Tek HTML sayfası; <div id="root"> burada |
src/main.tsx | React'i #root'a bağlar |
src/App.tsx | İlk component'iniz |
vite.config.ts | Vite ve @vitejs/plugin-react ayarı |
// src/main.tsx
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import App from "./App.tsx";
createRoot(document.getElementById("root")!).render(
<StrictMode>
<App />
</StrictMode>,
);Strict Mode
<StrictMode> yalnızca development'ta çalışan ek kontroller açar. Component'leri iki kez render eder, Effect'leri ve ref callback'lerini bir kez fazladan kurup söker, eski API'leri uyarır.7 Amaç, saf olmayan render'ı ve eksik cleanup'ı production'a çıkmadan yakalamaktır. Production build'i etkilemez.
Yapma
"Effect'im iki kez çalışıyor" diye
StrictMode'u kaldırmak. Çift çalışma bir hata değil, hatayı gösteren bir test. Çözüm cleanup yazmak; bunu Effect dersinde göreceksiniz.7
Lint: React Kurallarını Makineye Bırakın
React'in kuralları (Rules of React) çoğu zaman hata vermeden bozulur; uygulama çalışır ama yanlış davranır. Bu yüzden lint şarttır.
Vite şablonundaki Oxlint yalnızca rules-of-hooks kuralını açar.6 React ekibinin kendi eklentisi eslint-plugin-react-hooks ise recommended preset'inde React Compiler'ın analizine dayanan kuralları da içerir: render sırasında state değiştirme, Effect içinde senkron setState, render'da ref okuma, component içinde component tanımlama gibi hataları yakalar. Bu kurallar compiler'ı kullanmasanız da çalışır.8
Kod Kalitesi rehberindeki ESLint kurulumuna eklentiyi ekleyin:
$ pnpm add -D eslint-plugin-react-hooks// eslint.config.js
import reactHooks from "eslint-plugin-react-hooks";
import { defineConfig } from "eslint/config";
export default defineConfig([reactHooks.configs.flat.recommended]);recommended preset'i yeni kurallar eklendikçe güncellenir; kuralları tek tek açmak yerine onu kullanın.9
React Compiler ve DevTools
React Compiler, memoization'ı build sırasında otomatik ekler. Vite şablonunda build hızına etkisi yüzünden kapalı gelir.6 Vite'ta açmak için:10
$ pnpm add -D babel-plugin-react-compiler @rolldown/plugin-babel// vite.config.ts
import babel from "@rolldown/plugin-babel";
import react, { reactCompilerPreset } from "@vitejs/plugin-react";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [react(), babel({ presets: [reactCompilerPreset()] })],
});Compiler'ın ne yaptığını ve memo/useMemo ile ilişkisini React'te render performansı dersi anlatıyor.
React Developer Tools tarayıcı eklentisidir. Components sekmesinde ağacı, props'u ve state'i görür, değerleri canlı değiştirirsiniz. Profiler sekmesi render sürelerini ölçer.11
AI ile React Yazarken
Model'ler eski React kodunu çok gördüğü için eski kalıpları önerebilir. React ekibinin react.dev'i yazarken kullandığı agent skill'i bile modele "kendi bilgine şüpheyle yaklaş; çoğu zaman eski ya da yanlış React kalıplarıyla eğitildin" der.12 Sık görülen eski öneriler:
| Eski öneri | Bugün |
|---|---|
create-react-app | Vite ya da framework |
forwardRef | ref sıradan bir prop |
<ThemeContext.Provider> | <ThemeContext value={...}> |
Türetilmiş değer için useEffect + setState | Render sırasında hesaplama |
Her fonksiyona useCallback | React Compiler |
Üç şey işe yarar:
Güncel dokümanı bağlama verin. react.dev, agent'lar için bir
llms.txtdizini sunar ve her sayfanın sonuna.mdeklediğinizde düz Markdown döner (ör.react.dev/learn/you-might-not-need-an-effect.md).13Lint'i bekçi yapın. Yukarıdaki kurallar AI'ın yazdığı kodu da denetler. Agent'a "commit'ten önce
npm run lintçalıştır" deyin.Kurallarınızı skill'e yazın. Proje kurallarını ve Vercel'in
react-best-practicesgibi hazır skill'lerini Skills dersi anlatıyor.
Kendin Dene
my-shopprojesini kurun,App.tsx'te bir metni değiştirin ve sayfanın yenilenmeden güncellendiğini görün.eslint-plugin-react-hooks'u ekleyin.App.tsx'e bir component'in içinde ikinci bir component tanımlayın ve lint'in ne dediğini okuyun.React DevTools'u kurun, Components sekmesinde
App'i seçip state'ini değiştirin.Bir AI aracına "Vite ile React projesi kur" deyin. Önerdiği komutu bu dersle karşılaştırın.
Detaylı Öğrenmek İçin
Resmi doküman: React'in Türkçe dokümanı; "Hızlı Başlangıç" ve "React'te Düşünmek" sayfaları ilk okuma için en iyi yer.14
Resmi doküman: "Creating a React App" ve "Build a React App from Scratch" sayfaları; framework ile Vite arasındaki farkı anlatır.34
Video: React Conf 2025'teki "React and AI" paneli; React ekibi ve araç geliştiricileri AI ile React yazmayı tartışıyor (1. gün yayını).15
Yazı: Kent C. Dodds'un React'e başlamadan bilinmesi gereken JavaScript listesi.2
Kaynaklar
9 Eylül 2026. View Transitions ve Fragment Refs'in kararlı olması, `browser()` ve Trusted Types desteği.
: — 2020 tarihli; React'ten önce bilinmesi gereken JavaScript özellikleri.
Next.js, React Router ve Expo önerisi; framework'lerin sunucusuz da yayınlanabilmesi.
Vite, Parcel ve Rsbuild ile kurulum; kendi framework'ünü yazmanın bedeli.
14 Şubat 2025. CRA'nın yeni projeler için bırakılması ve geçiş yolları.
`react-ts` şablonu; Oxlint ayarı ve React Compiler'ın neden kapalı geldiği. create-vite 9.3 ile kontrol edildi.
Development'ta çift render, Effect ve ref callback'lerinin yeniden çalıştırılması.
Recommended kurallar ve React Compiler destekli lint'ler.
Flat config kurulumu ve `recommended` preset'ini kullanma önerisi.
Vite için `reactCompilerPreset` ve `@rolldown/plugin-babel` kurulumu.
Tarayıcı eklentisi, Components ve Profiler sekmeleri.
React dokümanının agent skill'i; modelin eski React kalıplarına şüpheyle yaklaşması uyarısı.
react.dev'e `llms.txt` eklenmesi; sayfaların `.md` olarak sunulması.
React dokümanının topluluk tarafından çevrilen Türkçe sürümü.
1. gün yayını. Lee Robinson moderatörlüğünde React ve AI paneli.
Son güncelleme tarihi: 21 Ekim 2026
