Logo
    Search

    785: What’s Next for NextJS with Tim Neutkens

    enJune 21, 2024

    Podcast Summary

    • React compiler optimizationsThe React compiler optimizes React applications automatically, reducing the need for manual optimization techniques and leading to significant performance improvements, especially in larger applications.

      The React compiler, now open source and in beta, optimizes React applications automatically by memoizing components and their dependencies, reducing the need for manual optimization techniques like useMemo and useCallback. This can lead to significant performance improvements, especially in larger applications. Additionally, the compiler addresses issues with unnecessary re-renders caused by prop drilling and context changes. While not a fix for context-related re-renders, these optimizations can lead to improved code output and fewer performance issues. The React compiler is a game-changer for React developers, streamlining the optimization process and allowing for more focus on product logic.

    • React Server ComponentsReact Server Components are a new way to define and render components directly on the server, offering benefits like data fetching, unified rendering model, and portable components, but require upgrading React and modifying Next.js setup

      With the latest updates in React, there's a new way to define and render components called React Server Components. Instead of using traditional methods like getStaticProps and getServerSideProps, React Server Components allow you to render React components directly on the server. This approach brings benefits like data fetching on the server, a unified rendering model for both client and server, and the ability to write portable components that work across different frameworks. However, to use React Server Components, you need to upgrade to the latest React version and make some modifications to your Next.js setup. Although there might be some initial complexity, the long-term benefits, such as improved performance and a better developer experience, make it worth considering. Overall, this new feature allows developers to write encapsulated components that define how components work on the client, how they get their data, and how they render on the server, all inside a single component. This is particularly exciting for those building websites for clients, as it brings us closer to a WordPress plugin-like experience in the React world.

    • React Server Components migrationWhen migrating a React application to Server Components, start with the outer layers and gradually introduce server components as needed, understanding the differences between client and server components and their use cases.

      React Server Components (RSC) offer new possibilities for building server-side rendered applications, but the transition from client-side to server-side components requires careful planning. RSC allows developers to bring entire CMS systems as React components, providing better customization and control. However, when migrating an existing application, it's essential to start with the outer layers and gradually opt in to server components for components that require server-side data or have interactivity issues. The misconception that an entire application needs to be moved to server components at once is not accurate. Instead, developers should understand that client components are still a crucial part of the React ecosystem and can coexist with server components. When migrating, it's important to approach it incrementally, starting with the outer layers and gradually introducing server components as needed. Additionally, understanding the differences between client and server components and their use cases is crucial for a successful migration.

    • Server components performanceServer components in Next.js improve performance by allowing data fetching and rendering on the server, leading to faster load times, better core web vitals, and a two-way data flow between the server and client, eliminating the need for external libraries for state management and data fetching.

      Server components in Next.js offer improved performance and a better user experience by allowing data fetching and rendering to happen on the server before sending the results to the client. This approach can lead to faster load times, better core web vitals, and the ability to introduce suspense boundaries for showing loading states. Additionally, server components enable a two-way data flow between the server and the client, allowing for data to be paused and sent from the server to the client, and even enabling the client to send data back to the server for processing. This new feature eliminates the need for external state management or data fetching libraries, and simplifies the development process for building dynamic applications. Overall, server components provide a more efficient and streamlined way to build Next.js applications, allowing for better performance and a more seamless user experience.

    • React Server Components and Next.js collaborationTeams closely collaborate to improve functionality and performance of React Server Components and Next.js features, allowing efficient data management and page re-rendering through features like Suspensey CSS, images, and scripts.

      Next.js and React teams closely collaborate to improve the functionality and performance of React Server Components and Next.js features. When a user submits data and triggers a server action, the entire page can be re-rendered, making it essential to efficiently manage data and page re-rendering. The React team has contributed features like Suspensey CSS, Suspensey images, and Suspensey scripts to Next.js, allowing React to hold off rendering until the required data is loaded. The teams also communicate daily to discuss and implement new features, such as async transitions, and dogfood the latest versions of their respective platforms to identify and address potential issues. While the plan is to make sync client components a reality, the current blocker is the implementation of async local storage, which is proposed to pause data across the async context stack. The exact reason why this is a blocker and its impact on the timeline for sync client components are not clear.

    • Turbo Pack for large-scale JavaScript projectsTurbo Pack, a new solution from Next.js, optimizes large JavaScript graphs for server, client, and Edge environments using a single multi-graph and caching technology. A solid caching layer ensures reliability and efficient recomputation of necessary parts when changes occur.

      The speaker discussed the importance of efficiently managing large-scale JavaScript projects and the limitations of existing solutions like Webpack. He introduced Turbo Pack, a new solution developed by Next.js, which aims to optimize the processing of large JavaScript graphs for server, client, and Edge environments using a single multi-graph and caching technology. The speaker highlighted the benefits of starting with a solid caching layer to ensure reliability and enable efficient recomputation of only the necessary parts of the graph when changes are made. Turbo Pack also leverages the latest compiler technology and is currently powering Next.js and potentially future versions of Turbo Repo.

    • Next.js optimizationsNext.js team improved compile times and module graphs by implementing on-demand compilation, parallelization, and persistent caching, leading to faster initial load times and recompile times.

      The team behind Next.js, a popular React framework for building server-side rendered applications, faced significant challenges with long compile times and large module graphs using Webpack. They addressed these issues by implementing on-demand compilation, parallelization, and persistent caching, resulting in faster initial load times and recompile times. This approach significantly improves the developer experience and allows for near-instant feedback during development. The team also plans to extend these optimizations to production builds and explore the potential of persistent caching for build times. Additionally, they discussed their work on the Nexus 15 RC, which simplifies the configuration process and focuses on providing better defaults for static generation while maintaining flexibility for dynamic behavior. They encourage users to try it out and provide feedback. Lastly, they mentioned Luca from the Sentry Nexus SDK team as a shameless plug.

    • Error handling capabilitiesCentury enhances error handling in Next.js and Sentry by linking server-side errors with client-side sessions through error digests, allowing for hiding sensitive data and streamlined debugging

      Century is enhancing the error handling capabilities of Next.js and Sentry by allowing server-side errors to be linked with client-side sessions through error digests. This feature enables developers to hide sensitive data from the client while still allowing Sentry to reason about both server and client errors. The linked sessions can be searched for using the error digest in the UI, providing a more streamlined debugging experience. Additionally, Century has been focusing on improving hydration issues and advancing source maps in JavaScript, which is a significant investment in the JavaScript community. Overall, these improvements aim to provide developers with better tools for debugging and optimizing their applications.

    Recent Episodes from Syntax - Tasty Web Development Treats

    788: Supabase: Open Source Firebase for Fullstack JS Apps

    788: Supabase: Open Source Firebase for Fullstack JS Apps

    Scott and CJ chat with Paul Copplestone, CEO and co-founder of Supabase, about the journey of building an open source alternative to Firebase. Learn about the tech stack, the story behind their excellent documentation, and how Supabase balances business goals with open-source values.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 00:30 Who is Paul Copplestone?
    • 01:17 Why ‘Supa’ and not ‘Super’?
    • 02:26 How did Supabase start?
    • 08:42 Simplicity in design.
    • 10:32 How do you take Supabase one step beyond the competition?
    • 12:35 How do you decide which libraries are officially supported vs community maintained?
      • 15:17 You don’t need a client library!
    • 16:48 Edge functions for server-side functionality.
    • 18:51 The genesis of pgvector.
    • 20:59 The product strategy.
    • 22:25 What’s the story behind Supabase’s awesome docs?
    • 25:26 The tech behind Supabase.
    • 35:46 How do you balance business goals with open source?
    • 42:01 What’s next for Supabase?
    • 44:15 Supabase’s GA + new features.
    • 48:24 Who runs the X account?
    • 50:39 Sick Picks + Shameless Plugs.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    CJ: X Instagram YouTube TwitchTV

    Randy: X Instagram YouTube Threads

    787: You Should Try Vue.js

    787: You Should Try Vue.js

    Scott and CJ dive deep into the world of Vue.js, exploring what makes this frontend framework unique and why it stands out from React and Svelte. CJ gives a comprehensive tour, covering everything from getting started to advanced features like state management and Vue’s built-in styles.

    Show Notes

    Vue.js: The Documentary.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    786: What Open Source license should you use?

    786: What Open Source license should you use?

    Scott and CJ dive into the world of open source, breaking down its meaning, benefits, and the various types of licenses you’ll encounter. From permissive licenses like MIT and Apache 2.0 to copy-left licenses such as GNU GPLv3, they’ll help you choose and apply the right license for your project.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    785: What’s Next for NextJS with Tim Neutkens

    785: What’s Next for NextJS with Tim Neutkens

    Scott and Wes dive into the world of Next.js with special guest Tim Neutkens from Vercel. They explore the latest updates, including the React Compiler and React Server Components, discussing their impact on developer workflows and the future of Next.js development.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 00:30 What does the React Compiler do?
    • 05:04 Will React Compiler help with managing Context?
    • 06:39 What happens if you’re not using a React Compiler?
    • 09:30 Will this work on any NextJS version?
    • 12:18 What are React Server Components?
    • 16:28 Shipping all the data inside an encapsulated component.
    • 20:17 Clearing up the frustrations around retrofitting server components.
    • 23:13 Handing migration.
    • 28:30 Is this just a fetch request with props?
    • 36:41 How closely are the NextJS and React teams working?
    • 41:53 Will we ever get Async Client Components?
    • 43:52 Async Local Storage API.
    • 45:31 Turbopack.
    • 57:51 Sick Picks & Shameless Plugs.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    784: Logging × Blogging × Testing × Freelancing

    784: Logging × Blogging × Testing × Freelancing

    In this Potluck episode, Scott and Wes tackle listener questions on modern blogging, website environmental impact, and using LangChain with LLMs. They also cover CSS hyphens, unit vs. integration testing, and balancing web development with new parenthood.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    783: How We Built a Netflix Style “Save for Offline” Feature Into Syntax

    783: How We Built a Netflix Style “Save for Offline” Feature Into Syntax

    Scott and Wes dive into the world of browser caching for audio files, exploring the File System API and the Cache API. They discuss size restrictions across different browsers, how tools like Riverside.fm leverage IndexedDB, and walk through code examples for creating, retrieving, and managing cached audio data.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    782: The Developer’s Guide To Fonts with Stephen Nixon

    782: The Developer’s Guide To Fonts with Stephen Nixon

    Scott and CJ are joined by Stephen Nixon of ArrowType to delve into the world of fonts and type for developers. They explore the intricacies of font creation, the utility of variable fonts, and offer tips for making visually appealing typography on the web.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    781: Potluck - The Value of TypeScript × Vue vs Svelte × Leetcode

    781: Potluck - The Value of TypeScript × Vue vs Svelte × Leetcode

    In this potluck episode of Syntax, Scott and CJ serve up a variety of community questions, from the nuances of beginner vs. advanced TypeScript to the pros and cons of SvelteKit. They also discuss falling out of love with React, shipping private packages via NPM, and the eternal struggle of always starting but never finishing projects.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    780: Cloud Storage: Bandwidth, Storage and BIG ZIPS

    780: Cloud Storage: Bandwidth, Storage and BIG ZIPS

    Today, Scott and Wes dive into cloud storage solutions—why you might need them, how they use them, and what you need to know about the big players, fees, and more.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    779: Why SQLite is Taking Over with Brian Holt & Marco Bambini

    779: Why SQLite is Taking Over with Brian Holt & Marco Bambini

    Scott and CJ dive into the world of SQLite Cloud with special guests Brian Holt and Marco Bambini. They explore why SQLite is gaining traction, its unique features, and the misconceptions surrounding its use—let’s get into it!

    Show Notes

    • 00:00 Welcome to Syntax!
    • 01:20 Who is Brian Holt?
    • 02:26 Who is Marco Bambini?
    • 05:12 Why are people starting to talk so much about SQLite now?
    • 08:47 What makes SQLite special or interesting?
    • 09:46 What is a big misconception about SQLite?
    • 11:13 Installed by default in operating systems.
    • 12:03 A perception that SQLite is intended for single users.
    • 13:36 Convincing developers it’s a full-featured solution.
    • 15:11 What does SQLite do better than Postgres or MySQL?
    • 17:30 SQLite Cloud & local first features.
    • 20:38 Where does SQLite store the offline information?
    • 23:08 Are you typically reaching for ORMs?
    • 25:00 What is SQLite Cloud?
    • 27:29 What makes for an approachable software?
    • 29:18 What make SQLite cloud different from other hosted SQLite options?
    • 32:13 Is SQLite still evolving?
    • 34:40 What about branching?
    • 37:37 What is the GA timeline?
    • 40:04 How does SQLite actually work?
    • 41:19 Questions about security.
    • 44:28 But does it scale?
    • 45:52 Sick Picks + Shameless Plugs.

    Sick Picks

    Brian: Trainer Road
    Marco: Tennis

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads