FAQ
Frequently asked questions about next-forge.
Why don’t you use trpc?
While tRPC is a great tool for building type-safe APIs, Next.js Server Actions provide similar benefits with tighter framework integration. This native solution reduces complexity while maintaining the type safety that makes tRPC attractive. Since Server Actions are part of the framework itself, they’re also likely to receive continued optimization and feature improvements directly from the Next.js team.
Why did you pick X as the default tool instead of Y?
The default next-forge tooling was chosen by myself after having used them in numerous production applications. It doesn’t mean they’re the best tools, it means they’re the ones that helped me launch quickly. Tools and tastes change over time and it’s inevitable that the defaults will change at some point.
That being said, if you really believe tool Y is a much better choice than tool X, feel free to start up a conversation with me on X and we can hash it out!
Why is there a suppressHydrationWarning
on every html
tag?
This is the recommendation by next-themes
to supress the warning stemming from determining theme on the client side.
Why are there unused dependencies like import-in-the-middle
?
Without these packages, Turbopack throws warnings highlighting cases where packages are being used but are not installed so it can fail when running in production.
This was already an issue when we were using Webpack, it just never warned us that it was missing. This can be fixed by installing the external packages into the project itself.
Why are certain folders ignored by the linting configuration?
There are three types of files that are ignored by the linting configuration:
- shadcn/ui components, libraries, and hooks - shadcn/ui has its own linting configuration that is less strict than the one used in this project. As such, we ignore these files to avoid modifying them. This makes it easier to update shadcn/ui in the future.
- Collaboration package configuration - This is a package that is used to configure the collaboration package. The types are stubs and fail some of the linting rules, but it’s not important unless you’re using them.
- Internal documentation files - These are the documentation files for this project. They’re deleted when you initialize the project, so they’re not important to lint.