Logo
    Search

    Potluck — VSCode × Vercel vs Netlify × Models × Mutations × Multi-Vendor Platforms × Websites vs Web Apps × More!

    enMarch 10, 2021

    Podcast Summary

    • Visual Studio Code tips for TypeScript developersUse 'Peek', 'Go to Type Definition', and autocomplete to explore TypeScript object types in Visual Studio Code.

      When using TypeScript in Visual Studio Code, if you want to see the full type definition of an object variable instead of just the name of the type, there are a few ways to do so. One method is to use the "Peek" feature by hovering over the variable and pressing the keyboard shortcut to open a new editor with the definition. Another method is to use the "Go to Type Definition" feature by pressing the keyboard shortcut and it will take you directly to the file with the full type definition. Additionally, the speakers mentioned using the autocomplete feature by pressing control space to see the available fields and methods on that type. They also suggested remapping a key to "Go to Type Definition" for easier access. Overall, these methods can help developers have a better understanding of the structure and contents of complex types in their codebase.

    • Cheat sheets vs. code examples for learningFocus on understanding underlying patterns and best practices in codebase for effective and sustainable learning, rather than relying on crumpled cheat sheets.

      While some developers find cheat sheets helpful in remembering concepts, especially when moving between different projects or environments, others, like the hosts of the Syntax podcast, prefer to rely on well-written code examples and repositories as a more effective and sustainable learning tool. The hosts shared that they've tried using cheat sheets in the past but found that they often got crumpled, tea-stained, or forgotten. Instead, they recommended focusing on understanding the underlying patterns and best practices in the codebase of the specific environment or project, which can serve as a valuable reference and guide for future work. This approach not only provides a more comprehensive learning experience but also helps developers build a deeper understanding of the concepts and techniques used in their field.

    • The Importance of Effective Documentation and Note-taking for DevelopersDocumenting complex processes with comments and markdown files aids in understanding old projects. Link notes connect high-level concepts, and platforms like Netlify and Vercel offer unique features for hosting documentation.

      Effective documentation and note-taking are essential for developers when working with complex projects or learning new concepts. The speaker shares his personal experiences of returning to old projects and the importance of writing comments and creating markdown files to help remember intricate processes. He also discusses the use of link notes for high-level concepts and the benefits of various hosting platforms like Netlify and Vercel, each with their unique features and target audiences. Overall, the speaker emphasizes the significance of good documentation and effective note-taking to enhance productivity and streamline the development process.

    • Vercel vs Netlify: Choosing the Right Hosting Platform for Your ProjectConsider project requirements when choosing between Vercel for Next.js and Netlify for versatility, background functions, and cost-effective Node.js hosting.

      While Vercel and Netlify are both popular hosting platforms, they serve different purposes. Vercel is primarily known for hosting Next.js applications, as it offers seamless integration and optimal performance for this framework. Netlify, on the other hand, is a more versatile platform that can host a variety of front-end projects and even support serverless functions. However, it's essential to consider the specific needs of your project when choosing a hosting provider. For instance, if you're working with Next.js, Vercel is the go-to choice. But if you need features like background functions, Cron Jobs, or edge functions, then Netlify or Render might be better options. Additionally, it's important to note that Vercel no longer hosts traditional Node.js apps, while Render is a more cost-effective alternative to Heroku for hosting Node.js applications. Ultimately, the choice between Vercel and Netlify (or other hosting providers) depends on the unique requirements of your project. It's crucial to evaluate each platform's features, pricing, and compatibility with your tech stack before making a decision.

    • Automating repetitive tasks saves time and streamlines operationsUsing tools like FreshBooks for billing and invoice tracking can automate repetitive tasks, saving time and improving business efficiency. Consistently singular naming conventions for models help maintain clarity and efficiency in data management.

      Automating repetitive tasks, such as sending invoices and tracking expenses, can save time and streamline business operations. Wes shared his positive experience using FreshBooks for billing and invoice tracking, which automatically sends payment reminders and imports expenses from bank accounts or credit cards. Regarding the question about whether a model name should be singular or plural, the answer is that it should always be singular because a schema defines the structure of individual data pieces, such as a tutorial or a customer. However, relationships between models, such as one customer having many courses, will be pluralized. It's important to keep this consistent across the codebase and the database to avoid confusion. Additionally, Wes expressed a preference for maintaining control over these decisions rather than having tools automatically pluralize or singularize them. He emphasized the importance of clear communication and consistency in naming conventions to make working with data more efficient and effective.

    • Tools for web applications with CRUD and metadata queriesTools like Keystone, Prisma, and Strapi automate CRUD functions and metadata queries, saving time and effort for developers.

      When it comes to building web applications, using tools that provide CRUD (Create, Read, Update, Delete) operations and metadata queries can save time and effort. These tools, such as Keystone, Prisma, and Strapi, automatically generate CRUD functions and allow developers to easily query metadata, making database management more efficient. Another key difference between designing for websites and web applications is the complexity of the CSS. For websites, a more traditional approach to CSS, where the CSS is scoped to specific pages, can be faster and more appropriate. However, for web applications, a more componentized approach to CSS is often necessary due to the more complex markup and structure. Additionally, if the application is primarily designed for mobile use, mobile design systems and considerations come into play. Lastly, the podcast "Syntax" is a favorite for many developers, including Andy Martusich, who enjoys listening to it while doing the dishes. The podcast makes the chore of dishwashing more enjoyable and keeps the kitchen clean.

    • Adaptive vs Responsive DesignAdaptive design serves specific screen sizes, while responsive design adjusts to all screen sizes. Adaptive design is older and can reduce load times, but responsive design is more versatile and generally preferred.

      Adaptive design and responsive design serve different purposes in web development. Adaptive design, which involves the server sensing the device and serving up specific CSS for that device's dimensions, is an older approach that has largely been replaced by responsive design. In most cases, it makes more sense to make your application responsive, allowing it to adjust to different screen sizes. However, there are specific use cases where adaptive design might be more appropriate, such as when the mobile and desktop versions of an app are significantly different. The development process for adaptive design involves segmenting CSS based on specific screen dimensions and serving those only when needed, reducing load times. However, the consensus is that responsive design is generally the better choice for modern web development.

    • Managing User Registration and Fraud Prevention in a Multi-Vendor PlatformCreating a multi-vendor platform involves managing user registration and fraud prevention. Attract users with clear policies and procedures, use reliable payment processors, and minimize risks with cautious execution.

      Building a multi-vendor platform involves managing both user registration and fraud prevention. Scott and Wes discussed their experiences and shared insights into the challenges of creating a marketplace where users can buy and sell items. They emphasized the importance of attracting users to the platform and cautioned about the risks of fraud, which can come from either side. As a developer, Morgan asked about the best options for payment transactions and recommended frameworks for building a multi-vendor platform using React, Next, Mongo, Arango, or Google Firebase. Scott and Wes advised being cautious about managing fraud and emphasized the importance of having clear policies and procedures in place to handle disputes. They also recommended using reliable payment processors like Stripe or PayPal to minimize risks. Overall, creating a multi-vendor platform requires careful planning and execution to ensure a positive user experience and minimize potential risks.

    • E-commerce and GraphQL: Complexities and Trade-offsSelling digital products or designs in e-commerce involves dealing with complexities like copyright infringement and tax regulations. GraphQL simplifies data fetching but handling mutations requires careful validation and error handling.

      Navigating the world of e-commerce, especially when it comes to selling digital products or designs, can be a complex and potentially risky endeavor. For instance, there are companies that use bots to steal artwork from social media and sell it as merchandise without permission. When it comes to payments, platforms like Stripe and PayPal are popular choices, but handling taxes and regulatory issues in various regions can be a challenge. A third-party platform like Gumroad might be a better option for some sellers as they handle these complexities. Regarding GraphQL, while fetching data is straightforward, mutations can be more complex. There is no one-size-fits-all solution for handling mutations, and best practices are not well-documented. Input validation is crucial, and it should be done both in the HTML form and in the GraphQL schema. The approach to handling mutations, whether sending the entire object or just the changes, also depends on the specific use case. Relations can be managed in a giant mutation or in separate ones. The validation of inputs and the handling of errors should be carefully considered and implemented. Overall, there are many decisions to make when working with GraphQL, and it's essential to understand the trade-offs and complexities involved.

    • Handling partial data in GraphQLSend entire dataset for creating, updated fields for updating, and understand relationship capabilities in specific GraphQL frameworks.

      When working with GraphQL, handling partial data can be challenging, leading to unexpected results or the need to send back the full amount of data. The speaker recommends breaking down data handling into create, update, and delete operations. For creating data, it's best to send the entire dataset, while updating only sends the updated fields. When dealing with relationships, it's essential to understand the capabilities of the specific GraphQL framework being used. For instance, some frameworks offer an "Upsert" feature for updating or inserting data if it doesn't exist. The speaker also discusses their experience with managing relationships in GraphQL, emphasizing the importance of handling each relationship separately when updating and creating them together when creating new data. The speaker expresses envy towards the use of tools like Prisma, which can simplify the process of managing databases and relationships in GraphQL. The future of Svelte is promising, with the development of SvelteKit, which uses Snowpack and offers server-side components and server-side rendering capabilities. The speaker is excited about this project and believes it will be a significant improvement for Svelte.

    • Exciting Developer Experience with SvelteKitSvelteKit's fantastic developer experience and strong server-side rendering capabilities could make it a standout tool. Focus on learning stable projects and start building to improve skills. Check out Vonage's developer APIs for easy app development.

      Having a great developer experience is crucial for the success of a modern framework like Svelte. The speaker expresses excitement about SvelteKit due to his positive experience with Snowpack and the ease of writing Svelte code. He believes that a fantastic developer experience combined with strong server-side rendering capabilities could make Svelte a standout tool in the future. Regarding learning new things, the speaker suggests focusing on stable and well-developed projects and simply starting to build and code to get better. The speaker also mentions Vonage and their developer APIs for SMS, messaging, video, and phone numbers, which can help developers build applications with ease.

    • Applying new skills to your own projectsActively apply new skills to your own projects instead of just following along with tutorials. Consider using alternative tools and libraries, like MJML, for more efficient and effective development.

      While following tutorials can be helpful, the best way to truly learn and apply new skills is by applying them to your own projects. This was emphasized in a recent Cypress tutorial series, where the speaker encouraged learners to use their own websites instead of the provided starter app. This approach allows learners to encounter and solve problems, leading to a deeper understanding of the concepts. Another topic discussed was the use of handlebars templates for generating HTML, specifically for newsletters. The speaker shared their personal experience of using handlebars and recommended MJML, a HTML rendering and generation library for React, as an alternative. MJML offers several advantages, including saving time by generating emails using React, and providing templates for easier email creation. In conclusion, the key takeaway is to actively apply new skills to your own projects and not just follow along with tutorials. Additionally, consider exploring alternative tools and libraries, like MJML, to make development more efficient and effective.

    • Custom email layout design for clientsDevelopers appreciate the custom email layout design feature offered by Unlayer, emphasizing its importance and diversity in the development world. High-quality, long-lasting items are preferred by developers, as seen in Wes's recommendation of Carhartt insulated waterproof gloves.

      During the latest Syntax podcast episode, the topic of custom email layout design for clients was discussed. Impressively, this feature was new to the speakers, and they expressed their admiration for it, especially from Unlayer. The speakers also shared their experiences working on various types of projects, emphasizing the diversity and complexity in the developer world. In the "sick picks" segment, Wes shared his recommendation for Carhartt insulated waterproof gloves, praising their excellent insulation, durability, and practical features like a nose wipe. He also shared his preference for buying high-quality items that last a lifetime. Overall, the episode provided valuable insights into the experiences and preferences of developers, making it an enjoyable and informative listen.

    • Discovering a Favorite Face CleanserThe speaker shares their experience of finding an effective enzyme powder wash for their skin and promotes their advanced React and Cypress courses with discount codes.

      The speaker, who has struggled with skin issues in the past, has discovered a favorite face cleanser in the form of an enzyme powder wash. This product, which is part of a larger Korean skincare routine, has impressed the speaker with its effectiveness and has led them to stock up on multiple bottles. Additionally, the speaker took the opportunity to promote their advanced React course, available at advancedreact.com, and their Cypress course, available at leveluptutorials.com, with discount codes for listeners. Overall, the speaker shared their personal experience with a favorite product and promoted their expertise in technology education.

    Recent Episodes from Syntax - Tasty Web Development Treats

    790: State of JS 2023 Reactions

    790: State of JS 2023 Reactions

    Scott and Wes dive into the 2023 State of JavaScript survey, breaking down the latest trends and pain points in front-end frameworks, build tools, and JavaScript runtimes. Tune in for their hot takes and insights on what’s shaping the JavaScript landscape this year!

    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

    789: Do More With AI - LLMs With Big Token Counts

    789: Do More With AI - LLMs With Big Token Counts

    Join Scott and CJ as they dive into the fascinating world of AI, exploring topics from LLM token sizes and context windows to understanding input length. They discuss practical use cases and share insights on how web developers can leverage larger token counts to maximize the potential of AI and LLMs.

    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

    CJ: X Instagram YouTube TwitchTV

    Randy: X Instagram YouTube Threads

    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

    Related Episodes

    Dokumentacja w projekcie - Software Engineering at Google

    Dokumentacja w projekcie - Software Engineering at Google
    Wracamy z kolejnym odcinkiem, gdzie analizujemy temat z książki Software Engineering at Google. Tym razem bierzemy na tapet dokumentację w projekcie.

    Dyskutujemy:

    - czy rzeczywiście dokumentacja to pierwsza potrzeba w projekcie?
    - kiedy potrzebujemy dokumentacji?
    - kto powinien być odpowiedzialny za jej utrzymywanie?
    - jakie projekty szczególnie potrzebują dokumentacji?
    - jakie korzyści ma tworzenie dokumentacji?
    - czy możemy zmierzyć ROI z dokmentacji?

    Na te i wiele innych pytań staramy się odpowiedzieć w tym odcinku. Zapraszam do wysłuchania rozmowy na Spotify, Apple Podcasts, Google Podcasts i https://poprostujs.pl

    SSR, SEO, Tips for Students, music, security and GraphQL

    SSR, SEO, Tips for Students, music, security and GraphQL

    It’s a Potluck episode - you bring the questions and we turn them into tasty treats.

    Freshbooks - Sponsor

    Get a 30 day free trial of Freshbooks at freshbooks.com/syntax and put SYNTAX in the “How did you hear about us?” section.

    Coffeecup’s CSS Grid Builder Tool

    Check out Coffeecup’s CSS Grid.cc builder tool and resources to learn, prototype and build next gen layouts with CSS Grid!

    Show Notes

    2:15

    • What’s the best resource for staying up to date with Javascript?

    3:48

    • How do you stay motivated if you don’t like your current project?

    7:08

    • What’s your favorite music to work to?

    11:10

    • In what order should developers learn tools related to GraphQL?

    13:48

    • As a JS developer, is it a good idea to learn other languages like PHP or Python?

    19:55

    • As a CS undergrad, what can you do in terms of programming that could be a great benefit after graduation?

    23:14

    • Should you be concerned about SEO when using JS frameworks like React?

    28:17

    • How can you build your network when you’re too tired or busy to go to a bunch of meetups?

    32:55

    • How do you come up with such good designs and UI for your courses?

    36:37

    • As more websites move to secure connections, where can a noob learn the basics of https, SSL certificates, how to deploy a secure website, etc.?

    43:05

    • Have you had experience working for large companies and how does it compare to smaller companies and/or freelancing?

    47:30

    • What are other programming podcasts you listen to?

    ××× SIIIIICK ××× PIIIICKS ×××

    Shameless Plugs

    Tweet us your tasty treats!

    Rust for JavaScript Developers - Node vs Rust Concepts

    Rust for JavaScript Developers - Node vs Rust Concepts

    In this Hasty Treat, Scott and Wes talk about Rust, and how the concepts might translate for JavaScript developers looking to try writing in Rust.

    Show Notes

    Tweet us your tasty treats

    Using GraphQL queries in Remix loader functions

    Using GraphQL queries in Remix loader functions

    Hey Kent! We've been using Hasura to generate CRUD APIs for our small team. Our existing web applications are all using Next.js, and consume the GraphQL API via Apollo Client and TypeScript hooks generated from the remote schema using graphql-code-generator. This workflow has saved us a lot of time, particularly in API development, and I love the generated type-safe hooks. After watching your new Remix content, we're very excited to try Remix as an alternative to Next, mostly to leverage the performance benefits and the effortless error boundaries within nested routes. Do you have some best practices for utilizing GraphQL queries in Remix loader functions? It would be great for us to continue to take advantage of code generation, if possible. Thank you so much!

    Links:

    How to Implement Authentication in Your BFF Architecture in Minutes

    How to Implement Authentication in Your BFF Architecture in Minutes

    This story was originally published on HackerNoon at: https://hackernoon.com/how-to-implement-authentication-in-your-bff-architecture-in-minutes.
    In the web development field, auth (authentication + authorization) plays a vital role in securing user access and protecting sensitive data.
    Check more stories related to cybersecurity at: https://hackernoon.com/c/cybersecurity. You can also check exclusive content about #authentication, #clerk, #programming, #web-development, #typescript, #webdev, #graphql, #frontend-development, and more.

    This story was written by: @wunderstef. Learn more about this writer by checking @wunderstef's about page, and for more stories, please visit hackernoon.com.

    Auth (authentication + authorization) plays a vital role in securing user access and protecting sensitive data. Implementing auth solely in the frontend is easy, but is usually a terrible idea. Even when done in the backend, it can have its drawbacks. This article explores these limitations and presents a compelling third alternative: the Backends-for-Frontends pattern.