{"id":78980,"date":"2026-07-03T12:57:51","date_gmt":"2026-07-03T12:57:51","guid":{"rendered":"https:\/\/10web.io\/blog\/?p=78980"},"modified":"2026-07-03T12:57:51","modified_gmt":"2026-07-03T12:57:51","slug":"building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes","status":"publish","type":"post","link":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/","title":{"rendered":"Building a Visual Point-&#038;-Click Editor on Top of Agent-Generated React: What it Takes"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">When a user clicks a hero section and changes the font size, what they see is simple. What has to happen is not: the browser knows what they clicked, but the React source code the agent wrote has no native concept of which element that DOM click corresponds to. Connect those two things and the edit has to travel back into the source without breaking anything around it, and then stay synchronized with what the agent sees the next time it runs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">That&#8217;s the problem. It&#8217;s a sync problem, running in both directions, across three systems that weren&#8217;t built to know about each other.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Building 10Web&#8217;s visual editor on top of agent-generated React means solving problems traditional editors never had to face. Traditional editors controlled the code they were editing. We didn&#8217;t.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">The difference <\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Traditional visual editors generate the code, own the schema, and know exactly what they wrote. That assumption makes every other problem tractable.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">An agent doesn&#8217;t write for an editor. It writes for a browser. By the time 10Web&#8217;s visual editor needs to operate on that output, the agent is done. Three systems now have to stay in sync: the rendered DOM the user clicks, the React source the agent wrote, and the backend source that persists between sessions. They share no common data structure, and none of them was designed to know about the others. Every problem that follows is a problem of keeping those three aligned.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Connecting a click to a line of code<\/span><\/h2>\n<p><b>What it takes<\/b><span style=\"font-weight: 400;\">: a traceable element identity built into every JSX node before the preview renders.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nothing in the browser connects a rendered DOM node to a source file. Once code is compiled and served to an iframe, that context is gone. You have to build the bridge before the click fires.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We inject a traceable identity into every JSX element at transform time in 10Web&#8217;s build pipeline. It encodes the element&#8217;s location in the source. When a click fires, it resolves to that identity, which resolves to the source position. The bridge exists before the interaction begins.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nested elements complicate this. A span inside an h2, or child nodes with no distinguishing attributes, can resist clean identity resolution. For those cases we support alternate encoding strategies, including position-based encodings for backward compatibility with older agent output. A system that operates on code it just generated can make stronger assumptions. We handle multiple generations of 10Web agent output.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Writing the edit back without breaking the file<\/span><\/h2>\n<p><b>What it takes<\/b><span style=\"font-weight: 400;\">: structurally precise source modification, a decoupled update path, and three layers of state that have to agree.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Text manipulation is the wrong tool. The file is code, and replacing a string at a character position risks corrupting adjacent nodes. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The modification has to be structural: <\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">parse the file into an AST<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">find the specific node<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">change the right attribute<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">regenerate cleanly<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Speed is the second problem. A full roundtrip takes seconds done naively: <\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">parse the source<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">find the node<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">modify it, re-bundle<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">re-render<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">We decouple what the user sees from when the code actually changes \u2014 update the DOM in 10Web&#8217;s preview iframe immediately, before the source is touched, then run the AST modification and rebundle in the background. The user sees the change in under 100 milliseconds.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Three layers of state have to stay coherent: the in-memory preview (what the user sees), the Redux edits slice (full updated file contents plus undo history), and the backend source (written only on explicit Save). A visual edit that hasn&#8217;t been saved is a change the agent doesn&#8217;t know about. The agent works from the backend source, not the client-side Redux state.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">The agent constraint <\/span><\/h2>\n<p><b>What it takes<\/b><span style=\"font-weight: 400;\">: constraining the agent to a class vocabulary the editor can parse.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The visual editor doesn&#8217;t receive instructions from the agent about which controls to show. It derives that at selection time by reading the element. Tag name and DOM attributes determine which control panels appear. The existing Tailwind classes determine the values those panels display. A button with <\/span><span style=\"font-weight: 400;\">rounded-md<\/span><span style=\"font-weight: 400;\"> surfaces a Radius slider set to medium. Adjust it, and the new value maps back to a Tailwind class written into the source.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This only works if the agent writes classes the editor recognizes. Arbitrary values outside the predefined token vocabulary produce classes the editor can&#8217;t map to a control. So 10Web&#8217;s agent is constrained to that vocabulary. A more constrained agent is a more editable output. Generation quality and editability are not independent variables.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">What survives when the agent runs again<\/span><\/h2>\n<p><b>What it takes<\/b><span style=\"font-weight: 400;\">: a clear rule for which values belong to the design system and which belong to the user.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In 10Web&#8217;s system, visual edits aren&#8217;t stored in a separate overrides layer. When a user changes a color, that change is written directly into the TSX source as a Tailwind class modification. The edit becomes the source. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">For theme-level values, the rule is: elements set to a named system value (Default, Primary, Secondary, Background) inherit from the global theme and update when the theme updates. Elements a user has set to a custom value become independent. Future theme changes won&#8217;t touch them.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The inline-style exception is deliberate. Agents that prioritize visual fidelity, such as when cloning an existing site or converting a Figma file, use inline styles for accuracy. Those outputs sit outside the theme system by design. The trade-off between looking exactly right and being fully editable is explicit, not hidden.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Why this is engineering work, not a product decision<\/span><\/h2>\n<p><b>What it takes<\/b><span style=\"font-weight: 400;\">: committing to operating on free-form agent output before you know the full cost.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Across 2M+ sites built on 10Web, the split between what users prompt for and what they click to change is consistent. They reach for the agent for structural changes. They reach for the editor for precise, local ones. Re-prompting for a 2px margin change is a measurably worse experience.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">10Web spent a year on an Elementor integration: a visual editor built on a widget abstraction, layered on top of agent output. The abstraction imposed a ceiling on what the agent could generate, because anything it wrote had to be expressible in Elementor&#8217;s widget model. The ceiling was real. We hit it and shut the integration down.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The path we took is a visual editor that operates on free-form React, with no intermediary abstraction. A widget-based editor doesn&#8217;t have a DOM-to-source mapping problem, because the widget model is the source. It doesn&#8217;t need AST modification or a Tailwind vocabulary constraint in the same way. The harder path produces the harder problems. It also produces an editor with no ceiling on generation quality.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Conclusion<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">What is your visual editor operating on: a schema your team controls, or code the agent wrote freely?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The first gives you a manageable editor and a constrained agent. Most of the problems above don&#8217;t appear. The second gives you an unconstrained agent and forces you to solve all of them.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">At 10Web, we chose the second. The problems were real. So is our solution.<\/span><\/p>\n<h2>FAQ<\/h2>\n<div class=\"faq-shortcode\">\n    <p class=\"faq_title\">How does a visual editor know which element a user clicked when the source is React?<\/p>\n    <div class=\"faq_content\"><br \/>\nThe browser has no native way to map a DOM click back to a line of React source. 10Web solves this by injecting a traceable identity into every JSX element at transform time, before the preview renders. When a click fires, it resolves to that identity, which maps back to the exact source position. The bridge is built before any interaction begins.<br \/>\n<\/div>\n<\/div>\n\n<div class=\"faq-shortcode\">\n    <p class=\"faq_title\">Why is editing agent-generated React harder than editing code your own team wrote?<\/p>\n    <div class=\"faq_content\"><br \/>\nTraditional visual editors own the code they generate. They write to a known schema, so they always know where everything is. 10Web&#8217;s editor operates on code an agent produced\u2014code it didn&#8217;t write and can&#8217;t make strong assumptions about. That gap means DOM-to-source mapping, structural file modification, and multi-system state coherence all have to be solved from scratch.<br \/>\n<\/div>\n<\/div>\n\n<div class=\"faq-shortcode\">\n    <p class=\"faq_title\">Why use AST modification instead of find-and-replace when writing an edit back to source?<\/p>\n    <div class=\"faq_content\"><br \/>\nText-based replacement is too blunt for code. Replacing a string at a character position can corrupt adjacent nodes or hit the wrong occurrence. AST modification parses the file into a structured tree, finds the exact node, changes only the right attribute, and regenerates cleanly. It&#8217;s more expensive but structurally precise, which matters when you&#8217;re editing source you didn&#8217;t generate.<br \/>\n<\/div>\n<\/div>\n\n<div class=\"faq-shortcode\">\n    <p class=\"faq_title\">How does 10Web show visual changes instantly if AST modification takes time?<\/p>\n    <div class=\"faq_content\"><br \/>\nThe preview is decoupled from the code change. When a user edits, the DOM in the preview iframe updates immediately\u2014under 100 milliseconds. The AST modification and rebundle run in the background. The user sees the result right away without waiting for the full roundtrip.<br \/>\n<\/div>\n<\/div>\n\n<div class=\"faq-shortcode\">\n    <p class=\"faq_title\">When should I use the AI agent versus the visual editor?<\/p>\n    <div class=\"faq_content\"><br \/>\nAcross 2M+ sites built on 10Web, the pattern is consistent: the agent handles structural changes\u2014adding sections, regenerating layouts, rewriting content. The visual editor handles precise, local ones\u2014nudging a margin, swapping a color, adjusting font size. Re-prompting the AI for a 2px spacing change is measurably worse than clicking it directly.<br \/>\n<\/div>\n<\/div>\n\n<div class=\"faq-shortcode\">\n    <p class=\"faq_title\">Why did 10Web shut down the Elementor integration?<\/p>\n    <div class=\"faq_content\"><br \/>\nElementor&#8217;s widget model imposed a ceiling on what the agent could generate\u2014anything the agent wrote had to be expressible as an Elementor widget. That constraint limited generation quality in ways that couldn&#8217;t be engineered around. 10Web chose to operate directly on free-form React instead, accepting harder engineering problems in exchange for no ceiling on agent output quality.<br \/>\n<\/div>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>When a user clicks a hero section and changes the font size, what they see is simple. What has to happen is not: the browser knows what they clicked, but the React source code the agent wrote has no native concept of which element that DOM click corresponds to. Connect those two things and the edit has to travel back&#8230;<\/p>\n","protected":false},"author":39,"featured_media":78982,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"two_page_speed":[],"footnotes":"","tenweb_blog_toc":"<ul><li><a href=\"#the-difference\">The difference <\/a><li><a href=\"#connecting-a-click-to-a-line-of-code\">Connecting a click to a line of code<\/a><li><a href=\"#writing-the-edit-back-without-breaking-the-file\">Writing the edit back without breaking the file<\/a><li><a href=\"#the-agent-constraint\">The agent constraint <\/a><li><a href=\"#what-survives-when-the-agent-runs-again\">What survives when the agent runs again<\/a><li><a href=\"#why-this-is-engineering-work-not-a-product-decision\">Why this is engineering work, not a product decision<\/a><li><a href=\"#conclusion\">Conclusion<\/a><li><a href=\"#faq\">FAQ<\/a><\/li><\/ul>","tenweb_blog_competitor_type":"","tenweb_blog_competitor_names":"","tenweb_blog_twb_version":0,"tenweb_blog_type":""},"categories":[478],"tags":[],"class_list":["post-78980","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Inside 10Web\u2019s Visual Editor for Agent-Generated React - 10Web<\/title>\n<meta name=\"description\" content=\"How do you build a visual editor for code you didn\u2019t write? 10Web explains the engineering behind syncing the DOM and agent-generated React.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building a Visual Point-&amp;-Click Editor on Top of Agent-Generated React: What it Takes\" \/>\n<meta property=\"og:description\" content=\"How do you build a visual editor for code you didn\u2019t write? 10Web explains the engineering behind syncing the DOM and agent-generated React.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/\" \/>\n<meta property=\"og:site_name\" content=\"10Web - Build &amp; Host Your WordPress Website\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/10Web.io\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-03T12:57:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/Building-a-visual-point-and-click-editor-on-top-of-agent-generated-React_-what-it-actually-takes.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1484\" \/>\n\t<meta property=\"og:image:height\" content=\"832\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sergey Markosyan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@10Web_io\" \/>\n<meta name=\"twitter:site\" content=\"@10Web_io\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sergey Markosyan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Inside 10Web\u2019s Visual Editor for Agent-Generated React - 10Web","description":"How do you build a visual editor for code you didn\u2019t write? 10Web explains the engineering behind syncing the DOM and agent-generated React.","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:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/","og_locale":"en_US","og_type":"article","og_title":"Building a Visual Point-&-Click Editor on Top of Agent-Generated React: What it Takes","og_description":"How do you build a visual editor for code you didn\u2019t write? 10Web explains the engineering behind syncing the DOM and agent-generated React.","og_url":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/","og_site_name":"10Web - Build &amp; Host Your WordPress Website","article_publisher":"https:\/\/www.facebook.com\/10Web.io\/","article_published_time":"2026-07-03T12:57:51+00:00","og_image":[{"width":1484,"height":832,"url":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/Building-a-visual-point-and-click-editor-on-top-of-agent-generated-React_-what-it-actually-takes.jpg","type":"image\/jpeg"}],"author":"Sergey Markosyan","twitter_card":"summary_large_image","twitter_creator":"@10Web_io","twitter_site":"@10Web_io","twitter_misc":{"Written by":"Sergey Markosyan","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/#article","isPartOf":{"@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/"},"author":{"name":"Sergey Markosyan","@id":"https:\/\/10web.io\/blog\/#\/schema\/person\/c8350d9b5223c607a2b79f6d4b8a52d6"},"headline":"Building a Visual Point-&#038;-Click Editor on Top of Agent-Generated React: What it Takes","datePublished":"2026-07-03T12:57:51+00:00","dateModified":"2026-07-03T12:57:51+00:00","mainEntityOfPage":{"@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/"},"wordCount":1607,"commentCount":0,"publisher":{"@id":"https:\/\/10web.io\/blog\/#organization"},"image":{"@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/#primaryimage"},"thumbnailUrl":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/Building-a-visual-point-and-click-editor-on-top-of-agent-generated-React_-what-it-actually-takes.jpg","articleSection":["AI"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/","url":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/","name":"Inside 10Web\u2019s Visual Editor for Agent-Generated React - 10Web","isPartOf":{"@id":"https:\/\/10web.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/#primaryimage"},"image":{"@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/#primaryimage"},"thumbnailUrl":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/Building-a-visual-point-and-click-editor-on-top-of-agent-generated-React_-what-it-actually-takes.jpg","datePublished":"2026-07-03T12:57:51+00:00","dateModified":"2026-07-03T12:57:51+00:00","description":"How do you build a visual editor for code you didn\u2019t write? 10Web explains the engineering behind syncing the DOM and agent-generated React.","breadcrumb":{"@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/#primaryimage","url":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/Building-a-visual-point-and-click-editor-on-top-of-agent-generated-React_-what-it-actually-takes.jpg","contentUrl":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2026\/07\/Building-a-visual-point-and-click-editor-on-top-of-agent-generated-React_-what-it-actually-takes.jpg","width":1484,"height":832,"caption":"Building a visual point and click editor on top of agent generated React what it takes"},{"@type":"BreadcrumbList","@id":"https:\/\/10web.io\/blog\/building-a-visual-point-click-editor-on-top-of-agent-generated-react-what-it-takes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/10web.io\/blog\/"},{"@type":"ListItem","position":2,"name":"Building a Visual Point-&#038;-Click Editor on Top of Agent-Generated React: What it Takes"}]},{"@type":"WebSite","@id":"https:\/\/10web.io\/blog\/#website","url":"https:\/\/10web.io\/blog\/","name":"10Web Blog - Build & Host Your WordPress Website","description":"10Web is an All-in-One Website Building Platform, offering Managed WordPress Hosting on Google Cloud, Beautiful Templates, Premium Plugins and Services.","publisher":{"@id":"https:\/\/10web.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/10web.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/10web.io\/blog\/#organization","name":"10Web","url":"https:\/\/10web.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/10web.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2025\/04\/Logo-768x686-1.png","contentUrl":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2025\/04\/Logo-768x686-1.png","width":768,"height":686,"caption":"10Web"},"image":{"@id":"https:\/\/10web.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/10Web.io\/","https:\/\/x.com\/10Web_io","https:\/\/www.instagram.com\/10web.io\/","https:\/\/www.linkedin.com\/company\/10web\/mycompany\/","https:\/\/www.youtube.com\/c\/10Web"]},{"@type":"Person","@id":"https:\/\/10web.io\/blog\/#\/schema\/person\/c8350d9b5223c607a2b79f6d4b8a52d6","name":"Sergey Markosyan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/10web.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5dee1e06f3b02cc0b043d015850db7ca?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dee1e06f3b02cc0b043d015850db7ca?s=96&d=mm&r=g","caption":"Sergey Markosyan"},"description":"Sergey Markosyan is the Co-Founder and CTO at 10Web. He leads the development of the 10Web platform, identifies and solves problems in the development process across the organization a true sensei for the engineering team.","sameAs":["https:\/\/www.linkedin.com\/in\/sergey-markosyan\/"],"url":"https:\/\/10web.io\/blog\/author\/sergey\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/posts\/78980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/comments?post=78980"}],"version-history":[{"count":5,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/posts\/78980\/revisions"}],"predecessor-version":[{"id":78985,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/posts\/78980\/revisions\/78985"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/media\/78982"}],"wp:attachment":[{"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/media?parent=78980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/categories?post=78980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/tags?post=78980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}