Yükleniyor...

Vercel Nedir? 7 Adımda Kapsamlı Başlangıç Rehberi [2026]

Yazar: Burak Balkı | Kategori: Frontend Development | Okuma Süresi: 39 dk

Bu 2026 rehberi, Vercel'in ne olduğunu, neden kullanılması gerektiğini ve modern web uygulamalarını nasıl hızlıca deploy edeceğinizi adım adım açıklıyor. Kur...

# Vercel Nedir? 7 Adımda Kapsamlı Başlangıç Rehberi [2026] Web geliştirme dünyası 2026'da hızla evrilirken, projeleri hızlı, ölçeklenebilir ve güvenli bir şekilde canlıya almak her zamankinden daha kritik hale geldi. Geliştiricilerin bu karmaşık süreçleri basitleştiren, performansı artıran ve maliyetleri düşüren çözümlere olan ihtiyacı, **Vercel** gibi platformların yükselişini tetikledi. Bu rehberde, Vercel'in ne olduğunu, neden bu kadar popülerleştiğini ve 2026'da modern web projelerinizi nasıl hızla deploy edebileceğinizi adım adım öğreneceksiniz. Kapsamlı örnekler ve best practice'ler ile Vercel deneyiminizi en üst düzeye çıkarın. ## Vercel Nedir? Vercel, geliştiricilerin web projelerini anında deploy etmelerini, ölçeklendirmelerini ve performanslarını optimize etmelerini sağlayan, sunucusuz (serverless) bir platformdur. Özellikle Next.js, React, Vue, Svelte gibi modern frontend framework'leri ile uyumlu çalışarak, geliştiricilere sıfır konfigürasyon (zero-config) deployment deneyimi sunar. 2026 itibarıyla, global CDN, Edge Functions ve otomatik CI/CD entegrasyonu gibi özellikleriyle web uygulamaları için lider bir deployment ve hosting çözümü olarak öne çıkmaktadır. Bir web projesini canlıya almak, genellikle sunucu yönetimi, CDN konfigürasyonu ve sürekli entegrasyon/sürekli dağıtım (CI/CD) pipeline'ları kurma gibi karmaşık süreçleri içerir. Vercel, bu operasyonel yükü tamamen ortadan kaldırarak geliştiricilerin sadece kod yazmaya odaklanmasını sağlar. Git tabanlı entegrasyonu sayesinde, her `git push` işlemi otomatik olarak bir deployment tetikler ve projenizin en güncel versiyonunu global ağda anında erişilebilir kılar. Bu, özellikle hız ve ölçeklenebilirliğin kritik olduğu 2026'nın rekabetçi dijital ortamında paha biçilmez bir avantaj sunar. ## Neden Vercel Kullanmalısınız? 2026'da web projelerinizin başarısı, sadece kod kalitesiyle değil, aynı zamanda dağıtım hızı, performansı ve ölçeklenebilirliğiyle de doğrudan ilişkilidir. Vercel, bu alanlarda geliştiricilere ve işletmelere bir dizi somut fayda sunar: * **Yüksek Performans ve Global CDN:** Vercel, projelerinizi dünya genelindeki Edge ağına dağıtarak kullanıcılara en yakın sunucudan hizmet verir. Bu, TTFB (Time to First Byte) ve sayfa yükleme sürelerini önemli ölçüde düşürür. Kendi tecrübelerime göre, özellikle uluslararası kullanıcı kitlesi olan projelerde, Vercel'in CDN avantajı %30-50 arasında performans artışı sağlayabiliyor. * **Sıfır Konfigürasyon Deployment:** Karmaşık sunucu ayarlarına veya build pipeline'larına gerek kalmadan projelerinizi kolayca deploy edebilirsiniz. Vercel, popüler framework'leri otomatik olarak tanır ve en uygun build süreçlerini uygular. Bu, geliştirme sürecindeki sürtünmeyi azaltır ve geliştirici verimliliğini artırır. * **Otomatik Ölçeklenebilirlik:** Uygulamalarınız trafik arttıkça otomatik olarak ölçeklenir. Sunucusuz mimarisi sayesinde, sadece kullandığınız kaynaklar için ödeme yaparsınız, bu da maliyet etkinliği sağlar. 2026'da bulut maliyetlerini optimize etmek isteyen şirketler için bu özellik büyük önem taşır. * **Geliştirici Deneyimi (DX):** Anında önizleme URL'leri, otomatik HTTPS, kolay özel domain yönetimi ve sezgisel bir dashboard ile Vercel, geliştiricilere üst düzey bir deneyim sunar. Ekibimizde Vercel'e geçiş sürecinde, deployment sürelerinin kısalması ve hata oranlarının düşmesiyle geliştirici memnuniyetinde gözle görülür bir artış yaşadık. * **Edge Functions:** Vercel'in Edge Functions'ları, sunucu tarafı mantığını kullanıcılara fiziksel olarak daha yakın konumlarda çalıştırma olanağı sunar. Bu, API çağrılarının gecikmesini azaltır ve dinamik içerik sunumunu hızlandırır. 2026'da kişiselleştirilmiş ve dinamik web deneyimleri için vazgeçilmez bir araçtır. **Kimler için uygun:** Modern frontend framework'leri (Next.js, React, Vue, Svelte) kullanan web geliştiricileri, startup'lar, e-ticaret siteleri, bloglar ve API'ler geliştiren herkes için idealdir. **Kimler için uygun değil:** Geleneksel monolitik uygulamalar, çok özel sunucu konfigürasyonları gerektiren projeler veya Vercel'in desteklemediği dillerde yazılmış backend uygulamaları için doğrudan uygun olmayabilir (ancak bu tür backend'lerle Vercel frontend'i entegre edilebilir). Vercel, 2026 itibarıyla geniş ve aktif bir geliştirici topluluğuna sahip olup, sürekli güncellenen dökümantasyonu ve güçlü ekosistemiyle modern web geliştirmenin vazgeçilmez araçlarından biri haline gelmiştir. ## Vercel vs Alternatifler Vercel, modern web uygulamaları için en popüler deployment platformlarından biri olsa da, Netlify ve AWS Amplify gibi güçlü alternatifleri de bulunmaktadır. İşte bu platformların 2026 itibarıyla genel bir karşılaştırması: | Özellik | Vercel | Netlify | AWS Amplify | | :----------------- | :--------------------------------------------- | :--------------------------------------------- | :--------------------------------------------- | | **Performans** | Next.js ve Edge Functions ile lider performans | İyi performans, global CDN | Geniş AWS altyapısı, özelleştirme imkanı | | **Öğrenme Eğrisi** | Çok düşük (zero-config) | Düşük | Orta-yüksek (AWS ekosistemi bilgisi gerektirir) | | **Ekosistem** | Next.js ile derin entegrasyon, Edge Functions | JAMstack odaklı, Netlify Functions | Tam AWS hizmet entegrasyonu (Lambda, DynamoDB) | | **Topluluk** | Çok aktif ve büyüyen | Aktif ve büyük | Çok büyük (genel AWS topluluğu) | | **Kurumsal Destek**| Premium planlarda hızlı ve kapsamlı destek | Premium planlarda hızlı destek | Geniş AWS destek seçenekleri | | **Kullanım Alanı** | SSR/SSG (Next.js) web siteleri, API'ler | Static siteler, JAMstack uygulamaları, serverless functions | Full-stack mobil/web uygulamaları, AWS entegrasyonu | Vercel, özellikle Next.js ile geliştirilen uygulamalarda sunduğu derin entegrasyon ve performans optimizasyonlarıyla öne çıkar. Netlify, JAMstack ekosisteminde güçlü bir oyuncu olup, benzer bir geliştirici deneyimi sunar. AWS Amplify ise, AWS'in geniş hizmet yelpazesini kullanarak tam teşekküllü full-stack uygulamalar geliştirmek isteyenler için daha fazla esneklik ve kontrol sağlar. Seçiminiz, projenizin ihtiyaçlarına ve ekibinizin mevcut bilgi birikimine bağlı olacaktır. ## Kurulum ve İlk Adımlar Vercel ile projenizi deploy etmek oldukça basittir. İşte 2026'da Vercel CLI'ı kullanarak ilk adımlarınızı atmanız için gerekenler: **Ön Gereksinimler:** * **Node.js (v18.x veya üzeri):** JavaScript runtime ortamı. * **npm veya Yarn:** Paket yöneticisi. * **Git:** Versiyon kontrol sistemi. * **GitHub, GitLab veya Bitbucket hesabı:** Projenizin versiyon kontrolü için. 1. **Vercel CLI'ı Global Olarak Kurun:** Vercel komut satırı arayüzünü (CLI) kullanarak projelerinizi yerel ortamınızdan yönetebilirsiniz. Terminalinizi açın ve aşağıdaki komutu çalıştırın: ```bash npm install -g vercel # veya yarn global add vercel ``` Bu komut, Vercel CLI'ın 2026'daki en güncel sürümünü sisteminize kuracaktır. 2. **Vercel Hesabınıza Giriş Yapın:** CLI'ı kurduktan sonra, Vercel hesabınıza giriş yapmanız gerekmektedir. Eğer hesabınız yoksa, bu adım sırasında yeni bir hesap oluşturmanız istenir. ```bash vercel login ``` Bu komut sizi web tarayıcınıza yönlendirecek ve e-posta adresinizle giriş yapmanızı isteyecektir. Giriş yaptıktan sonra terminale geri dönebilirsiniz. 3. **Yeni Bir Vercel Projesi Başlatın (İsteğe Bağlı):** Eğer sıfırdan bir proje başlatmak istiyorsanız, Vercel'in örnek şablonlarını kullanabilirsiniz. Bu örnekte Next.js şablonunu kullanalım: ```bash vercel init nextjs-template my-nextjs-app cd my-nextjs-app ``` Bu, `my-nextjs-app` adında yeni bir Next.js projesi oluşturacak ve gerekli bağımlılıkları kuracaktır. Eğer mevcut bir projeniz varsa bu adımı atlayabilirsiniz. 4. **Projenizi Yerel Olarak Çalıştırın:** Vercel'e deploy etmeden önce projenizin yerel olarak çalıştığından emin olun: ```bash npm install npm run dev ``` Genellikle `http://localhost:3000` adresinde uygulamanızın çalıştığını görmelisiniz. 5. **Projenizi Vercel'e Deploy Edin:** Projenizin ana dizinindeyken aşağıdaki komutu çalıştırın: ```bash vercel ``` Vercel CLI size birkaç soru soracaktır: * `Set up and deploy “path/to/your/project”? [Y/n]` -> `Y` * `Which scope do you want to deploy to?` -> Kendi kullanıcı adınızı seçin veya bir takım seçin. * `Link to existing project? [y/N]` -> `N` (eğer ilk kez deploy ediyorsanız) * `What’s your project’s name?` -> Proje adını girin (örneğin `my-nextjs-app`). * `In which directory is your code located? [./]` -> Enter'a basın (varsayılan). Vercel projenizi otomatik olarak build edecek ve deploy edecektir. İşlem tamamlandığında size bir deployment URL'i (örneğin `https://my-nextjs-app-xxxx.vercel.app`) verecektir. Bu URL üzerinden projenize erişebilirsiniz. 6. **Git Entegrasyonu:** Vercel'in en güçlü özelliklerinden biri Git entegrasyonudur. Projenizi bir Git deposuna (GitHub, GitLab, Bitbucket) bağladığınızda, her `git push` işlemi otomatik olarak yeni bir deployment tetikler. Bu, sürekli dağıtım (Continuous Deployment) için mükemmeldir. * Projenizi bir Git deposuna itin. * Vercel Dashboard'a gidin, `Add New` -> `Project` seçeneğini tıklayın. * Git sağlayıcınızı bağlayın ve projenizi seçin. Vercel otomatik olarak build ayarlarını algılayacak ve ilk deployment'ı yapacaktır. Artık projeniz Vercel üzerinde canlı! 2026'da modern web projelerinizi bu kadar kolay bir şekilde yönetmek, geliştirme sürecinizi hızlandıracaktır. ## Temel Kullanım ve Örnekler Vercel'in temel kullanımını ve çeşitli senaryolar için nasıl uygulandığını anlamak, platformun gücünü tam olarak kullanmanızı sağlar. İşte 2026'da sıkça karşılaşacağınız bazı pratik örnekler: ### Örnek 1: Statik HTML/CSS/JS Sitesi Deploy Etme **Problem:** Basit bir statik web sitesini (HTML, CSS, JavaScript dosyaları içeren) hızlıca canlıya almak istiyorsunuz. **Çözüm:** Vercel, herhangi bir build adımı gerektirmeyen statik siteleri doğrudan deploy edebilir. Tek yapmanız gereken dosyalarınızı bir Git deposuna itmek ve Vercel'e bağlamak. **Kod Örneği (index.html):** ```html Vercel Statik Site [2026]

Merhaba Vercel!

Bu, 2026'da Vercel üzerinde deploy edilmiş basit bir statik sitedir.

``` **Kod Örneği (style.css):** ```css body { font-family: sans-serif; background-color: #f0f0f0; color: #333; text-align: center; padding-top: 50px; } h1 { color: #0070f3; } ``` **Kod Örneği (script.js):** ```javascript document.addEventListener('DOMContentLoaded', () => { console.log('Vercel statik site başarıyla yüklendi! (2026)'); const h1 = document.querySelector('h1'); h1.textContent += ' 🎉'; }); ``` **Deployment Adımları:** 1. Bu dosyaları içeren bir klasör oluşturun. 2. Klasörü bir Git deposuna itin. 3. Vercel Dashboard'dan yeni bir proje oluşturup bu Git deposunu bağlayın. Vercel otomatik olarak statik siteyi algılayacak ve deploy edecektir. ### Örnek 2: Next.js Uygulama Deploy Etme (API Routes Dahil) **Problem:** Bir Next.js uygulamasını, hem frontend'ini hem de basit bir API route'unu içerecek şekilde Vercel'e deploy etmek istiyorsunuz. **Çözüm:** Vercel, Next.js'in yaratıcısı olduğu için bu framework ile en iyi entegrasyonu sunar. Otomatik olarak SSR (Server-Side Rendering), SSG (Static Site Generation) ve API Routes'u destekler. **Kod Örneği (pages/index.js):** ```javascript import { useEffect, useState } from 'react'; export default function Home() { const [message, setMessage] = useState('Yükleniyor...'); useEffect(() => { fetch('/api/hello') .then((res) => res.json()) .then((data) => setMessage(data.name)); }, []); return (

Vercel Next.js Uygulaması [2026]

API'den gelen mesaj: {message}

); } ``` **Kod Örneği (pages/api/hello.js):** ```javascript // Next.js API route support: https://nextjs.org/docs/api-routes/introduction export default function handler(req, res) { res.status(200).json({ name: 'Vercel ve Next.js API Routes (2026)' }); } ``` **Deployment Adımları:** 1. Yeni bir Next.js projesi oluşturun (`npx create-next-app@latest my-nextjs-app`). 2. Yukarıdaki kodları ilgili dosyalara yapıştırın. 3. Projenizi bir Git deposuna itin. 4. Vercel Dashboard'dan yeni bir proje oluşturup bu Git deposunu bağlayın. Vercel, Next.js projesini otomatik olarak algılayacak ve deploy edecektir. ### Örnek 3: Ortam Değişkenleri (Environment Variables) Kullanımı **Problem:** API anahtarları veya veritabanı bağlantı dizeleri gibi hassas bilgileri kodunuzda açıkça tutmak istemiyorsunuz. **Çözüm:** Vercel, ortam değişkenlerini güvenli bir şekilde yönetmenizi sağlar. Bu değişkenler build zamanında veya runtime'da uygulamalarınıza enjekte edilir. **Vercel Dashboard:** Proje ayarlarınıza gidin, `Environment Variables` sekmesinde `NEXT_PUBLIC_API_URL` gibi değişkenleri ekleyin. Production, Preview ve Development ortamları için ayrı değerler tanımlayabilirsiniz. **Kod Örneği (Next.js - .env.local):** ```env NEXT_PUBLIC_API_URL=https://api.example.com/2026 SECRET_KEY=my_super_secret_key_2026 ``` **Kod Örneği (Next.js - pages/index.js'te kullanım):** ```javascript export default function Home() { // Client tarafında erişilebilir (NEXT_PUBLIC_ öneki ile) const apiUrl = process.env.NEXT_PUBLIC_API_URL; // Sunucu tarafında erişilebilir (API Routes veya getServerSideProps içinde) const secretKey = process.env.SECRET_KEY; return (

Ortam Değişkenleri ile Vercel [2026]

API URL: {apiUrl}

{/*

Secret Key: {secretKey}

-- Asla client tarafında gösterme! */}
); } ``` > **Pro Tip:** Hassas bilgileri asla `NEXT_PUBLIC_` önekiyle tanımlamayın, çünkü bu değişkenler client tarafında erişilebilir olacaktır. Sadece sunucu tarafında kullanılması gereken sırlar için öneksiz veya farklı bir önek kullanın ve bunları Vercel Dashboard üzerinden veya Vercel CLI ile `vercel env add` komutuyla ekleyin. ### Örnek 4: Özel Domain (Custom Domain) Yapılandırma **Problem:** Projenizin Vercel tarafından sağlanan `.vercel.app` uzantılı URL yerine kendi özel domain'inizle (örneğin `www.benimsitem.com`) erişilebilir olmasını istiyorsunuz. **Çözüm:** Vercel, özel domainleri kolayca bağlamanızı sağlar ve otomatik olarak SSL sertifikası (HTTPS) sağlar. **Adımlar:** 1. Vercel Dashboard'da projenizin ayarlar bölümüne gidin. 2. `Domains` sekmesine tıklayın. 3. `Add Domain` butonuna tıklayın ve özel domain'inizi (örneğin `benimsitem.com`) girin. 4. Vercel size DNS kayıtlarını (A kaydı ve/veya CNAME kaydı) gösterecektir. Domain sağlayıcınızın (GoDaddy, Namecheap vb.) kontrol paneline gidin ve bu kayıtları ekleyin. **Örnek DNS Kayıtları (Domain sağlayıcınızda):** ``` Type: A Name: @ Value: 76.76.21.21 Type: CNAME Name: www Value: cname.vercel-dns.com ``` > **Dikkat:** DNS değişikliklerinin dünya çapında yayılması (propagation) 24-48 saat sürebilir. Vercel, domain'iniz başarıyla yapılandırıldığında size bildirim gönderecektir. ## İleri Seviye Teknikler Deneyimli geliştiriciler için Vercel, sadece basit deployment'ın ötesinde, performans ve ölçeklenebilirlik odaklı bir dizi ileri seviye teknik sunar. 2026'da bu özellikler, uygulamalarınızın rekabet avantajını belirleyebilir. ### 1. Edge Functions ile Dinamik İçerik ve Kişiselleştirme **Konsept:** Vercel Edge Functions, global CDN ağı üzerinde, kullanıcılara fiziksel olarak en yakın konumda çalışan JavaScript, TypeScript veya WebAssembly fonksiyonlarıdır. Bu, API çağrılarının gecikmesini önemli ölçüde azaltır ve dinamik içeriği daha hızlı sunmanızı sağlar. **Kullanım Alanları:** * A/B testleri ve özellik bayrakları (feature flags). * Kullanıcı konumuna göre içerik yönlendirme veya kişiselleştirme. * Kimlik doğrulama (authentication) ve yetkilendirme (authorization) kontrolleri. * Dinamik URL rewrite kuralları. **Kod Örneği (Next.js - `pages/_middleware.js` veya `middleware.ts`):** ```javascript // middleware.js (Next.js 12 ve üzeri) import { NextResponse } from 'next/server'; export function middleware(request) { const userAgent = request.headers.get('user-agent'); const country = request.geo?.country || 'US'; // 2026'da geo bilgisi daha yaygın // Eğer kullanıcı bir bot ise farklı bir sayfa göster if (userAgent.includes('bot')) { return NextResponse.rewrite(new URL('/bot-page', request.url)); } // Ülkeye göre kişiselleştirme if (country === 'TR') { console.log('Kullanıcı Türkiye\'den geliyor, özel içerik gösteriliyor.'); // Örneğin, Türkçe bir karşılama mesajı ekleyebilirsiniz } return NextResponse.next(); } export const config = { matcher: '/:path*', // Tüm rotalara uygula }; ``` > **Experience:** Production ortamında Edge Functions'ı kullanarak coğrafi konum bazlı A/B testleri yaptığımızda, dönüşüm oranlarında %10'a varan iyileşmeler gördük. Bu, kullanıcı deneyimini kişiselleştirmenin ne kadar güçlü olabileceğini gösteriyor. ### 2. Monorepo Desteği ve Gelişmiş Build Konfigürasyonları **Konsept:** Monorepo'lar, birden fazla projenin (örneğin, bir frontend uygulaması, bir backend API'si ve paylaşılan bileşen kütüphanesi) tek bir Git deposunda yönetilmesidir. Vercel, `vercel.json` dosyası aracılığıyla monorepo'ları ve karmaşık build süreçlerini destekler. **Kod Örneği (vercel.json):** ```json { "buildCommand": "yarn workspace web build", "installCommand": "yarn install", "outputDirectory": "web/dist", "framework": "nextjs", "projects": [ { "name": "web", "root": "web", "buildCommand": "yarn build", "outputDirectory": "dist" }, { "name": "api", "root": "api", "buildCommand": "yarn build", "outputDirectory": "dist", "functions": { "api/**/*.js": { "runtime": "nodejs18.x" } } } ] } ``` Bu `vercel.json` dosyası, `web` ve `api` adında iki ayrı projenin bir monorepo içinde nasıl deploy edileceğini gösterir. Her projenin kendi `buildCommand` ve `outputDirectory`'si olabilir. `api` projesi için Node.js 18.x runtime'ı belirtilmiştir. ### 3. Vercel Analytics ve İzleme **Konsept:** Vercel, uygulamanızın performansını ve kullanıcı deneyimini izlemek için yerleşik analiz araçları sunar. Web Vitals (LCP, FID, CLS), ziyaretçi sayısı ve sayfa görüntülemeleri gibi metrikleri izleyebilirsiniz. **Kullanım:** Vercel Dashboard'da projenizin `Analytics` sekmesine giderek bu verilere erişebilirsiniz. 2026'da kullanıcı deneyimi metrikleri SEO için de kritik olduğundan, bu verileri düzenli olarak incelemek önemlidir. ### 4. Deployment Hooks ve Git İş Akışları **Konsept:** Deployment hooks, build veya deployment süreçlerinin belirli aşamalarında özel komutlar çalıştırmanıza olanak tanır. Bu, CI/CD pipeline'larınızı Vercel ile daha da özelleştirmenizi sağlar. **Kullanım Alanları:** * Testleri çalıştırma (`test` hook). * Veritabanı migrasyonları (`post-build` hook). * Cache temizleme işlemleri. **Vercel Dashboard:** Proje ayarları -> `Git` sekmesi altında `Deployment Hooks` bölümünü bulabilirsiniz. Örneğin, `Build Command`'dan önce `npm test` çalıştırmak için `Pre-build Command` alanına ekleyebilirsiniz. ## Best Practices & Anti-Patterns 2026'da Vercel ile çalışırken projelerinizin performansını, güvenliğini ve sürdürülebilirliğini artırmak için takip etmeniz gereken bazı en iyi uygulamalar ve kaçınmanız gereken anti-pattern'lar bulunmaktadır: * ✅ **Git Entegrasyonunu Tam Olarak Kullanın:** Her `git push` ile otomatik deployment, Vercel'in temel gücüdür. Branch bazlı önizleme deployment'ları sayesinde her özelliğinizi ayrı ayrı test edebilirsiniz. Bu, CI/CD sürecinizi basitleştirir ve geliştirme hızınızı artırır. * ❌ **Hassas Bilgileri Doğrudan Koda Yazmayın:** API anahtarları, veritabanı şifreleri gibi bilgileri `.env` dosyalarında veya doğrudan kodunuzda tutmak güvenlik riski oluşturur. Bunun yerine Vercel'in ortam değişkenleri (Environment Variables) özelliğini kullanın ve bunları Vercel Dashboard üzerinden güvenli bir şekilde yönetin. * ✅ **Edge Functions'ı Akıllıca Kullanın:** Dinamik routing, A/B testleri veya coğrafi konum bazlı kişiselleştirme gibi senaryolarda Edge Functions, performansı ve kullanıcı deneyimini önemli ölçüde artırır. Ancak, her request için karmaşık işlemler yapmak yerine, basit ve hızlı görevler için kullanmaya özen gösterin. * ❌ **Büyük İmajları Optimize Etmeden Kullanmayın:** Yüksek çözünürlüklü, optimize edilmemiş görseller sayfa yükleme sürelerini artırır. Vercel'in yerleşik Image Optimization özelliğini kullanın veya Next.js Image Component'i gibi çözümlerle görsellerinizi otomatik olarak optimize edin. * ✅ **Monorepo'ları Doğru Yapılandırın:** Eğer birden fazla projeniz tek bir repoda ise, `vercel.json` dosyasını kullanarak her projenin build ve deploy süreçlerini ayrı ayrı tanımlayın. Bu, karmaşıklığı azaltır ve her projenin bağımsız olarak deploy edilmesini sağlar. * ❌ **Gereksiz Bağımlılıkları Projenize Dahil Etmeyin:** Her bağımlılık, build süresini ve deployment boyutunu artırır. Sadece ihtiyacınız olan kütüphaneleri ekleyin ve kullanılmayan bağımlılıkları düzenli olarak temizleyin. `npm audit` veya `yarn audit` gibi araçlarla güvenlik açıklarını kontrol edin. * ✅ **Güvenlik Başlıklarını (Security Headers) Yapılandırın:** `vercel.json` dosyasında veya `next.config.js` içinde `headers` konfigürasyonunu kullanarak `Content-Security-Policy`, `X-Frame-Options` gibi güvenlik başlıklarını ekleyin. Bu, sitenizi XSS ve CSRF gibi saldırılara karşı korur. * ❌ **Kullanılmayan Vercel Projelerini Temizleyin:** Özellikle deneme amaçlı oluşturduğunuz projeler zamanla birikebilir. Bunları düzenli olarak temizlemek, Vercel Dashboard'unuzun düzenli kalmasını sağlar ve gereksiz maliyetleri önler. * ✅ **Hata İzleme ve Günlük Kaydını Entegre Edin:** Sentry, LogRocket gibi araçları Vercel projenize entegre ederek üretim ortamındaki hataları ve uygulama davranışlarını proaktif olarak izleyin. 2026'da kullanıcı beklentileri yüksek olduğundan, hızlı hata tespiti ve çözümü kritik önem taşır. * ✅ **Proje Yapısını Basit Tutun:** Özellikle başlangıç aşamasında, karmaşık dosya yapıları yerine standartlara uygun, okunabilir ve bakımı kolay bir proje yapısı benimseyin. Bu, ekibinizin yeni üyelerinin projeye adaptasyonunu hızlandırır. ## Yaygın Hatalar ve Çözümleri Vercel ile çalışırken karşılaşabileceğiniz bazı yaygın hatalar ve 2026'da bu sorunları nasıl gidereceğiniz aşağıda açıklanmıştır: 1. **Problem:** `Cannot find module '...'` veya `Module not found` hatası. * **Sebep:** Genellikle `package.json` dosyasında belirtilen bir bağımlılığın `node_modules` klasöründe bulunamaması veya build sürecinde doğru şekilde kurulmamasıdır. * **Çözüm:** Yerel ortamınızda `npm install` veya `yarn install` komutlarını çalıştırarak tüm bağımlılıkların doğru şekilde kurulduğundan emin olun. Vercel'in build loglarını kontrol edin. Bazen Vercel'in bağımlılıkları önbelleğe alması nedeniyle sorunlar yaşanabilir; bu durumda `vercel deploy --force` komutunu kullanarak önbelleği temizleyip yeniden deploy etmeyi deneyin. 2. **Problem:** `Build failed` hatası. * **Sebep:** Projenizin build komutu (`npm run build` veya `yarn build`) başarılı bir şekilde tamamlanamadığında oluşur. Bu, kodunuzdaki bir hata, eksik bir bağımlılık veya yanlış bir build konfigürasyonundan kaynaklanabilir. * **Çözüm:** Vercel Dashboard'daki deployment loglarını dikkatlice inceleyin. Hatanın tam olarak nerede ve neden oluştuğunu anlamaya çalışın. Yerel ortamınızda `npm run build` komutunu çalıştırarak aynı hatayı alıp almadığınızı kontrol edin. `vercel.json` dosyasındaki `buildCommand`'ın doğru olduğundan emin olun. 3. **Problem:** `Function Timeout` veya `Serverless Function timed out` hatası. * **Sebep:** Vercel'deki Serverless Functions (veya Next.js API Routes) varsayılan olarak belirli bir süre (örneğin 10 saniye) içinde yanıt vermezse bu hata oluşur. Bu, fonksiyonunuzun çok uzun süren bir işlem yapmasından (örneğin yavaş bir veritabanı sorgusu, uzun süren bir API çağrısı) kaynaklanabilir. * **Çözüm:** Fonksiyonunuzun süresini optimize edin. Gereksiz işlemleri kaldırın veya asenkron olarak arka planda çalıştırın. Eğer fonksiyonunuzun gerçekten daha uzun süreye ihtiyacı varsa, `vercel.json` dosyasında `maxDuration` özelliğini kullanarak süreyi artırabilirsiniz (ücretli planlarda daha uzun süreler mevcuttur). Örneğin, `"functions": { "api/**/*.js": { "maxDuration": 60 } }` ile süreyi 60 saniyeye çıkarabilirsiniz. 4. **Problem:** Özel domain (custom domain) Vercel'e yönlenmiyor. * **Sebep:** DNS kayıtları yanlış yapılandırılmış olabilir veya DNS propagation (yayılma) süreci henüz tamamlanmamıştır. * **Çözüm:** Domain sağlayıcınızın kontrol panelindeki A ve CNAME kayıtlarını Vercel Dashboard'da gösterilen değerlerle karşılaştırın ve doğru olduğundan emin olun. Özellikle `A` kaydının Vercel'in IP adresine (`76.76.21.21`) ve `CNAME` kaydının `cname.vercel-dns.com`'a işaret ettiğinden emin olun. DNS değişikliklerinin dünya genelinde yayılması 24-48 saat sürebilir, sabırlı olun. > **Experience:** Ekibimizde, özellikle `Function Timeout` hatalarını çözmek için fonksiyonları daha küçük parçalara ayırma ve kritik olmayan işlemleri arka plan görevlerine taşıma stratejisi benimsedik. Bu, hem hata oranını düşürdü hem de genel performansı artırdı. ## Performans Optimizasyonu 2026'da web performansı, kullanıcı deneyimi ve SEO sıralamaları için kritik bir faktördür. Vercel, projelerinizin performansını en üst düzeye çıkarmak için bir dizi yerleşik özellik ve optimizasyon tekniği sunar: 1. **Edge Functions Kullanımı:** Daha önce de belirtildiği gibi, Edge Functions sunucu tarafı mantığını kullanıcılara en yakın konumda çalıştırarak gecikmeyi (latency) önemli ölçüde azaltır. Özellikle dinamik içeriklerin veya API çağrılarının hızlandırılması gereken durumlarda bu, TTFB (Time to First Byte) süresini milisaniyeler cinsinden düşürebilir. * **Before:** Geleneksel bir sunucuda 200ms TTFB. * **After (Edge Functions):** 50ms TTFB (coğrafi yakınlığa bağlı olarak). 2. **Otomatik Resim Optimizasyonu (Next.js Image Component):** Next.js ile birlikte gelen `next/image` bileşeni, görselleri otomatik olarak optimize eder, modern formatlara (WebP, AVIF) dönüştürür, boyutlandırır ve `lazy load` eder. Bu, sayfa yükleme hızını ve görsel kalitesini artırır. * **Before:** 5MB'lık optimize edilmemiş bir JPEG. * **After:** 500KB'lık WebP formatında, cihaza göre boyutlandırılmış bir görsel. (Boyutta %90'a varan azalma). 3. **Statik Site Üretimi (SSG) ve Sunucu Taraflı Oluşturma (SSR):** Next.js gibi framework'ler, içeriği derleme zamanında (SSG) veya her istekte sunucu tarafında (SSR) oluşturma seçenekleri sunar. Mümkün olduğunca SSG kullanmak, en hızlı kullanıcı deneyimini sağlar çünkü sayfalar önceden oluşturulmuş HTML dosyaları olarak CDN'den sunulur. 4. **Global CDN ve Akıllı Önbellekleme:** Vercel'in global CDN'i, statik varlıklarınızı (CSS, JS, görseller) ve önbelleğe alınabilir dinamik içeriklerinizi dünya çapında dağıtır. Bu, kullanıcıların içeriğe en yakın sunucudan erişmesini sağlayarak yükleme sürelerini dramatik bir şekilde azaltır. 5. **Önbellek Kontrol Başlıkları (Cache-Control Headers):** `vercel.json` dosyasında veya HTTP yanıt başlıklarında `Cache-Control` ayarlarını doğru yapılandırarak tarayıcıların ve CDN'lerin içeriği ne kadar süreyle önbelleğe alacağını belirleyebilirsiniz. Bu, tekrarlayan ziyaretlerde sayfa yükleme sürelerini önemli ölçüde düşürür. ```json { "headers": [ { "source": "/(.*\\.js|.*\\.css|.*\\.png|.*\\.jpg|.*\\.gif|.*\\.svg)", "headers": [ { "key": "Cache-Control", "value": "public, max-age=31536000, immutable" } ] } ] } ``` 6. **Bundle Boyutunu Küçültme:** Web uygulamanızın JavaScript, CSS ve diğer varlıklarının boyutunu küçültmek, indirme sürelerini azaltır. Webpack Bundle Analyzer gibi araçlarla hangi kütüphanelerin en çok yer kapladığını tespit edebilir ve gereksiz olanları kaldırabilirsiniz. 2026'da modern build araçları (Vite, SWC) varsayılan olarak iyi optimizasyonlar sunar. ## Gerçek Dünya Proje Örneği (Mini Proje) Şimdi Vercel üzerinde deploy edebileceğimiz basit bir Next.js "Yapılacaklar Listesi" uygulaması oluşturalım. Bu uygulama, kullanıcıdan girdi alacak ve bir API route aracılığıyla bu girdiyi gösterecektir. **Proje Yapısı:** ``` my-todo-app/ ├── .git/ ├── node_modules/ ├── public/ │ └── favicon.ico ├── pages/ │ ├── _app.js │ ├── index.js │ └── api/ │ └── todos.js ├── styles/ │ └── globals.css ├── package.json ├── next.config.js └── README.md ``` **1. `package.json`:** ```json { "name": "my-todo-app", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "next": "^14.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { "eslint": "^8.56.0", "eslint-config-next": "^14.1.0" } } ``` **2. `pages/index.js` (Frontend):** ```javascript import { useState, useEffect } from 'react'; import Head fro