First 20 customers will receive 20% Extra Discount on checkout. Use Code:EARLYBIRD

GDPR Is Easy Until It Isn’t: Why Most Next.js Apps Are Not Actually Ready For Production

S
Serkan Durgun
June 1, 2026·7 min read
GDPR Is Easy Until It Isn’t: Why Most Next.js Apps Are Not Actually Ready For Production

If you've ever built a SaaS application, you've probably checked the usual boxes.

Authentication? Done.

Stripe integration? Done.

User accounts? Done.

Contact forms? Done.

A privacy policy copied from somewhere on the internet? Also done.

At that point, it feels like you're ready to launch. The problem is that most of the hard GDPR and security work starts after you've shipped.

The first time a user asks for account deletion. The first time someone requests a copy of their personal data. The first time you discover that password reset tokens are sitting in plaintext inside your database. The first time you realize your logs are quietly collecting personal information you never intended to store.

Those are the exact problems I spent the last few weeks solving inside NextStarterKit.

This update wasn't about adding another shiny AI wrapper or redesigning a dashboard. It was about making the foundation safer, more compliant, and much closer to what real SaaS products need once actual customers start showing up.

I didn't build these features because a compliance consultant told me to. I built them because I kept running into the same problems while working on real-world SaaS projects. Every time I thought a product was ready, another edge case appeared: personal data lingering after account deletion, sensitive information leaking into logs, or authentication flows storing data they didn't actually need. Eventually, I stopped patching those issues project by project and baked the solutions directly into NextStarterKit.

NextStarterKit is my production-focused Next.js 16 boilerplate built for founders who want to ship quickly without ignoring the security, privacy, and operational concerns that inevitably show up later.

The Problem With Most Boilerplates

Most starter kits are optimized for demos. That's not a criticism; it's simply the reality of the market. It's relatively easy to create a project that looks production-ready. It's much harder to create one that behaves correctly when legal requirements, privacy regulations, and security incidents enter the picture.

For example:

  • Deleting a user account often leaves personal data scattered across multiple tables.

  • Password reset tokens are frequently stored in plaintext.

  • OAuth tokens are stored forever without encryption.

  • Audit logs collect sensitive information without proper retention policies.

  • Admin dashboards over-fetch user data they never actually need.

  • GDPR exports are incomplete or missing entirely.

  • Contact forms collect personal data without recording explicit consent.

None of these issues will show up in your Lighthouse score. None of them will make your homepage slower. But all of them become painfully important once customers start trusting you with their data.

GDPR Right To Erasure Is More Than Deleting A User Row

One of the biggest improvements in this release is a much more comprehensive implementation of GDPR Article 17, also known as the Right to Erasure.

In many applications, clicking "Delete Account" removes the primary user record and little else. Unfortunately, personal data tends to spread over time into feedback submissions, waitlists, contact forms, audit logs, and third-party integrations like Stripe.

If those records remain behind, you've only partially fulfilled a deletion request. NextStarterKit now removes or anonymizes personal data across the entire application ecosystem, including:

  • User feedback

  • Contact submissions

  • Waitlist entries

  • Security audit events

  • Anonymous events linked by email

  • Stripe customer records where legally permissible

The goal isn't perfection; the goal is making account deletion actually mean account deletion.

Password Reset Tokens Should Not Live In Plaintext

A surprisingly common pattern in web applications is storing password reset or email verification tokens directly in the database as plaintext. If an attacker gains read access to your database, those active tokens can potentially be used to compromise accounts.

User passwords continue to be protected with scrypt, but reset and verification tokens now follow a different workflow. Before they're stored, they're transformed into one-way SHA-256 hashes, meaning the database never contains usable tokens.

The raw token only exists inside the email sent to the user. The database stores only the hash required for verification. Even if someone gains read access to your database, those active tokens are no longer immediately usable.

This is one of those changes users never notice, but security teams absolutely do.

OAuth Tokens Are Sensitive Data Too

Many SaaS applications allow users to sign in through Google, GitHub, or Discord. That convenience often comes with a hidden security risk: OAuth access tokens and refresh tokens are frequently stored completely unencrypted.

To solve this, NextStarterKit enables encrypted OAuth token storage through Better Auth. But we didn't stop there. OAuth ID tokens are also discarded after validation because the application doesn't need to keep them around.

If the application doesn't absolutely need the data to keep functioning, it shouldn't be storing it. Period.

Your Logs Are Collecting More Personal Data Than You Think

Logging is an area developers rarely revisit. We add logs during development to debug an issue and then forget about them. Months later, we discover that request bodies, email addresses, customer identifiers, and other personal information have quietly accumulated inside log storage providers.

This update aggressively reduces unnecessary PII (Personally Identifiable Information) exposure:

  • Contact forms no longer dump names and email addresses into standard logs.

  • Waitlist operations no longer print recipient email addresses.

  • Stripe webhooks no longer expose sensitive customer identifiers.

  • Security events retain operational usefulness without unnecessarily exposing metadata.

The result is cleaner logs and a smaller blast radius if your log storage is ever compromised.

GDPR Data Exports Actually Need To Be Useful

Many applications technically support data exports by generating a basic JSON dump of the user table. In practice, they export almost nothing of substance.

A proper GDPR access request should include all personal information the application maintains about a user. NextStarterKit's export system now automatically includes:

  • Contact submissions

  • Waitlist records

  • Security events

  • User-related operational data

At the same time, internal administrative notes remain excluded because they are not part of the user's exportable data. This creates a much more useful foundation for GDPR access requests without exposing internal team information.

Data Retention Matters Too

Compliance isn't just about collecting data correctly; it's also about not keeping it forever. The new retention tooling makes it possible to automatically purge old operational data after a configurable period, including:

  • Expired verification records

  • Historical security audit logs

  • Old contact submissions

  • Waitlist records

Because data you no longer need is data you no longer have to protect.

Why I Built This

I originally built NextStarterKit because I was tired of rebuilding the same foundational SaaS blocks over and over again—authentication, billing, admin dashboards, email workflows, and permissions.

What I didn't expect was how much time would eventually go into the less glamorous parts: security hardening, privacy compliance, operational tooling, audit trails, and retention policies. The things founders rarely think about until a customer, investor, or enterprise prospect starts asking uncomfortable questions.

This release is a reflection of that reality. A production SaaS isn't just a collection of features. It's a collection of responsibilities.

If You're Building A SaaS In 2026

Whether you're building your first startup or your fifth, sooner or later you'll have to deal with GDPR requests, security reviews, enterprise questionnaires, customer audits, and data retention requirements.

It's significantly easier to start with those foundations in place than it is to retrofit them into a growing codebase six months later. Build the boring parts before they become expensive problems.

Build The Boring Parts Once

Most boilerplates help you launch. NextStarterKit helps you survive your first GDPR request, security review, enterprise questionnaire, and customer audit.

If you're building a SaaS on Next.js 16 and don't want to spend weeks retrofitting privacy and security controls later, NextStarterKit gives you a production-ready foundation from day one.

Get NextStarterKit Here

Use code EARLYBIRD at checkout for an additional 20% discount on top of the current launch pricing.

Future you will be very happy you didn't leave GDPR for later.

4 views

Related Posts

Your next SaaS, minus the first 2 weeks

Skip setup, configs, and decisions. Start from a production-ready Next.js foundation.