{"id":90811,"date":"2024-09-30T12:23:06","date_gmt":"2024-09-30T04:23:06","guid":{"rendered":"https:\/\/version-2.com\/?p=90811"},"modified":"2024-09-19T12:25:43","modified_gmt":"2024-09-19T04:25:43","slug":"backend-driven-ui-fast-a-b-testing-and-unified-clients","status":"publish","type":"post","link":"https:\/\/version-2.com\/en\/2024\/09\/backend-driven-ui-fast-a-b-testing-and-unified-clients\/","title":{"rendered":"Backend-driven UI: Fast A\/B testing and unified clients"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"90811\" class=\"elementor elementor-90811\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-35fe5dd post-content elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"35fe5dd\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;cef08c3&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-409a2e9a\" data-id=\"409a2e9a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2493f1c elementor-widget elementor-widget-text-editor\" data-id=\"2493f1c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"max-w-post-content\"><div class=\"block md:hidden\"><div><div class=\"hidden md:block TableOfContents_tocDesktop__9_aoA\">Backend-driven UI is a fresh approach to user interface development that hasn\u2019t gotten much attention in UI design circles. The reasons for that include high upfront costs and the dominance of frontend-driven setups. However, there\u2019s much more to the story.<\/div><\/div><\/div><p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/09\/featured-image.png\" width=\"1200\" height=\"675\" \/><\/p><div class=\"style_postContent__uJLGT text-black break-words\" data-content-type-blog=\"true\"><div class=\"Article_wrapper__YyQ2_\"><p class=\"text-base leading-normal\">As a Senior Frontend Engineer at <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/nordlayer.com\/\"><u>NordLayer<\/u><\/a>, I recently dove into BDUI to see what makes it stand out. In this article, I\u2019ll break down where UI development is now and how adding more server-side power could improve the usual frontend-focused methods.<\/p><h2 id=\"Frontend-only UI development\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>Frontend-only UI development<\/b><\/h2><p class=\"text-base leading-normal\">Imagine a simple UI feature, like the banner at the top of a page. How does our team create this banner? Let\u2019s take a look at the 6-step development lifecycle for a single feature.\u00a0<noscript><\/noscript><\/p><p><img decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/09\/body-image-1\" width=\"1200\" height=\"675\" \/><\/p><div class=\"my-64 text-center\"><p class=\"text-nano leading-normal text-left text-center text-gray-600 my-8\">A basic development cycle for a UI feature.<\/p><\/div><p class=\"text-base leading-normal\">Development starts with <b>requirement gathering<\/b>, where the product owner (PO) outlines the desired functionality of the UI element. In this case, we want it to display a static message. So we <b>design<\/b> the banner, and as it\u2019s a frontend-only feature, we may skip <b>backend development<\/b> and go straight into <b>frontend development<\/b>, then <b>testing<\/b>. After that, there\u2019s only one step left \u2013 <b>deployment<\/b>. That\u2019s it \u2013 the job\u2019s done\u2026<\/p><p class=\"text-base leading-normal\">\u2026 or is it?<\/p><h2 id=\"Emphasizing the backend\u2019s role\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>Emphasizing the backend\u2019s role<\/b><\/h2><p class=\"text-base leading-normal\">Let\u2019s say this whole process takes a week, depending on your setup. But features don\u2019t simply stay the same indefinitely \u2013 we iterate upon them.<\/p><p class=\"text-base leading-normal\">For example, we\u2019d like to show a different message for the second iteration. However, realizing that the message will change a lot, we\u2019d move its management to the backend. To ensure a smooth integration between departments, the backend engineers build an API and provide it to the frontend team. After testing and deployment, everything\u2019s ready to go.<\/p><p class=\"text-base leading-normal\">Let\u2019s iterate further. Now we want to deliver tailored messages to different user segments, as part of an A\/B testing strategy. The beautiful part? No more frontend changes required! The frontend&#8217;s role now is simply to call the backend to retrieve the display message. Our UI approach is now effectively &#8216;backend-driven,&#8217; enabling faster iterations and more flexible content management and delivery.<\/p><h2 id=\"The goal of backend-driven UI\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>The goal of backend-driven UI<\/b><\/h2><p class=\"text-base leading-normal\">Simply stated, backend-driven UI aims to <b>make user interfaces a function of state.<\/b><\/p><p class=\"text-base leading-normal\">Spotify expressed BDUI as <b>UI = fn(state) <\/b>in one of its early talks on the subject. This distills the idea beautifully. What we\u2019re trying to achieve here is making the interface depend entirely on the state provided to it. Imagine a webpage structured using JSON data objects, which in our case, become the <b>state<\/b>. Each object represents a component on the frontend client.\u00a0<noscript><\/noscript><\/p><p><img decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/09\/body-image-2\" width=\"1200\" height=\"675\" \/><\/p><div class=\"my-64 text-center\"><p class=\"text-nano leading-normal text-left text-center text-gray-600 my-8\">A mobile UI defined by JSON components.<\/p><\/div><h2 id=\"The benefits of backend-driven UI\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>The benefits of backend-driven UI<\/b><\/h2><ul class=\"list-disc ml-24\"><li class=\"ml-20\"><div><p class=\"text-base leading-normal\"><b>Redesigning our interface<\/b> becomes streamlined: This can be achieved by simply changing the order of our objects. We can also add components without any frontend redeployment.<\/p><\/div><\/li><\/ul><ul class=\"list-disc ml-24\"><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Backend-driven UI allows us to <b>unify our client approach<\/b> because this state can be used to populate any client, whether it\u2019s mobile, desktop, or otherwise. This way, users get new features at the same time, regardless of what client they\u2019re using. In terms of development, this helps developers across various teams follow a similar workflow.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\"><b>Easier A\/B testing<\/b>. All we need to focus on is how to deliver different states based on user feedback, and with that, we can get really flexible when conceptualizing and experimenting with new UIs.<\/p><\/div><\/li><\/ul><h2 id=\"The cons of backend-driven UI\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>The cons of backend-driven UI<\/b><\/h2><h3 class=\"text-h3 leading-tight text-left\"><b>Uneven developer distribution<\/b><\/h3><p class=\"text-base leading-normal\">As mentioned before, every useful software development approach will have downsides. Implementing backend-driven UI means migrating all logic from the frontend. Naturally, this will result in higher workloads for backend developers. Keeping that in mind, does the usual developer distribution change when using this approach? Generally, yes, but this ultimately depends on the product\/app\/service you\u2019re building. Some are already more backend-heavy than others.<\/p><p class=\"text-base leading-normal\">Workload will vary depending on the stage of implementation. When starting with backend-driven UI, designing the architecture, agreeing on the contract, and executing the switch is heavily dependent on all engineers. Questions mostly arise when the migration is complete. From then on, backenders will have bigger workloads.<\/p><h3 class=\"text-h3 leading-tight text-left\"><b>High cost<\/b><\/h3><p class=\"text-base leading-normal\">The upfront cost of introducing backend-driven UI can be significant. When making a UI reliant only on the state provided to it, the implementation can quickly become overcomplicated. This impacts the pace of development. It\u2019s not an easy task, but we\u2019re trading high upfront costs for being faster and more flexible in the future.<\/p><p class=\"text-base leading-normal\">You should first consider whether this approach is even useful for your specific business. Spotify popularized this approach because it wanted the ability to experiment fast and flexibly with novel UI features. But if you\u2019re building an admin panel, does it need to be backend-driven? Will the interface change a lot, or will you be conducting A\/B tests for the users? Implementing BDUI should align with your tech setup and business goals.<\/p><h2 id=\"Sanity check: Is BDUI for you?\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>Sanity check: Is BDUI for you?<\/b><\/h2><p class=\"text-base leading-normal\">With the pros and cons in mind, let\u2019s address some common questions:<\/p><h3 class=\"text-h3 leading-tight text-left\"><b>How much should you commit initially?<\/b><\/h3><p class=\"text-base leading-normal\">Backend-driven UI doesn\u2019t need to replace the entire system. You can also take a modular approach when determining viability. As an example, you can identify specific parts of the application that you could make backend-driven. The banner example that we discussed above could be something to start with. If that works, try it out on a more challenging feature like a table or carousel.<\/p><h3 class=\"text-h3 leading-tight text-left\"><b>Are we inventing HTML again?<\/b><\/h3><p class=\"text-base leading-normal\">Avoid being too detailed. Taking a simple feature like a text box, we could go overboard and start thinking about allowing different text colors, size changes, or other modifications\u2026\u00a0 But then we\u2019d come dangerously close to CSS and HTML, which is certainly not the goal! Remember: Enable backend-driven UI using general components, not detailed blocks.<\/p><h3 class=\"text-h3 leading-tight text-left\"><b>Do we have the foundation to implement a backend-driven UI?<\/b><\/h3><p class=\"text-base leading-normal\">Do you have a design system? As we said above, being too detailed will cause problems. With a design system in place, we have a very clear direction on where to go. Development becomes very logical as long as our frontend can handle our designed components. Everyone uses the same components to describe UIs: Whether you\u2019re a mobile developer, frontender, or designer, we all speak the same language. A button means the same component across different contexts.<\/p><h2 id=\"Big Tech and backend-driven UI\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\">Big Tech and backend-driven UI<\/h2><p class=\"text-base leading-normal\">Most of this article&#8217;s content is based on findings from Lyft, Spotify, Airbnb, and others. These are huge companies with the resources to make backend-driven UI a reality.<\/p><p class=\"text-base leading-normal\">And even though BDUI can be a pricy upfront investment that requires developer redistribution, its long-term benefits \u2013 including flexibility and faster adaptation to user feedback \u2013 are a huge upside for many teams, products, and apps.<\/p><p class=\"text-base leading-normal\"><a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/nordsecurity.com\/blog\/category\/engineering\" target=\"_blank\" rel=\"noopener noreferrer\">Read more about engineering at Nord Security<\/a>.<\/p><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2004c86 elementor-widget elementor-widget-shortcode\" data-id=\"2004c86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"page\" data-elementor-id=\"18103\" class=\"elementor elementor-18103\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-748947f elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"748947f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7995c19\" data-id=\"7995c19\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a437045 elementor-widget elementor-widget-image-box\" data-id=\"a437045\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">About Version 2 Digital<\/h3><p class=\"elementor-image-box-description\">Version 2 Digital is one of the most dynamic IT companies in Asia. The company distributes a wide range of IT products across various areas including cyber security, cloud, data protection, end points, infrastructures, system monitoring, storage, networking, business productivity and communication products.\n<br><br>\nThrough an extensive network of channels, point of sales, resellers, and partnership companies, Version 2 offers quality products and services which are highly acclaimed in the market. Its customers cover a wide spectrum which include Global 1000 enterprises, regional listed companies, different vertical industries, public utilities, Government, a vast number of successful SMEs, and consumers in various Asian cities.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\n\t\t<div data-elementor-type=\"page\" data-elementor-id=\"63567\" class=\"elementor elementor-63567\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-45e3ec76 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"45e3ec76\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-311e216d\" data-id=\"311e216d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3d9a2e6f elementor-widget elementor-widget-text-editor\" data-id=\"3d9a2e6f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>About NordPass<br \/><\/strong>NordPass is developed by Nord Security, a company leading the global market of cybersecurity products.<\/p><p>The web has become a chaotic space where safety and trust have been compromised by cybercrime and data protection issues. Therefore, our team has a global mission to shape a more trusted and peaceful online future for people everywhere.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-51a2bcf elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"51a2bcf\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c73a037\" data-id=\"c73a037\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-821bef5 elementor-widget elementor-widget-spacer\" data-id=\"821bef5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Backend-driven UI is a fresh approach to user interface [&hellip;]<\/p>","protected":false},"author":149011790,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[973,1129,1273,61],"tags":[974,1131,1272],"class_list":["post-90811","post","type-post","status-publish","format-standard","hentry","category-nord-security","category-nordpass","category-1273","category-press-release","tag-nord-security","tag-nordpass","tag-1272"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Backend-driven UI: Fast A\/B testing and unified clients - Version 2<\/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:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Backend-driven UI: Fast A\/B testing and unified clients - Version 2\" \/>\n<meta property=\"og:description\" content=\"Backend-driven UI is a fresh approach to user interface [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients\" \/>\n<meta property=\"og:site_name\" content=\"Version 2\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-30T04:23:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/09\/featured-image.png\" \/>\n<meta name=\"author\" content=\"tracylamv2\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"tracylamv2\" \/>\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:\\\/\\\/nordsecurity.com\\\/blog\\\/backend-driven-ui-fast-testing-unified-clients#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2024\\\/09\\\/backend-driven-ui-fast-a-b-testing-and-unified-clients\\\/\"},\"author\":{\"name\":\"tracylamv2\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/011bc7c3731c930bcfeecd52fefb6365\"},\"headline\":\"Backend-driven UI: Fast A\\\/B testing and unified clients\",\"datePublished\":\"2024-09-30T04:23:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2024\\\/09\\\/backend-driven-ui-fast-a-b-testing-and-unified-clients\\\/\"},\"wordCount\":1152,\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/backend-driven-ui-fast-testing-unified-clients#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_1200,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2024\\\/09\\\/featured-image.png\",\"keywords\":[\"Nord Security\",\"NordPass\",\"2024\"],\"articleSection\":[\"Nord Security\",\"NordPass\",\"2024\",\"Press Release\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/version-2.com\\\/2024\\\/09\\\/backend-driven-ui-fast-a-b-testing-and-unified-clients\\\/\",\"url\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/backend-driven-ui-fast-testing-unified-clients\",\"name\":\"Backend-driven UI: Fast A\\\/B testing and unified clients - Version 2\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/backend-driven-ui-fast-testing-unified-clients#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/backend-driven-ui-fast-testing-unified-clients#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_1200,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2024\\\/09\\\/featured-image.png\",\"datePublished\":\"2024-09-30T04:23:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/backend-driven-ui-fast-testing-unified-clients#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/backend-driven-ui-fast-testing-unified-clients\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/backend-driven-ui-fast-testing-unified-clients#primaryimage\",\"url\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_1200,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2024\\\/09\\\/featured-image.png\",\"contentUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_1200,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2024\\\/09\\\/featured-image.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/backend-driven-ui-fast-testing-unified-clients#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/version-2.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Backend-driven UI: Fast A\\\/B testing and unified clients\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"name\":\"Version 2\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/version-2.com\\\/zh\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\",\"name\":\"Version 2\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"width\":1795,\"height\":335,\"caption\":\"Version 2\"},\"image\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/011bc7c3731c930bcfeecd52fefb6365\",\"name\":\"tracylamv2\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g\",\"caption\":\"tracylamv2\"},\"url\":\"https:\\\/\\\/version-2.com\\\/en\\\/author\\\/tracylamv2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Backend-driven UI: Fast A\/B testing and unified clients - Version 2","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:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients","og_locale":"en_US","og_type":"article","og_title":"Backend-driven UI: Fast A\/B testing and unified clients - Version 2","og_description":"Backend-driven UI is a fresh approach to user interface [&hellip;]","og_url":"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients","og_site_name":"Version 2","article_published_time":"2024-09-30T04:23:06+00:00","og_image":[{"url":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/09\/featured-image.png","type":"","width":"","height":""}],"author":"tracylamv2","twitter_card":"summary_large_image","twitter_misc":{"Written by":"tracylamv2","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients#article","isPartOf":{"@id":"https:\/\/version-2.com\/2024\/09\/backend-driven-ui-fast-a-b-testing-and-unified-clients\/"},"author":{"name":"tracylamv2","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/011bc7c3731c930bcfeecd52fefb6365"},"headline":"Backend-driven UI: Fast A\/B testing and unified clients","datePublished":"2024-09-30T04:23:06+00:00","mainEntityOfPage":{"@id":"https:\/\/version-2.com\/2024\/09\/backend-driven-ui-fast-a-b-testing-and-unified-clients\/"},"wordCount":1152,"publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"image":{"@id":"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/09\/featured-image.png","keywords":["Nord Security","NordPass","2024"],"articleSection":["Nord Security","NordPass","2024","Press Release"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/version-2.com\/2024\/09\/backend-driven-ui-fast-a-b-testing-and-unified-clients\/","url":"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients","name":"Backend-driven UI: Fast A\/B testing and unified clients - Version 2","isPartOf":{"@id":"https:\/\/version-2.com\/zh\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients#primaryimage"},"image":{"@id":"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/09\/featured-image.png","datePublished":"2024-09-30T04:23:06+00:00","breadcrumb":{"@id":"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients#primaryimage","url":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/09\/featured-image.png","contentUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/09\/featured-image.png"},{"@type":"BreadcrumbList","@id":"https:\/\/nordsecurity.com\/blog\/backend-driven-ui-fast-testing-unified-clients#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/version-2.com\/"},{"@type":"ListItem","position":2,"name":"Backend-driven UI: Fast A\/B testing and unified clients"}]},{"@type":"WebSite","@id":"https:\/\/version-2.com\/zh\/#website","url":"https:\/\/version-2.com\/zh\/","name":"Version 2","description":"","publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/version-2.com\/zh\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/version-2.com\/zh\/#organization","name":"Version 2","url":"https:\/\/version-2.com\/zh\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","contentUrl":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","width":1795,"height":335,"caption":"Version 2"},"image":{"@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/011bc7c3731c930bcfeecd52fefb6365","name":"tracylamv2","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g","caption":"tracylamv2"},"url":"https:\/\/version-2.com\/en\/author\/tracylamv2\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbQRKm-nCH","post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/90811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/users\/149011790"}],"replies":[{"embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/comments?post=90811"}],"version-history":[{"count":4,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/90811\/revisions"}],"predecessor-version":[{"id":90815,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/90811\/revisions\/90815"}],"wp:attachment":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/media?parent=90811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/categories?post=90811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/tags?post=90811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}