Airomeda
0%
finance

Audit-Ready Log Infrastructure for BDDK Compliance

How we built structural log schema, immutable log chains, and real-time anomaly detection for BDDK and MASAK compliance on the PayGate project.

Selin Aydın·2026-01-30·10 dk okuma
Audit-Ready Log Infrastructure for BDDK Compliance

Context

The App Router announced with Next.js 13 — built on React Server Components (RSC) — fundamentally changes the frontend development paradigm. We moved several production projects onto this architecture in early 2025 and have been testing its real-world performance ever since.

One year on, we can say this: App Router is genuinely powerful, but there are nuances that require attention.

What Worked Very Well?

Server Components Simplified Data Fetching Logic

With RSC, data fetching happens directly at the component level. Our dependency on useEffect + fetch combinations and third-party libraries for global state management dropped dramatically.

Writing components that access the database directly felt unusual at first, but once we saw the performance and developer experience gains, there was no desire to go back.

Nested Layouts Improved Code Organization

Organizing shared layout components by route segment significantly improved code legibility in large applications. Nested layout structures for dashboard applications in particular provided a highly efficient development experience.

Streaming and Suspense Elevated User Experience

Isolating slow data sources behind Suspense boundaries so the rest of the page renders immediately produced noticeably better user experiences on data-intensive pages.

Measure It

To make streaming's effect tangible, you need to isolate slow components with properly placed Suspense boundaries. Wrapping everything in a single Suspense won't deliver the expected gains.

Areas Requiring Careful Attention

The Caching Model Is Still Confusing

Next.js's multi-layered caching model (Router Cache, Full Route Cache, Data Cache, Request Memoization) is powerful but takes time to build a mental model around. Expecting legacy revalidate behavior and getting different results is a common experience.

Our recommended approach:

  • Document when each cache layer activates in a diagram
  • Plan your cache invalidation strategy alongside your component architecture
  • Remember that caching behavior in development can differ from production

The Client/Server Boundary Introduced New Error Types

Placing the "use client" directive correctly can sometimes be tricky. Third-party libraries in particular (packages not yet RSC-compatible) complicate managing this boundary.

Bundle Analysis Became Even More Important

Drawing the server/client boundary incorrectly can lead to unexpected bundle size increases. Regular analysis with @next/bundle-analyzer is necessary.

Our Recommendations

  • Start new projects with App Router — you won't find yourself wanting to revert to Pages Router
  • For migrating existing applications, adopt the gradual migration approach where pages and app directories coexist
  • Plan your cache strategy upfront; fixing it later is expensive
  • Treat RSC-compatible library selection as part of architectural decisions

Conclusion

App Router continues to mature and grows more stable with each version. Based on our year of experience, when used correctly it delivers meaningful gains in both developer productivity and end-user experience.

Yazar Hakkında

Selin Aydın

Selin Aydın

Kurucu Ortak

Kurucu Ortak. Bankacılık ve yazılım sistemleri alanında 10+ yıl deneyim. İşletmeler için güvenilir yazılım çözümleri tasarlar.

İletişim

A complex challenge?
Let's talk.

İlk görüşme

30 dk ücretsiz · ihtiyaçlarınızı dinleriz · hızlı değerlendirme

Yanıt süresi

24 saat içinde · hello@airomeda.com

Destek

7/24 destek · 130+ ülkeye hizmet · Türkçe ve İngilizce