Studio Ghibli Meets ShadCN, and Why ‘server-only’ Just Saved My App


Hey Reader,

🎨 Ever wanted your website to feel like it came straight out of a Studio Ghibli movie?

I just discovered a Ghibli-inspired ShadCN UI theme that brings that dreamy, hand-painted magic to your components — and it’s absolutely stunning.

If you're as obsessed with that aesthetic as I am, you're gonna love this.

video preview

I also share a Github Repo you can check out too that goes along well with the video.

🍿 Weekly Snack: 'server-only' vs 'use server'

Next.js has two easily confused directives: 'use server' and server-only.

💡 server-only has nothing to do with Server Actions.

'use server' marks a function to run on the server and be exposed as an HTTP endpoint — that’s a Server Action.

But it doesn't prevent the file from being imported in a client component — which causes runtime failures, often in production.

That’s why server-only exists: It enforces a hard boundary, throwing an error if you import server code on the client — so mistakes fail early, not late.

'use server'

Specifically for Server Actions

→ This function is allowed to run on the server only, and can be called from the client via form submissions or imperative actions

→ Enforced at runtime, not build time


server-only

Not related to Server Actions at all

Just a safety guard 🔐 that says: “This file must never be used in a client component or client context”

→ Enforced at build time, not runtime


⚠️ Key TakeAways

Don’t use server-only on Server Actions but for database helpers, private APIs, or files that access environment variables.
You can’t rely on 'use server' to protect sensitive server modules.

→ Use them side-by-side in a project, but not in the same file.

🚀 Latest Frontend News

🧰 Supabase dropped their official UI Library ↗ — built with ShadCN registry, works with React, Next.js, TanStack.
Includes login, dropzone, real-time avatars/chat, and AI prompts.

Vite published a dev server security patch. Update if you're on any of these versions: 6.2.4, 6.1.3, 6.0.13, 5.4.16, 4.5.11

⚙️ Next.js 15.2.3 includes a security fix too update or follow the mitigation steps ↗. Hosted apps on Vercel, Netlify, and Cloudflare are safe.

🚢 Windsurf Wave 6 is live — now supports one-click deployment ↗. Fast and super dev-friendly.

Ready to multithread everything with Cursor 0.48 ↗ few cool things are,

  • 🧩 Multi-tab chats for parallel workflows (Cmd+T).
  • 🔎 Faster Indexing: Shared codebases now index dramatically faster (e.g., Cursor repo: 20 min → under 1 min).
  • 🔔 Sound Notification: Audio cue when AI response is ready.
  • 🤑 Cost Visibility: See cost per chat (usage-based plans).

⚙️ Prisma published 2 ways to integrate Trigger.dev into a Next.js + Turborepo app ↗ — with working monorepo setups.

🚀 Deploy Next.js anywhere you like, check this RFC

React 19.1 just dropped 💥 — here’s what’s worth a look:

  • 🕵️‍♀️ Debug smarter with the new Owner Stack (dev-only), making it easier to trace who rendered what.
  • Suspense is now everywhere — client, server, even during hydration — with cleaner fallback behavior and better scheduling.
  • 🧪 Experiment with unstable_prerender in React Server Components, now with edge streaming support.

🧰 Recommended Tools

🧱 I shared my Tech stack for my First SaaS ProofyBubble

⚡ Convert your Vercel + Next.js app and auto-deploy it to Cloudflare. Check it out

My Daily Dev Toolkit (What I Actually Use) I use on a daily basis

Vercel is providing platform credits, exclusive community support, and extra benefits for your open source project, apply here.

🎥 Weekly Youtube Videos

Check it out and subscribe to my channel ↗️ for more Frontend, Leadership and Career Development content.

I Just Found the BEST Ghibli Shadcn UI Components!

video preview

Build and Deploy a Full Stack AI SaaS Full Course (2025)

video preview

What do you think of today's Newsletter? Simply click on one of the links below.

🔥 Love it!

😐 It’s okay

👎 Not good



All past newsletters
can be found here.

You can email me at me@kulkarniankita.com to advertise/sponsor the newsletter.

For those curious, I write all my emails using Convertkit.

Ankita Kulkarni

Join 9200+ subscribers reading by weekly personalized Newsletter that helps developers level up their skills through weekly Frontend and Leadership Snacks. You get a deep dive into a Tech topic, Actionable tips to excel in your career and a toolbox!

Read more from Ankita Kulkarni
A code editor displays a file structure showing a new lock file generated in the Next.js directory, indicating port 3000 is occupied.

Hey Reader, Confession: i've lost count of how many times an agent has killed my running dev server and started a new one on a different port. it's the single most annoying thing about coding with AI right now. Turns out Next.js 16.2 just fixed it so dig into the snack below. let's dig in 🍿 PRESENTED BY SUPABASE Supabase is the backend for your app: it gives you a database plus the “boring but necessary” stuff around it (user sign-in, file storage, background functions, and real-time updates)...

View Transitions in Next.js

Hey Reader, I'm working on a new course on AI and I know there are a million courses out there but honestly, I'd like to work on something that can help you ship things. However, I need your help. Can you please answer what type of a course on AI would you want me to work on? Click here to reply ↗ Anyway, let's get into this week's newsletter. PRESENTED BY SUPABASE Supabase is the backend for your app: it gives you a database plus the “boring but necessary” stuff around it (user sign-in, file...

Two code snippets contrasting the placement of `redirect()` in a Next.js function, highlighting functional differences and best practices.

Hey Reader, Last week, I gave a talk at React Paris about Building your own AI minion, basically an AI Agent Toolkit for modern apps. I show my workflow and how I have automated a lot. The room was full, the energy was electric ⚡, and it turned into one of my favourite talks I’ve given. You can 🎥 watch the video here and the slides are here. 🍿 Our Weekly Snack: Stop calling "redirect()" inside a try/catch block in Next.js Stop calling "redirect()" inside a try/catch block in Next.js 💡 Here's...