{"id":15382,"date":"2023-09-13T05:00:17","date_gmt":"2023-09-13T12:00:17","guid":{"rendered":"https:\/\/softwareengineeringdaily.com\/?p=15382"},"modified":"2023-09-14T02:44:05","modified_gmt":"2023-09-14T09:44:05","slug":"time-for-backend-architectures-to-react","status":"publish","type":"post","link":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/","title":{"rendered":"Time for backend architectures to\u2026React"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Since its release by Facebook in 2013, React has etched itself into the canvas of web development. Fast-forward a decade, and it&#8217;s no exaggeration to say that React has become the most popular web framework, globally. The majority of the world\u2019s web apps now have a consistent and composable approach for managing state in which the apps react to state changes by re-executing a declarative render tree of pure components.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The evidence of React&#8217;s dominance can be seen in StackOverflow trends but also in the vibrance and growth of its ecosystem. Although it is now over 10 years old, it shows no signs of relinquishing its dominance in the frontend development space.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">While the core principles of React have been adapted widely within the frontend world, not every backend solution aiming to support a reactive application is built with reactivity in mind. As a result, developers have to often use state management tools and techniques to bridge the gap between the two. Within this article, we will have a look at different methods of how React applications can manage their state when working with a non-reactive backend. Also, we will review several serverless backend platforms that allow developers to build web applications that are scalable, reactive, and real-time.<\/span><\/p>\n<h3><b>Choosing the Stack<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Developing a new web application is a process that involves a series of critical decisions. The developer might begin by defining the features of the application, deciding how to structure the frontend code, and choosing the toolkit to style the UI elements.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">While this may seem like a substantial part of the process, an essential decision still awaits &#8211; choosing a method for the application to communicate with the backend and store its internal state. React itself doesn&#8217;t dictate this aspect, leaving the developer with the freedom to choose the most suitable approach depending on the type of backend that the application has to deal with.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">One option, naive but illustrative, might be to use the built-in fetch API to request the data and store it within the component&#8217;s state. Whenever the data is refreshed, the component will render again. This straightforward method carries a notable drawback as the data won&#8217;t be shared between different components. Moving one step forward from this solution, a developer could choose to use React Context which is a popular approach to managing a React&#8217;s application state. It comes out of the box with React and can be easily coupled with the useState hook to facilitate sharing data between different components. Nevertheless, the React Context solution doesn&#8217;t always scale well for large, complex applications. In such situations, developers often turn to a state management package like Redux or MobX.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">State management tools can provide a &#8220;bridge&#8221; between a non-reactive backend and a React.js front-end. To illustrate that, let&#8217;s take an application built with React, Redux and a REST API as an example. Architecting an app that uses Redux as a state management involves organizing it into 3 separate parts &#8211; the state, the view and actions. The data flow between those is one-directional. A user might trigger an action within the UI which fetches data from a backend API. The received data ends up in a reactive state. The state then notifies the view about the changes and it is up to the view to decide about what to render. The data received is kept in the local memory until refreshed again.<\/span><\/p>\n<h3><b>Navigating the Challenges of Cache Management<\/b><i><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/i><\/h3>\n<p><span style=\"font-weight: 400;\">As mentioned in the above example, the application might keep a copy of the data received from the backend to be able to serve it to the user faster and to eliminate the need to send another network request. In computing science, this concept is called a <\/span><i><span style=\"font-weight: 400;\">cache<\/span><\/i><span style=\"font-weight: 400;\"> &#8211; a small memory store that keeps frequently used information readily available. In the example, the cache is Redux&#8217;s state.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Keeping a copy of the data locally, while handy, creates a potential for new issues to emerge. Now, the system needs to determine whether the cached data is current &#8211; should we keep it, remove it, or render it in the UI immediately? Rendering data that is readily available in cache but potentially not current can lead to confusion on the user side. On the other hand, fetching it again each time will lead to potential delays and give ground to a poor user experience.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A first and most intuitive solution to resolve this problem might be to associate a maximum age (max-age) value with each piece of data that we store locally. Once the max-age limit is exceeded, the system would fetch the data again. However, determining an appropriate max-age can prove challenging, and sometimes, depending on the data&#8217;s nature, it might be impossible.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Here&#8217;s where the concept of<\/span><i><span style=\"font-weight: 400;\"> Stale-While-Revalidate<\/span><\/i><span style=\"font-weight: 400;\"> (SWR) comes to the rescue. In practice, SWR first returns the locally cached data to be rendered while simultaneously revalidating the data in the background. If the data has indeed changed, the UI is then rendered again. This technique ensures that the cached data remains both immediate and fresh. Note that SWR doesn&#8217;t concern itself with how requests are made &#8211; it&#8217;s merely a strategy of storing and updating the data.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Two popular libraries that currently support SWR are <\/span><i><span style=\"font-weight: 400;\">React Query<\/span><\/i><span style=\"font-weight: 400;\"> and <\/span><i><span style=\"font-weight: 400;\">SWR<\/span><\/i><span style=\"font-weight: 400;\"> (developed by the same team that made Next.js). Both come packed with valuable features, such as caching, deduping multiple requests into a single one, memoizing query results, and a host of performance optimizations. Along with other solutions like swrv and Apollo, they present a comprehensive solution aiming to bridge the gap between a web application&#8217;s front-end and back-end.<\/span><\/p>\n<h3><b>The Rise of Serverless Backend Platforms<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">The space of serverless backends is growing rapidly due to developer&#8217;s demand. One could argue that as a developer building an application, the main goal is to deliver a high-quality product that solves a problem. This raises a question &#8211; do users really care what runs the app on the backend, or do they care more about the utility and frontend experience?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Offloading the challenge of building a backend to a serverless platform can make development faster and more efficient. Both established and upcoming modern backend platforms can provide not only a database &#8211; they&#8217;re often full-suite of products that can handle the most common application needs from user authentication to data analytics.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The most well known example would be Firebase &#8211; an app development platform founded in 2012 which is now part of Google. Firebase provides real-time databases, document store (Firestore), authentication and a variety of tools that are useful for development of web and mobile applications.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Google is not the only provider in this market. Some of the most popular databases are also available in a serverless fashion. Those include MongoDB (Atlas Serverless), MySQL (PlanetScale), PostgresQL (AWS Aurora) and Redis (Uptash).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">While the space has a lot of established players, it&#8217;s still developing rapidly. Many new innovative startups, like Supabase or Convex are entering to bring new functionality, improved developer experience as well as various functionalities that allow developers to do more in less time.<\/span><\/p>\n<h3><b>Convex: A perfect Real-time Backend companion for a Reactive App in 2023<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Convex is a full-stack, real-time development platform using 100% TypeScript that has been built with modern reactive UI frameworks like React in mind. The team behind Convex has built and maintained some of the most popular apps, backends and exabyte-scale storage projects at companies like Dropbox and Google. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">At the core of Convex lies Reactor &#8211; an innovative database that can be accessed with TypeScript cloud functions as its interface. It tracks all dependencies for every query function and whenever any of them updates, Convex reruns the query and notifies any active subscription about the changes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The above mentioned data is stored not only on the server side. Earlier in the article, we looked at the challenges of managing cache in frontend applications and how much additional work has to be done by developers to ensure that the fresh data is rendered without too much delay.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Querying data in Convex has two awesome attributes that resolve it &#8211; <\/span><i><span style=\"font-weight: 400;\">caching<\/span><\/i><span style=\"font-weight: 400;\"> and <\/span><i><span style=\"font-weight: 400;\">reactivity<\/span><\/i><span style=\"font-weight: 400;\">. Clients of the application can subscribe to queries and receive new results whenever the underlying data changes. As the client is notified immediately, the cache can be updated at the <\/span><span style=\"font-weight: 400;\">exact right spot in time when it needs to be. It&#8217;s like having an always ready state that is automatically managed and ensures immediate and fresh data availability, thereby significantly enhancing user experience and development efficiency.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Unlike Firebase, Convex uses relational data models to store application&#8217;s data while keeping the flexibility to store documents in semi-structured JSON files. The database is 100% ACID compliant and data is accessed through TypeScript backend functions which eliminates the need to write complicated and tedious security rules.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Convex provides a generous free quota for developers who want to try it out for their next project. Get started with Convex <a href=\"https:\/\/www.convex.dev\/\">here<\/a>.<\/span><\/p>\n<h3><b>Closing words<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">While the landscape of web development continually shifts and evolves, it\u2019s clear that React\u2019s ethos of reactivity has penetrated deeper than the frontend. The technologies supporting web applications are steadily advancing towards providing full-stack solutions that are efficient and intuitive. This helps developers save time and to focus on the main challenge they have &#8211; building great applications. New platforms like Convex are pioneering this movement, offering a seamless developer experience that aligns the backend&#8217;s reactivity with React&#8217;s principles.<\/span><\/p>\n<p><i data-stringify-type=\"italic\">Full disclosure: Convex is a sponsor of Software Engineering Daily.<\/i><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since its release by Facebook in 2013, React has etched itself into the canvas of web development. Fast-forward a decade, and it&#8217;s no exaggeration to say that React has become the most popular web framework, globally. The majority of the world\u2019s web apps now have a consistent and composable approach for managing state in which<\/p>\n","protected":false},"author":93,"featured_media":15503,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[1363,83,2143],"tags":[],"class_list":["post-15382","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all-episodes","category-articles","category-exclusive-content"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Time for backend architectures to\u2026React - Software Engineering Daily<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Time for backend architectures to\u2026React - Software Engineering Daily\" \/>\n<meta property=\"og:description\" content=\"Since its release by Facebook in 2013, React has etched itself into the canvas of web development. Fast-forward a decade, and it&#8217;s no exaggeration to say that React has become the most popular web framework, globally. The majority of the world\u2019s web apps now have a consistent and composable approach for managing state in which\" \/>\n<meta property=\"og:url\" content=\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/\" \/>\n<meta property=\"og:site_name\" content=\"Software Engineering Daily\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-13T12:00:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-14T09:44:05+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1218\" \/>\n\t<meta property=\"og:image:height\" content=\"646\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Pawe\u0142 Borkowski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@software_daily\" \/>\n<meta name=\"twitter:site\" content=\"@software_daily\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pawe\u0142 Borkowski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/\"},\"author\":{\"name\":\"Pawe\u0142 Borkowski\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e8e3833b2233075632f49316da820299\"},\"headline\":\"Time for backend architectures to\u2026React\",\"datePublished\":\"2023-09-13T12:00:17+00:00\",\"dateModified\":\"2023-09-14T09:44:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/\"},\"wordCount\":1602,\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png?fit=1218%2C646&ssl=1\",\"articleSection\":[\"All Content\",\"Exclusive Articles\",\"Exclusive Content\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/\",\"url\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/\",\"name\":\"Time for backend architectures to\u2026React - Software Engineering Daily\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png?fit=1218%2C646&ssl=1\",\"datePublished\":\"2023-09-13T12:00:17+00:00\",\"dateModified\":\"2023-09-14T09:44:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png?fit=1218%2C646&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png?fit=1218%2C646&ssl=1\",\"width\":1218,\"height\":646},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/softwareengineeringdaily.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Time for backend architectures to\u2026React\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"name\":\"Software Engineering Daily\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\",\"name\":\"Software Engineering Daily\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"width\":549,\"height\":169,\"caption\":\"Software Engineering Daily\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/software_daily\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e8e3833b2233075632f49316da820299\",\"name\":\"Pawe\u0142 Borkowski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc0d5ed944805c9a0cc3eec2ebc4b651?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc0d5ed944805c9a0cc3eec2ebc4b651?s=96&d=retro&r=pg\",\"caption\":\"Pawe\u0142 Borkowski\"},\"sameAs\":[\"https:\/\/pawel.io\/\"],\"url\":\"https:\/\/softwareengineeringdaily.com\/author\/pawel\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Time for backend architectures to\u2026React - Software Engineering Daily","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/","og_locale":"en_US","og_type":"article","og_title":"Time for backend architectures to\u2026React - Software Engineering Daily","og_description":"Since its release by Facebook in 2013, React has etched itself into the canvas of web development. Fast-forward a decade, and it&#8217;s no exaggeration to say that React has become the most popular web framework, globally. The majority of the world\u2019s web apps now have a consistent and composable approach for managing state in which","og_url":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/","og_site_name":"Software Engineering Daily","article_published_time":"2023-09-13T12:00:17+00:00","article_modified_time":"2023-09-14T09:44:05+00:00","og_image":[{"width":1218,"height":646,"url":"http:\/\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png","type":"image\/png"}],"author":"Pawe\u0142 Borkowski","twitter_card":"summary_large_image","twitter_creator":"@software_daily","twitter_site":"@software_daily","twitter_misc":{"Written by":"Pawe\u0142 Borkowski","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#article","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/"},"author":{"name":"Pawe\u0142 Borkowski","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e8e3833b2233075632f49316da820299"},"headline":"Time for backend architectures to\u2026React","datePublished":"2023-09-13T12:00:17+00:00","dateModified":"2023-09-14T09:44:05+00:00","mainEntityOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/"},"wordCount":1602,"publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png?fit=1218%2C646&ssl=1","articleSection":["All Content","Exclusive Articles","Exclusive Content"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/","url":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/","name":"Time for backend architectures to\u2026React - Software Engineering Daily","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#primaryimage"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png?fit=1218%2C646&ssl=1","datePublished":"2023-09-13T12:00:17+00:00","dateModified":"2023-09-14T09:44:05+00:00","breadcrumb":{"@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#primaryimage","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png?fit=1218%2C646&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png?fit=1218%2C646&ssl=1","width":1218,"height":646},{"@type":"BreadcrumbList","@id":"https:\/\/softwareengineeringdaily.com\/2023\/09\/13\/time-for-backend-architectures-to-react\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/softwareengineeringdaily.com\/"},{"@type":"ListItem","position":2,"name":"Time for backend architectures to\u2026React"}]},{"@type":"WebSite","@id":"https:\/\/softwareengineeringdaily.com\/#website","url":"https:\/\/softwareengineeringdaily.com\/","name":"Software Engineering Daily","description":"","publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/softwareengineeringdaily.com\/#organization","name":"Software Engineering Daily","url":"https:\/\/softwareengineeringdaily.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","width":549,"height":169,"caption":"Software Engineering Daily"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/software_daily"]},{"@type":"Person","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/e8e3833b2233075632f49316da820299","name":"Pawe\u0142 Borkowski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/bc0d5ed944805c9a0cc3eec2ebc4b651?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc0d5ed944805c9a0cc3eec2ebc4b651?s=96&d=retro&r=pg","caption":"Pawe\u0142 Borkowski"},"sameAs":["https:\/\/pawel.io\/"],"url":"https:\/\/softwareengineeringdaily.com\/author\/pawel\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2023\/09\/convex_image.png?fit=1218%2C646&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p7GuoD-406","_links":{"self":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/15382"}],"collection":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/users\/93"}],"replies":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/comments?post=15382"}],"version-history":[{"count":0,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/15382\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media\/15503"}],"wp:attachment":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media?parent=15382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/categories?post=15382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/tags?post=15382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}