Why Did OpenAI Move from Next.js to Remix?
While no official statement has been made, several insights from analyzing OpenAI's codebase and application structure help shed light on this decision.
Here’s an overview of why OpenAI likely made the shift:
1. Client-Side Rendering Dominance
The OpenAI web app, including ChatGPT, relies heavily on client-side rendering (CSR). Next.js, while known for its Server-Side Rendering (SSR) capabilities, isn’t necessarily optimized for fully client-side applications. Remix, on the other hand, excels at building Single Page Applications (SPAs) and CSR-based solutions.
In OpenAI’s case, while they do use some initial HTML rendered server-side, most of the application's dynamic rendering happens on the client. Remix allows more flexibility in handling client-side navigation, data fetching, and rendering, fitting OpenAI's needs.
2. Enhanced Routing Capabilities
Remix was created by the team behind React Router, and it shows. Routing is at the core of Remix's functionality, providing powerful features for data loading and navigation. OpenAI's app has around 60 routes, each requiring fast data loading and interaction. Remix’s router system allows seamless client-side navigation, which likely improves the overall performance and user experience for OpenAI’s users.
3. Improved Data Handling with Loaders
Remix introduces the concept of loaders, which are used to fetch data on the server before rendering the page. OpenAI leverages this by loading all necessary data during the initial render, minimizing the need for subsequent API calls. This enhances performance by ensuring the application doesn’t have to wait for data fetching post-load, reducing load times and improving user experience.
In Remix, OpenAI can render their app with a JSON object containing all required data for that route, making the transition between pages faster and more efficient.
4. Focus on API-Based Architecture
Most of OpenAI’s web app interacts with APIs to fetch data, rather than performing complex database queries on the server side. Remix plays well in this architecture by acting as a middle layer that fetches API data and hydrates the client-side application. Remix’s ability to handle API-driven interactions suits OpenAI’s needs, where the majority of the backend processing happens elsewhere.
This separation of concerns makes Remix a natural choice, as OpenAI's app can simply fetch data from their APIs and display it without needing heavy server-side logic or database integration.
5. Efficient Client-Side Navigation
With Remix, once the application has loaded, subsequent page navigations are handled entirely on the client-side. When switching pages, Remix only fetches the necessary data in JSON format rather than rendering HTML, speeding up transitions and reducing server load. This is ideal for OpenAI's web apps, where performance and fast user interactions are crucial.
6. Optimized Performance with Vite
Remix runs on Vite, a modern build tool that is known for its speed and efficiency compared to Webpack (which Next.js relies on). Vite offers faster development build times and more efficient hot module replacement (HMR). OpenAI likely benefits from faster development cycles and lighter, more responsive production builds thanks to Vite.
Conclusion: Why Remix Over Next.js?
While Next.js is a fantastic framework for SSR-heavy applications, OpenAI’s use case revolves around efficient client-side interactions, quick data fetching from APIs, and flexible routing. Remix offers them a more streamlined solution for these needs, with its focus on client-side rendering, powerful routing, and support for API-driven architectures. The transition to Remix likely brings better performance, faster client-side navigation, and more flexible data handling—crucial factors for an app like ChatGPT.
Though Next.js remains a strong player for SSR-based apps, Remix’s advantages in SPAs and CSR scenarios seem to align better with OpenAI’s technical requirements, leading them to make the switch.
Subscribe to my newsletter
Read articles from Durgesh Upadhyay directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Durgesh Upadhyay
Durgesh Upadhyay
Hey there! I'm a passionate full-stack developer with 3 years of professional work experience and 3 years of start up based experience. I specialize in building scalable and performant web applications using ReactJS, MongoDB, MySQL, ExpressJS, NodeJS, AWS, Git, NextJS, and RemixJS. With my extensive knowledge of these technologies, I've successfully built full-stack products for startups single-handedly, delivering high-quality solutions that meet business needs. I love sharing my knowledge and experience with the tech community, which is why I started this blog. Join me on my journey as I explore the latest trends and best practices in full-stack development. Let's learn and grow together!