Proje: Okul B2B App · Hub: Okul B2B App — Architecture

Build Tooling — Metro, Babel, TypeScript

Metro Config (metro.config.js)

config.transformer = {
  inlineRequires: true  // Lazy module yükleme — başlangıç performansı
};

Expo varsayılanları üzerine minimal değişiklik. inlineRequires: true ile modüller ilk kullanımda yüklenir.

Babel Config (babel.config.js)

presets: ['babel-preset-expo'],
plugins: [
  './babel-plugin-disable-font-scaling.js',  // Text font scaling devre dışı
  'react-native-worklets/plugin',            // Reanimated 4 worklets (LAST!)
]

Kritik: react-native-worklets/plugin son plugin olmalı.

TypeScript Config

  • Strict mode aktif
  • baseUrl: "." ve paths: { "@/*": ["./*"] } ile @/ alias
  • typedRoutes: true — Expo Router tip güvenliği

Yeni Mimari (New Architecture)

Her iki platform: newArchEnabled: true (expo-build-properties)

  • JSI (JavaScript Interface) üzerinden native modules
  • Fabric renderer
  • TurboModules

Bağımlılık Yönetimi

  • package-lock.json commit’lendi (yarn değil, npm)
  • EAS build’da node 20.18.0 pinlendi (eas.json’da "node": "20.18.0")
  • Native deps exact version (^ yok)