1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
1<script id="hs-script-loader" type="text/javascript" async="" defer="" src="https://js-na2.hs-scripts.com/4342163.js"></script>
1<meta http-equiv="x-ua-compatible" content="ie=edge"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><meta name="generator" content="Gatsby 5.16.1"/><meta name="theme-color" content="#663399"/><meta name="description" content="Web Performance Optimization & AI integration by maintainers of React on Rails and Shakapacker. We optimize Web Vitals, Lighthouse, SEO, Accessibility, BE performance. We help build reliable AI assistants." data-gatsby-head="true"/><meta property="og:title" content="Web Performance, AI Integration & React on Rails Experts" data-gatsby-head="true"/><meta property="og:description" content="Web Performance Optimization & AI integration by maintainers of React on Rails and Shakapacker. We optimize Web Vitals, Lighthouse, SEO, Accessibility, BE performance. We help build reliable AI assistants." data-gatsby-head="true"/><meta property="og:type" content="website" data-gatsby-head="true"/><meta property="og:url" content="https://shakacode.com/" data-gatsby-head="true"/><meta property="og:site_name" content="ShakaCode" data-gatsby-head="true"/><meta property="og:image" content="https://shakacode.com/shakacode-og.png" data-gatsby-head="true"/><meta name="image" content="https://shakacode.com/shakacode-og.png" data-gatsby-head="true"/><meta name="twitter:card" content="summary_large_image" data-gatsby-head="true"/><meta name="twitter:title" content="Web Performance, AI Integration & React on Rails Experts" data-gatsby-head="true"/><meta name="twitter:description" content="Web Performance Optimization & AI integration by maintainers of React on Rails and Shakapacker. We optimize Web Vitals, Lighthouse, SEO, Accessibility, BE performance. We help build reliable AI assistants." data-gatsby-head="true"/><meta name="twitter:image" content="https://shakacode.com/shakacode-og.png" data-gatsby-head="true"/><link rel="icon" href="/favicon-32x32.png?v=f8282b9cf340b9549c7fa2ef690d0caf" type="image/png"/><link rel="manifest" href="/manifest.webmanifest" crossorigin="anonymous"/><link rel="apple-touch-icon" sizes="48x48" href="/icons/icon-48x48.png?v=f8282b9cf340b9549c7fa2ef690d0caf"/><link rel="apple-touch-icon" sizes="72x72" href="/icons/icon-72x72.png?v=f8282b9cf340b9549c7fa2ef690d0caf"/><link rel="apple-touch-icon" sizes="96x96" href="/icons/icon-96x96.png?v=f8282b9cf340b9549c7fa2ef690d0caf"/><link rel="apple-touch-icon" sizes="144x144" href="/icons/icon-144x144.png?v=f8282b9cf340b9549c7fa2ef690d0caf"/><link rel="apple-touch-icon" sizes="192x192" href="/icons/icon-192x192.png?v=f8282b9cf340b9549c7fa2ef690d0caf"/><link rel="apple-touch-icon" sizes="256x256" href="/icons/icon-256x256.png?v=f8282b9cf340b9549c7fa2ef690d0caf"/><link rel="apple-touch-icon" sizes="384x384" href="/icons/icon-384x384.png?v=f8282b9cf340b9549c7fa2ef690d0caf"/><link rel="apple-touch-icon" sizes="512x512" href="/icons/icon-512x512.png?v=f8282b9cf340b9549c7fa2ef690d0caf"/><link rel="sitemap" type="application/xml" href="/sitemap/sitemap-index.xml"/><title data-gatsby-head="true">Web Performance, AI Integration & React on Rails Experts | Shakacode</title><link rel="canonical" href="https://shakacode.com/" data-gatsby-head="true"/>
1<script>(function loadFontsStylesheet() { 2 function injectFontsStylesheet() { 3 if (document.getElementById("sc-google-fonts-stylesheet")) { 4 return; 5 } 6 7 var stylesheet = document.createElement("link"); 8 stylesheet.id = "sc-google-fonts-stylesheet"; 9 stylesheet.rel = "stylesheet"; 10 stylesheet.href = "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700;800;900&family=Open+Sans:ital,wght@0,400;0,600;0,700;0,800;1,400&display=optional"; 11 stylesheet.media = "print"; 12 stylesheet.onload = function onFontsLoaded() { 13 stylesheet.media = "all"; 14 }; 15 document.head.appendChild(stylesheet); 16 } 17 18 // Delay font CSS injection until after the initial load to avoid first-render 19 // font swaps that can trigger measurable CLS on hero/header content. 20 function scheduleInjection() { 21 if (typeof window.requestIdleCallback === "function") { 22 window.requestIdleCallback(injectFontsStylesheet, { timeout: 2000 }); 23 return; 24 } 25 window.setTimeout(injectFontsStylesheet, 200); 26 } 27 28 if (document.readyState === "complete") { 29 scheduleInjection(); 30 return; 31 } 32 33 window.addEventListener("load", scheduleInjection, { once: true }); 34})();</script>
34<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700;800;900&family=Open+Sans:ital,wght@0,400;0,600;0,700;0,800;1,400&display=optional"/></noscript><style data-href="/styles.53ec77ec03f8dceb1193.css" data-identity="gatsby-global-css">@charset "UTF-8";code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:1.5;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#b3d4fc;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{background:hsla(0,0%,100%,.5);color:#9a6e3a}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.slick-loading .slick-list{background:#fff url(data:image/gif;base64,R0lGODlhIAAgAPUAAP///wAAAPr6+sTExOjo6PDw8NDQ0H5+fpqamvb29ubm5vz8/JKSkoaGhuLi4ri4uKCgoOzs7K6urtzc3D4+PlZWVmBgYHx8fKioqO7u7kpKSmxsbAwMDAAAAM7OzsjIyNjY2CwsLF5eXh4eHkxMTLCwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAIAAgAAAG/0CAcEgkFjgcR3HJJE4SxEGnMygKmkwJxRKdVocFBRRLfFAoj6GUOhQoFAVysULRjNdfQFghLxrODEJ4Qm5ifUUXZwQAgwBvEXIGBkUEZxuMXgAJb1dECWMABAcHDEpDEGcTBQMDBQtvcW0RbwuECKMHELEJF5NFCxm1AAt7cH4NuAOdcsURy0QCD7gYfcWgTQUQB6Zkr66HoeDCSwIF5ucFz3IC7O0CC6zx8YuHhW/3CvLyfPX4+OXozKnDssBdu3G/xIHTpGAgOUPrZimAJCfDPYfDin2TQ+xeBnWbHi37SC4YIYkQhdy7FvLdpwWvjA0JyU/ISyIx4xS6sgfkNS4me2rtVKkgw0JCb8YMZdjwqMQ2nIY8BbcUQNVCP7G4MQq1KRivR7tiDEuEFrggACH5BAAKAAEALAAAAAAgACAAAAb/QIBwSCQmNBpCcckkEgREA4ViKA6azM8BEZ1Wh6LOBls0HA5fgJQ6HHQ6InKRcWhA1d5hqMMpyIkOZw9Ca18Qbwd/RRhnfoUABRwdI3IESkQFZxB4bAdvV0YJQwkDAx9+bWcECQYGCQ5vFEQCEQoKC0ILHqUDBncCGA5LBiHCAAsFtgqoQwS8Aw64f8m2EXdFCxO8INPKomQCBgPMWAvL0n/ff+jYAu7vAuxy8O/myvfX8/f7/Arq+v0W0HMnr9zAeE0KJlQkJIGCfE0E+PtDq9qfDMogDkGmrIBCbNQUZIDosNq1kUsEZJBW0dY/b0ZsLViQIMFMW+RKKgjFzp4fNokPIdki+Y8JNVxA79jKwHAI0G9JGw5tCqDWTiFRhVhtmhVA16cMJTJ1OnVIMo1cy1KVI5NhEAAh+QQACgACACwAAAAAIAAgAAAG/0CAcEgkChqNQnHJJCYWRMfh4CgamkzFwBOdVocNCgNbJAwGhKGUOjRQKA1y8XOGAtZfgIWiSciJBWcTQnhCD28Qf0UgZwJ3XgAJGhQVcgKORmdXhRBvV0QMY0ILCgoRmIRnCQIODgIEbxtEJSMdHZ8AGaUKBXYLIEpFExZpAG62HRRFArsKfn8FIsgjiUwJu8FkJLYcB9lMCwUKqFgGHSJ5cnZ/uEULl/CX63/x8KTNu+RkzPj9zc/0/Cl4V0/APDIE6x0csrBJwybX9DFhBhCLgAilIvzRVUriKHGlev0JtyuDvmsZUZlcIiCDnYu7KsZ0UmrBggRP7n1DqcDJEzciOgHwcwTyZEUmIKEMFVIqgyIjpZ4tjdTxqRCMPYVMBYDV6tavUZ8yczpkKwBxHsVWtaqo5tMgA
34CH5BAAKAAMALAAAAAAgACAAAAb/QIBwSCQuBgNBcck0FgvIQtHRZCYUGSJ0IB2WDo9qUaBQKIXbLsBxOJTExUh5mB4iDo0zXEhWJNBRQgZtA3tPZQsAdQINBwxwAnpCC2VSdQNtVEQSEkOUChGSVwoLCwUFpm0QRAMVFBQTQxllCqh0kkIECF0TG68UG2O0foYJDb8VYVa0alUXrxoQf1WmZnsTFA0EhgCJhrFMC5Hjkd57W0jpDsPDuFUDHfHyHRzstNN78PPxHOLk5dwcpBuoaYk5OAfhXHG3hAy+KgLkgNozqwzDbgWYJQyXsUwGXKNA6fnYMIO3iPeIpBwyqlSCBKUqEQk5E6YRmX2UdAT5kEnHKkQ5hXjkNqTPtKAARl1sIrGoxSFNuSEFMNWoVCxEpiqyRlQY165wEHELAgAh+QQACgAEACwAAAAAIAAgAAAG/0CAcEgsKhSLonJJTBIFR0GxwFwmFJlnlAgaTKpFqEIqFJMBhcEABC5GjkPz0KN2tsvHBH4sJKgdd1NHSXILah9tAmdCC0dUcg5qVEQfiIxHEYtXSACKnWoGXAwHBwRDGUcKBXYFi0IJHmQEEKQHEGGpCnp3AiW1DKFWqZNgGKQNA65FCwV8bQQHJcRtds9MC4rZitVgCQbf4AYEubnKTAYU6eoUGuSpu3fo6+ka2NrbgQAE4eCmS9xVAOW7Yq7IgA4Hpi0R8EZBhDshOnTgcOtfM0cAlTigILFDiAFFNjk8k0GZgAxOBozouIHIOyKbFixIkECmIyIHOEiEWbPJTTQ5FxcVOMCgzUVCWwAcyZJvzy45ADYVZNIwTlIAVfNB7XRVDLxEWLQ4E9JsKq+rTdsMyhcEACH5BAAKAAUALAAAAAAgACAAAAb/QIBwSCwqFIuicklMEgVHQVHKVCYUmWeUWFAkqtOtEKqgAsgFcDFyHJLNmbZa6x2Lyd8595h8C48RagJmQgtHaX5XZUYKQ4YKEYSKfVKPaUMZHwMDeQBxh04ABYSFGU4JBpsDBmFHdXMLIKofBEyKCpdgspsOoUsLXaRLCQMgwky+YJ1FC4POg8lVAg7U1Q5drtnHSw4H3t8HDdnZy2Dd4N4Nzc/QeqLW1bnM7rXuV9tEBhQQ5UoCbJDmWKBAQcMDZNhwRVNCYANBChZYEbkVCZOwASEcCDFQ4SEDIq6WTVqQIMECBx06iCACQQPBiSabHDqzRUTKARMhSFCDrc+WNQIcOoRw5+ZIHj8ADqSEQBQAwKKLhIzowEEeGKQ0owIYkPKjHihZoBKi0KFE01b4zg7h4y4IACH5BAAKAAYALAAAAAAgACAAAAb/QIBwSCwqFIuicklMEgVHQVHKVCYUmWeUWFAkqtOtEKqgAsgFcDFyHJLNmbZa6x2Lyd8595h8C48RagJmQgtHaX5XZUUJeQCGChGEin1SkGlubEhDcYdOAAWEhRlOC12HYUd1eqeRokOKCphgrY5MpotqhgWfunqPt4PCg71gpgXIyWSqqq9MBQPR0tHMzM5L0NPSC8PCxVUCyeLX38+/AFfXRA4HA+pjmoFqCAcHDQa3rbxzBRD1BwgcMFIlidMrAxYICHHA4N8DIqpsUWJ3wAEBChQaEBnQoB6RRr0uARjQocMAAA0w4nMz4IOaU0lImkSngYKFc3ZWyTwJAALGK4fnNA3ZOaQCBQ22wPgRQlSIAYwSfkHJMrQkTyEbKFzFydQq15ccOAjUEwQAIfkEAAoABwAsAAAAACAAIAAABv9AgHBILCoUi6JySUwSBUdBUcpUJhSZZ5RYUCSq060QqqACyAVwMXIcks2ZtlrrHYvJ3zn3mHwLjxFqAmZCC0dpfldlRQl5AIYKEYSKfVKQaW5sSENxh04ABYSFGU4LXYdh
34R3V6p5GiQ4oKmGCtjkymi2qGBZ+6eo+3g8KDvYLDxKrJuXNkys6qr0zNygvHxL/V1sVD29K/AFfRRQUDDt1PmoFqHgPtBLetvMwG7QMes0KxkkIFIQNKDhBgKvCh3gQiqmxt6NDBAAEIEAgUOHCgBBEH9Yg06uWAIQUABihQMACgBEUHTRwoUEOBIcqQI880OIDgm5ABDA8IgUkSwAAyij1/jejAARPPIQwONBCnBAJDCEOOCnFA8cOvEh1CEJEqBMIBEDaLcA3LJIEGDe/0BAEAIfkEAAoACAAsAAAAACAAIAAABv9AgHBILCoUi6JySUwSBUdBUcpUJhSZZ5RYUCSq060QqqACyAVwMXIcks2ZtlrrHYvJ3zn3mHwLjxFqAmZCC0dpfldlRQl5AIYKEYSKfVKQaW5sSENxh04ABYSFGU4LXYdhR3V6p5GiQ4oKmGCtjkymi2qGBZ+6eo+3g8KDvYLDxKrJuXNkys6qr0zNygvHxL/V1sVDDti/BQccA8yrYBAjHR0jc53LRQYU6R0UBnO4RxmiG/IjJUIJFuoVKeCBigBN5QCk43BgFgMKFCYUGDAgFEUQRGIRYbCh2xACEDcAcHDgQDcQFGf9s7VkA0QCI0t2W0DRw68h8ChAEELSJE8xijBvVqCgIU9PjwA+UNzG5AHEB9xkDpk4QMGvARQsEDlKxMCALDeLcA0rqEEDlWCCAAAh+QQACgAJACwAAAAAIAAgAAAG/0CAcEgsKhSLonJJTBIFR0FRylQmFJlnlFhQJKrTrRCqoALIBXAxchySzZm2Wusdi8nfOfeYfAuPEWoCZkILR2l+V2VFCXkAhgoRhIp9UpBpbmxIQ3GHTgAFhIUZTgtdh2FHdXqnkaJDigqYYK2OTKaLaoYFn7p6j0wOA8PEAw6/Z4PKUhwdzs8dEL9kqqrN0M7SetTVCsLFw8d6C8vKvUQEv+dVCRAaBnNQtkwPFRQUFXOduUoTG/cUNkyYg+tIBlEMAFYYMAaBuCekxmhaJeSeBgiOHhw4QECAAwcCLhGJRUQCg3RDCmyUVmBYmlOiGqmBsPGlyz9YkAlxsJEhqCubABS9AsPgQAMqLQfM0oTMwEZ4QpLOwvMLxAEEXIBG5aczqtaut4YNXRIEACH5BAAKAAoALAAAAAAgACAAAAb/QIBwSCwqFIuicklMEgVHQVHKVCYUmWeUWFAkqtOtEKqgAsgFcDFyHJLNmbZa6x2Lyd8595h8C48RahAQRQtHaX5XZUUJeQAGHR0jA0SKfVKGCmlubEhCBSGRHSQOQwVmQwsZTgtdh0UQHKIHm2quChGophuiJHO3jkwOFB2UaoYFTnMGegDKRQQG0tMGBM1nAtnaABoU3t8UD81kR+UK3eDe4nrk5grR1NLWegva9s9czfhVAgMNpWqgBGNigMGBAwzmxBGjhACEgwcgzAPTqlwGXQ8gMgAhZIGHWm5WjelUZ8jBBgPMTBgwIMGCRgsygVSkgMiHByD7DWDmx5WuMkZqDLCU4gfAq2sACrAEWFSRLjUfWDopCqDTNQIsJ1LF0yzDAA90UHV5eo0qUjB8mgUBACH5BAAKAAsALAAAAAAgACAAAAb/QIBwSCwqFIuickk0FIiCo6A4ZSoZnRBUSiwoEtYipNOBDKOKKgD9DBNHHU4brc4c3cUBeSOk949geEQUZA5rXABHEW4PD0UOZBSHaQAJiEMJgQATFBQVBkQHZKACUwtHbX0RR0mVFp0UFwRCBSQDSgsZrQteqEUPGrAQmmG9ChFqRAkMsBd4xsRLBBsUoG6nBa14E4IA2kUFDuLjDql4peilAA0H7e4H1udH8/Ps7+3xbmj0qOTj5mEWpEP3DUq3glYWOBgAcEmUaNI+DBjwAY+dS0USGJg4wABEXMYyJNvE8UOGISKVCNClah4xjg60WUKyINOCUwrMzVRARMGENWQ4n/jpNTKTm15J/CTK2e0MoD+UKmHEs4onVDVVmyqdpAbNR4cKTjqNSots07EjzzJh1S0IADsAAAAAAAAAAAA=) 50% no-repeat}@font-face{font-family:slick;font-style:normal;font-weight:400;src:url(data:application/vnd.ms-fontobject;base64,AAgAAGQHAAABAAIAAAAAAAIABQkAAAAAAAABAJABAAAAAExQAQAAgCAAAAAAAAAAAAAAAAEAAAAAAAAATxDE8AAAAAAAAAAAAAAAAAAAAAAAAAoAcwBsAGkAYwBrAAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAKAHMAbABpAGMAawAAAAAAAAEAAAANAIAAAwBQRkZUTW3RyK8AAAdIAAAAHEdERUYANAAGAAAHKAAAACBPUy8yT/b9sgAAAVgAAABWY21hcCIPRb0AAAHIAAABYmdhc3D//wADAAAHIAAAAAhnbHlmP5u2YAAAAzwAAAIsaGVhZAABMfsAAADcAAAANmhoZWED5QIFAAABFAAAACRobXR4BkoASgAAAbAAAAAWbG9jYQD2AaIAAAMsAAAAEG1heHAASwBHAAABOAAAACBuYW1lBSeBwgAABWgAAAFucG9zdC+zMgMAAAbYAAAARQABAAAAAQAA8MQQT18PPPUACwIAAAAAAM9xeH8AAAAAz3F4fwAlACUB2wHbAAAACAACAAAAAAAAAAEAAAHbAAAALgIAAAAAAAHbAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAAHAEQAAgAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAQIAAZAABQAIAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAIABQkAAAAAAACAAAABAAAAIAAAAAAAAAAAUGZFZABAAGEhkgHg/+AALgHb/9sAAAABAAAAAAAAAgAAAAAAAAACAAAAAgAAJQAlACUAJQAAAAAAAwAAAAMAAAAcAAEAAAAAAFwAAwABAAAAHAAEAEAAAAAMAAgAAgAEAAAAYSAiIZAhkv//AAAAAABhICIhkCGS//8AAP+l3+PedN5xAAEAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAIwAsAEWAAIAJQAlAdsB2wAYACwAAD8BNjQvASYjIg8BBhUUHwEHBhUUHwEWMzI2FAcGBwYiJyYnJjQ3Njc2MhcWF/GCBgaCBQcIBR0GBldXBgYdBQgH7x0eMjB8MDIeHR0eMjB8MDIecYIGDgaCBQUeBQcJBFhYBAkHBR4F0nwwMh4dHR4yMHwwMh4dHR4yAAAAAgAlACUB2wHbABgALAAAJTc2NTQvATc2NTQvASYjIg8BBhQfARYzMjYUBwYHBiInJicmNDc2NzYyFxYXASgdBgZXVwYGHQUIBwWCBgaCBQcIuB0eMjB8MDIeHR0eMjB8MDIecR4FBwkEWFgECQcFHgUFggYOBoIF0nwwMh4dHR4yMHwwMh4dHR4yAAABACUAJQHbAdsAEwAAABQHBgcGIicmJyY0NzY3NjIXFhcB2x0eMjB8MDIeHR0eMjB8MDIeAT58MDIeHR0eMjB8MDIeHR0eMgABACUAJQHbAdsAQwAAARUUBisBIicmPwEmIyIHBgcGBwYUFxYXFhcWMzI3Njc2MzIfARYVFAcGBwYjIicmJyYnJjQ3Njc2NzYzMhcWFzc2FxYB2woIgAsGBQkoKjodHBwSFAwLCwwUEhwcHSIeIBMGAQQDJwMCISspNC8mLBobFBERFBsaLCYvKicpHSUIDAsBt4AICgsLCScnCwwUEhwcOhwcEhQMCw8OHAMDJwMDAgQnFBQRFBsaLCZeJiwaGxQRDxEcJQgEBgAAAAAAAAwAlgABAAAAAAABAAUADAABAAAAAAACAAcAIgABAAAAAAADACEAbgABAAAAAAAEAAUAnAABAAAAAAAFAAsAugABAAAAAAAGAAUA0gADAAEECQABAAoAAAADAAEECQACAA4AEgADAAEECQADAEIAKgADAAEECQAEAAoAkAADAAEECQAFABYAogADAAEECQAGAAoAxgBzAGwAaQBjAGsAAHNsaWNrAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAHMAbABpAGMAawAgADoAIAAxADQALQA0AC0AMgAwADEANAAARm9udEZvcmdlIDIuMCA6IHNsaWNrIDogMTQtNC0yMDE0AABzAGwAaQBjAGsAAHNsaWNrAABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABzAGwAaQBjAGsAAHNsaWNrAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAgECAQMAhwBECmFycm93cmlnaHQJYXJyb3dsZWZ0AAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAwAGAAEABAAAAAIAAAAAAAEAAAAAzu7XsAAAAADPcXh/AAAAAM9xeH8=);src:url(data:application/vnd.ms-fontobject;base64,AAgAAGQHAAABAAIAAAAAAAIABQkAAAAAAAABAJABAAAAAExQAQAAgCAAAAAAAAAAAAAAAAEAAAAAAAAATxDE8AAAAAAAAAAAAAAAAAAAAAAAAAoAcwBsAGkAYwBrAAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAKAHMAbABpAGMAawAAAAAAAAEAAAANAIAAAwBQRkZUTW3RyK8AAAdIAAAAHEdERUYANAAGAAAHKAAAACBPUy8yT/b9sgAAAVgAAABWY21hcCIPRb0AAAHIAAABYmdhc3D//wADAAAHIAAAAAhnbHlmP5u2YAAAAzwAAAIsaGVhZAABMfsAAADcAAAANmhoZWED5QIFAAABFAAAACRobXR4BkoASgAAAbAAAAAWbG9jYQD2AaIAAAMsAAAAEG1heHAASwBHAAABOAAAACBuYW1lBSeBwgAABWgAAAFucG9zdC+zMgMAAAbYAAAARQABAAAAAQAA8MQQT18PPPUACwIAAAAAAM9xeH8AAAAAz3F4fwAlACUB2wHbAAAA
34CAACAAAAAAAAAAEAAAHbAAAALgIAAAAAAAHbAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAAHAEQAAgAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAQIAAZAABQAIAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAIABQkAAAAAAACAAAABAAAAIAAAAAAAAAAAUGZFZABAAGEhkgHg/+AALgHb/9sAAAABAAAAAAAAAgAAAAAAAAACAAAAAgAAJQAlACUAJQAAAAAAAwAAAAMAAAAcAAEAAAAAAFwAAwABAAAAHAAEAEAAAAAMAAgAAgAEAAAAYSAiIZAhkv//AAAAAABhICIhkCGS//8AAP+l3+PedN5xAAEAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAIwAsAEWAAIAJQAlAdsB2wAYACwAAD8BNjQvASYjIg8BBhUUHwEHBhUUHwEWMzI2FAcGBwYiJyYnJjQ3Njc2MhcWF/GCBgaCBQcIBR0GBldXBgYdBQgH7x0eMjB8MDIeHR0eMjB8MDIecYIGDgaCBQUeBQcJBFhYBAkHBR4F0nwwMh4dHR4yMHwwMh4dHR4yAAAAAgAlACUB2wHbABgALAAAJTc2NTQvATc2NTQvASYjIg8BBhQfARYzMjYUBwYHBiInJicmNDc2NzYyFxYXASgdBgZXVwYGHQUIBwWCBgaCBQcIuB0eMjB8MDIeHR0eMjB8MDIecR4FBwkEWFgECQcFHgUFggYOBoIF0nwwMh4dHR4yMHwwMh4dHR4yAAABACUAJQHbAdsAEwAAABQHBgcGIicmJyY0NzY3NjIXFhcB2x0eMjB8MDIeHR0eMjB8MDIeAT58MDIeHR0eMjB8MDIeHR0eMgABACUAJQHbAdsAQwAAARUUBisBIicmPwEmIyIHBgcGBwYUFxYXFhcWMzI3Njc2MzIfARYVFAcGBwYjIicmJyYnJjQ3Njc2NzYzMhcWFzc2FxYB2woIgAsGBQkoKjodHBwSFAwLCwwUEhwcHSIeIBMGAQQDJwMCISspNC8mLBobFBERFBsaLCYvKicpHSUIDAsBt4AICgsLCScnCwwUEhwcOhwcEhQMCw8OHAMDJwMDAgQnFBQRFBsaLCZeJiwaGxQRDxEcJQgEBgAAAAAAAAwAlgABAAAAAAABAAUADAABAAAAAAACAAcAIgABAAAAAAADACEAbgABAAAAAAAEAAUAnAABAAAAAAAFAAsAugABAAAAAAAGAAUA0gADAAEECQABAAoAAAADAAEECQACAA4AEgADAAEECQADAEIAKgADAAEECQAEAAoAkAADAAEECQAFABYAogADAAEECQAGAAoAxgBzAGwAaQBjAGsAAHNsaWNrAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAHMAbABpAGMAawAgADoAIAAxADQALQA0AC0AMgAwADEANAAARm9udEZvcmdlIDIuMCA6IHNsaWNrIDogMTQtNC0yMDE0AABzAGwAaQBjAGsAAHNsaWNrAABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABzAGwAaQBjAGsAAHNsaWNrAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAgECAQMAhwBECmFycm93cmlnaHQJYXJyb3dsZWZ0AAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAwAGAAEABAAAAAIAAAAAAAEAAAAAzu7XsAAAAADPcXh/AAAAAM9xeH8=?#iefix) format("embedded-opentype"),url(data:font/woff;base64,d09GRk9UVE8AAAVkAAsAAAAAB1wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAAAi4AAAKbH/pWDkZGVE0AAAM4AAAAGgAAABxt0civR0RFRgAAA1QAAAAcAAAAIAAyAARPUy8yAAADcAAAAFIAAABgUBj/rmNtYXAAAAPEAAAAUAAAAWIiC0SwaGVhZAAABBQAAAAuAAAANgABMftoaGVhAAAERAAAABwAAAAkA+UCA2htdHgAAARgAAAADgAAAA4ESgBKbWF4cAAABHAAAAAGAAAABgAFUABuYW1lAAAEeAAAANwAAAFuBSeBwnBvc3QAAAVUAAAAEAAAACAAAwABeJw9ks9vEkEUx2cpWyeUoFYgNkHi2Wt7N3rVm3cTs3UVLC4LxIWEQvi1P3i7O1tYLJDAmlgKGEhQrsajf0j7J3jYTXrQWUrMJG+++b55n5e8NwwKBhHDMLv5kxT3ATEBxKBn3qOAl9zxHgb1MAPhHQgHkyF08Gr/L8B/Eb6zWnmCJ7AJVLubQOheArXvJ1A4EXi6j4I+Zg9F0QFKvsnlBCmXeve+sFEnb/nCptdtQ4QYhVFRAT1HrF8UQK/RL/SbmUbclsvGVFXRZKDHUE38cc4qpkbAAsuwiImvro+ufcfaOIQ6szlrmjRJDaKZKnbjN3GWKIbiIzRFUfCffuxxKOL+3LDlDVvx2TdxN84qZEsnhNBa6pgm2dAsnzbLsETdsmRFxUeHV4e+I2/ptN8TyqV8T3Dt29t7EYOuajVIw2y1Wy3M86w0zg/Fz2IvawmQAUHOVrPVfLkoScVynsqsTG0MGUs4z55nh3mnOJa+li+rl9WpPIcFfDubDeaDC+fLBdYN3QADzLauGfj4B6sZmq6CCpqmtSvF0qlUl2qf5AJIUCSlTqlb7lUG+LRfGzZGzZEyBgccMu6MuqPecNDvD4Y9Kjtj4gD+DsvKVMTcMdtqtZtmkzQstQvYje7Syep0PDSAhSOeHYXYWThEF//A/0YvYV1fSQtpKU5STtrhbQ444OtpKSWJIg3pOg8cBs7maTY1EZf07aq+hjWs7IWzdCYTGhb2CtZ47x+Uhx28AAB4nGNgYGBkAIJz765vANHnCyvqYTQAWnkHswAAeJxjYGRgYOADYgkGEGBiYARCFjAG8RgABHYAN3icY2BmYmCcwMDKwMHow5jGwMDgDqW/MkgytDAwMDGwcjKAQQMDAyOQUmCAgoA01xQGB4ZExUmMD/4/YNBjvP3/NgNEDQPjbbBKBQZGADfLDgsAAHicY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQzMCQqKClOUJz0/z9YHRLv/+L7D+8V3cuHmgAHjGwM6ELUByxUMIOZCmbgAAA5LQ8XeJxjYGRgYABiO68w73h+m68M3EwMIHC+sKIeTqsyqDLeZrwN5HIwgKUB/aYJUgAAeJxjYGRgYLzNwMCgx8QAAkA2IwMqYAIAMGIB7QIAAAACAAAlACUAJQAlAAAAAFAAAAUAAHicbY49asNAEIU/2ZJDfkiRIvXapU
34FCEqpcptABUrg3ZhEiQoKVfY9UqVLlGDlADpAT5e16IUWysMz3hjfzBrjjjQT/EjKpCy+4YhN5yZoxcirPe+SMWz4jr6S+5UzSa3VuwpTnBfc8RF7yxDZyKs9r5IxHPiKv1P9iZqDnyAvMQ39UecbScVb/gJO03Xk4CFom3XYK1clhMdQUlKo7/d9NF13RkIdfy+MV7TSe2sl11tRFaXYmJKpWTd7kdVnJ8veevZKc+n3I93t9Jnvr5n4aTVWU/0z9AI2qMkV4nGNgZkAGjAxoAAAAjgAF) format("woff"),url(data:font/ttf;base64,AAEAAAANAIAAAwBQRkZUTW3RyK8AAAdIAAAAHEdERUYANAAGAAAHKAAAACBPUy8yT/b9sgAAAVgAAABWY21hcCIPRb0AAAHIAAABYmdhc3D//wADAAAHIAAAAAhnbHlmP5u2YAAAAzwAAAIsaGVhZAABMfsAAADcAAAANmhoZWED5QIFAAABFAAAACRobXR4BkoASgAAAbAAAAAWbG9jYQD2AaIAAAMsAAAAEG1heHAASwBHAAABOAAAACBuYW1lBSeBwgAABWgAAAFucG9zdC+zMgMAAAbYAAAARQABAAAAAQAA8MQQT18PPPUACwIAAAAAAM9xeH8AAAAAz3F4fwAlACUB2wHbAAAACAACAAAAAAAAAAEAAAHbAAAALgIAAAAAAAHbAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAAHAEQAAgAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAQIAAZAABQAIAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAIABQkAAAAAAACAAAABAAAAIAAAAAAAAAAAUGZFZABAAGEhkgHg/+AALgHb/9sAAAABAAAAAAAAAgAAAAAAAAACAAAAAgAAJQAlACUAJQAAAAAAAwAAAAMAAAAcAAEAAAAAAFwAAwABAAAAHAAEAEAAAAAMAAgAAgAEAAAAYSAiIZAhkv//AAAAAABhICIhkCGS//8AAP+l3+PedN5xAAEAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAIwAsAEWAAIAJQAlAdsB2wAYACwAAD8BNjQvASYjIg8BBhUUHwEHBhUUHwEWMzI2FAcGBwYiJyYnJjQ3Njc2MhcWF/GCBgaCBQcIBR0GBldXBgYdBQgH7x0eMjB8MDIeHR0eMjB8MDIecYIGDgaCBQUeBQcJBFhYBAkHBR4F0nwwMh4dHR4yMHwwMh4dHR4yAAAAAgAlACUB2wHbABgALAAAJTc2NTQvATc2NTQvASYjIg8BBhQfARYzMjYUBwYHBiInJicmNDc2NzYyFxYXASgdBgZXVwYGHQUIBwWCBgaCBQcIuB0eMjB8MDIeHR0eMjB8MDIecR4FBwkEWFgECQcFHgUFggYOBoIF0nwwMh4dHR4yMHwwMh4dHR4yAAABACUAJQHbAdsAEwAAABQHBgcGIicmJyY0NzY3NjIXFhcB2x0eMjB8MDIeHR0eMjB8MDIeAT58MDIeHR0eMjB8MDIeHR0eMgABACUAJQHbAdsAQwAAARUUBisBIicmPwEmIyIHBgcGBwYUFxYXFhcWMzI3Njc2MzIfARYVFAcGBwYjIicmJyYnJjQ3Njc2NzYzMhcWFzc2FxYB2woIgAsGBQkoKjodHBwSFAwLCwwUEhwcHSIeIBMGAQQDJwMCISspNC8mLBobFBERFBsaLCYvKicpHSUIDAsBt4AICgsLCScnCwwUEhwcOhwcEhQMCw8OHAMDJwMDAgQnFBQRFBsaLCZeJiwaGxQRDxEcJQgEBgAAAAAAAAwAlgABAAAAAAABAAUADAABAAAAAAACAAcAIgABAAAAAAADACEAbgABAAAAAAAEAAUAnAABAAAAAAAFAAsAugABAAAAAAAGAAUA0gADAAEECQABAAoAAAADAAEECQACAA4AEgADAAEECQADAEIAKgADAAEECQAEAAoAkAADAAEECQAFABYAogADAAEECQAGAAoAxgBzAGwAaQBjAGsAAHNsaWNrAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAHMAbABpAGMAawAgADoAIAAxADQALQA0AC0AMgAwADEANAAARm9udEZvcmdlIDIuMCA6IHNsaWNrIDogMTQtNC0yMDE0AABzAGwAaQBjAGsAAHNsaWNrAABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABzAGwAaQBjAGsAAHNsaWNrAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAgECAQMAhwBECmFycm93cmlnaHQJYXJyb3dsZWZ0AAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAwAGAAEABAAAAAIAAAAAAAEAAAAAzu7XsAAAAADPcXh/AAAAAM9xeH8=) format("truetype"),url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLz4=#slick) format("svg")}.slick-next,.slick-prev{border:none;cursor:pointer;display:block;font-size:0;height:20px;line-height:0;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:20px}.slick-next,.slick-next:focus,.slick-next:hover,.slick-prev,.slick-prev:focus,.slick-prev:hover{background:transparent;color:transparent;outline:none}.slick-next:focus:before,.slick-next:hover:before,.slick-prev:focus:before,.slick-prev:hover:before{opacity:1}.slick-next.slick-disabled:before,.slick-prev.slick-disabled:before{opacity:.25}.slick-next:before,.slick-prev:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#fff;font-family:slick;font-size:20px;line-height:1;opacity:.75}.slick-prev{left:-25px}[dir=rtl] .slick-prev{left:auto;right:-25px}.slick-prev:before{content:"â"}[dir=rtl] .slick-prev:before{content:"â"}.slick-next{right:-25px}[dir=rtl] .slick-next{left:-25px;right:auto}.slick-next:before{content:"â"}[dir=rtl] .slick-next:before{content:"â"}.slick-dotted.slick-slider{margin-bottom:30px}.slick-dots{bottom:-25px;display:block;list-style:none;margin:0;padding:0;position:absolute;text-align:center;width:100%}.slick-dots li{display:inline-block;margin:0 5px;padding:0;position:relative}
34.slick-dots li,.slick-dots li button{cursor:pointer;height:20px;width:20px}.slick-dots li button{background:transparent;border:0;color:transparent;display:block;font-size:0;line-height:0;outline:none;padding:5px}.slick-dots li button:focus,.slick-dots li button:hover{outline:none}.slick-dots li button:focus:before,.slick-dots li button:hover:before{opacity:1}.slick-dots li button:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#000;content:"â¢";font-family:slick;font-size:6px;height:20px;left:0;line-height:20px;opacity:.25;position:absolute;text-align:center;top:0;width:20px}.slick-dots li.slick-active button:before{color:#000;opacity:.75}.slick-slider{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;box-sizing:border-box;touch-action:pan-y;-webkit-user-select:none;user-select:none;-khtml-user-select:none}.slick-list,.slick-slider{display:block;position:relative}.slick-list{margin:0;overflow:hidden;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{transform:translateZ(0)}.slick-track{display:block;left:0;margin-left:auto;margin-right:auto;position:relative;top:0}.slick-track:after,.slick-track:before{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{border:1px solid transparent;display:block;height:auto}.slick-arrow.slick-hidden{display:none}</style><style data-styled="" data-styled-version="6.4.1">.idZSLk{max-width:100%;width:8px;height:8px;}/*!sc*/ 35.ijOdlI{max-width:100%;width:64px;height:64px;}/*!sc*/ 36data-styled.g1[id="SvgIcon__StyledSvgIcon-sc-pvlift-0"]{content:"idZSLk,ijOdlI,"}/*!sc*/ 37.bDxWJp{padding-bottom:104px;}/*!sc*/ 38@media (max-width:51.125em){.bDxWJp{padding-top:150px;padding-bottom:80px;}}/*!sc*/ 39data-styled.g2[id="Hero-sc-sp7ovf-0"]{content:"bDxWJp,"}/*!sc*/ 40.bHoJxm{border-radius:32px;border-color:transparent;box-shadow:none;background-color:#EE2B16;padding:10px 35px;color:#fff;font-weight:500;cursor:pointer;}/*!sc*/ 41.bHoJxm:hover{color:white;background-color:#fd503d;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 42data-styled.g4[id="Button__ButtonLink-sc-xxhl33-1"]{content:"bHoJxm,"}/*!sc*/ 43.eoieIP{border-radius:32px;border-color:transparent;box-shadow:none;background-color:#EE2B16;padding:10px 35px;color:#fff;font-weight:500;cursor:pointer;}/*!sc*/ 44.eoieIP:hover{color:white;background-color:#fd503d;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 45data-styled.g5[id="Button__ButtonGatsbyLink-sc-xxhl33-2"]{content:"eoieIP,"}/*!sc*/ 46.hwslQr{border-radius:32px;border-color:#B11100;border-width:2px;border-style:solid;box-shadow:none;background-color:transparent;padding:10px 35px;color:#B11100;font-weight:500;cursor:pointer;}/*!sc*/ 47.hwslQr:hover{border-color:#EE2B16;}/*!sc*/ 48data-styled.g7[id="Button__ButtonOutlinedLink-sc-xxhl33-4"]{content:"hwslQr,"}/*!sc*/ 49.Idquw{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-text-decoration:none;text-decoration:none;font-weight:600;box-sizing:border-box;padding:calc(20px - 2px);padding-left:40px;padding-right:32px;font-size:18px;line-height:24px;}/*!sc*/ 50.Idquw>*{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}/*!sc*/ 51.Idquw svg{width:24px;height:24px;margin-left:16px;}/*!sc*/ 52@media (max-width:64.25em){.Idquw{padding:calc(12px - 2px);padding-left:32px;padding-right:24px;font-size:16px;line-height:24px;}.Idquw svg{width:20px;height:20px;margin-left:16px;}}/*!sc*/ 53@media (max-width:51.125em){.Idquw{padding:calc(8px - 2px);padding-left:24px;padding-right:16px;font-size:14px;line-height:24px;}.Idquw svg{width:16px;height:16px;margin-left:8px;}}/*!sc*/ 54@media (max-width:38em){.Idquw{font-size:13px;line-height:16px;padding:calc(8px - 2px);padding-left:16px;padding-right:16px;}.Idquw svg{width:16px;height:16px;margin-left:8px;}}/*!sc*/ 55data-styled.g10[id="GoToButton__GoToButtonStyled-sc-1abjbqg-0"]{content:"Idquw,"}/*!sc*/ 56.bkbNNW{font-weight:900;}/*!sc*/ 57.bkbNNW,.bkbNNW *{font-size:44px;line-height:56px;}/*!sc*/ 58@media (max-width:51.125em){.bkbNNW,.bkbNNW *{font-size:26px;line-height:32px;}}/*!sc*/ 59data-styled.g13[id="H1-sc-hj2kha-0"]{content:"bkbNNW,"}
59/*!sc*/ 60.QTrsV{font-weight:900;}/*!sc*/ 61.QTrsV,.QTrsV *{font-size:36px;line-height:48px;}/*!sc*/ 62@media (max-width:51.125em){.QTrsV,.QTrsV *{font-size:26px;line-height:32px;}}/*!sc*/ 63data-styled.g14[id="H2-sc-1u39ok0-0"]{content:"QTrsV,"}/*!sc*/ 64.jrMOUV{font-weight:800;}/*!sc*/ 65.jrMOUV,.jrMOUV *{font-size:26px;line-height:32px;}/*!sc*/ 66@media (max-width:51.125em){.jrMOUV,.jrMOUV *{font-size:22px;line-height:32px;}}/*!sc*/ 67data-styled.g15[id="H3-sc-1emy8q1-0"]{content:"jrMOUV,"}/*!sc*/ 68.bcZTSE{font-weight:800;}/*!sc*/ 69.bcZTSE,.bcZTSE *{font-size:22px;line-height:32px;}/*!sc*/ 70@media (max-width:51.125em){.bcZTSE,.bcZTSE *{font-size:18px;line-height:24px;}}/*!sc*/ 71data-styled.g16[id="H4-sc-k1osi8-0"]{content:"bcZTSE,"}/*!sc*/ 72.dIDHqE{font-weight:600;}/*!sc*/ 73.dIDHqE,.dIDHqE *{font-size:16px;line-height:24px;}/*!sc*/ 74@media (max-width:51.125em){.dIDHqE,.dIDHqE *{font-size:14px;line-height:24px;}}/*!sc*/ 75data-styled.g18[id="H6-sc-1fqdyt3-0"]{content:"dIDHqE,"}/*!sc*/ 76.fduduP{font-size:18px;line-height:32px;}/*!sc*/ 77@media (max-width:64.25em){.fduduP{font-size:16px;line-height:24px;}}/*!sc*/ 78@media (max-width:51.125em){.fduduP{font-size:16px;line-height:24px;}}/*!sc*/ 79@media (max-width:38em){.fduduP{font-size:16px;line-height:24px;}}/*!sc*/ 80data-styled.g19[id="P-sc-2fe20n-0"]{content:"fduduP,"}/*!sc*/ 81@media (max-width:38em){.cFpblv{padding-left:32px!important;padding-right:32px!important;}}/*!sc*/ 82data-styled.g21[id="Container__ContainerWrapper-sc-azyjet-0"]{content:"cFpblv,"}/*!sc*/ 83.dBncPp{height:64px;width:199px;}/*!sc*/ 84data-styled.g32[id="IconShakacode__HeaderIconShakacode-sc-1df0ktu-0"]{content:"dBncPp,"}/*!sc*/ 85.kmesXN{height:48px;width:149px;}/*!sc*/ 86data-styled.g33[id="IconShakacode__FooterIconShakacode-sc-1df0ktu-1"]{content:"kmesXN,"}/*!sc*/ 87@media (max-width:38em){.eMtYwd{padding-left:32px!important;padding-right:32px!important;}}/*!sc*/ 88data-styled.g42[id="Col__ColWrapper-sc-1891fgc-0"]{content:"eMtYwd,"}/*!sc*/ 89@media (max-width:38em){.dEimrw{margin-left:-32px!important;margin-right:-32px!important;}}/*!sc*/ 90data-styled.g43[id="Row__RowWrapper-sc-1hye4yz-0"]{content:"dEimrw,"}/*!sc*/ 91.JyRY{border-radius:16px;background-color:#f6fbfc;margin:0 15px;}/*!sc*/ 92@media (max-width:38em){.JyRY{margin:0 8px;}}/*!sc*/ 93data-styled.g44[id="BlueContainer__BlueWrapper-sc-10n4nd7-0"]{content:"JyRY,"}/*!sc*/ 94.bgWeJJ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 12px;background:transparent;border:1px solid #D9E1E3;border-radius:6px;cursor:pointer;font-size:14px;color:#1f2323;-webkit-transition:all 0.2s ease;transition:all 0.2s ease;white-space:nowrap;}/*!sc*/ 95.bgWeJJ:hover{background:#ADBBBF;border-color:#1f2323;}/*!sc*/ 96@media (max-width:51.125em){.bgWeJJ{display:none;}}/*!sc*/ 97data-styled.g46[id="SearchTrigger__DesktopBadge-sc-1ayqg8r-0"]{content:"bgWeJJ,"}/*!sc*/ 98.iNWavl{padding:2px 6px;background:white;border:1px solid #D9E1E3;border-radius:4px;font-size:12px;font-family:monospace;color:#181E1F;box-shadow:0 1px 2px rgba(0,0,0,0.1);}/*!sc*/ 99data-styled.g47[id="SearchTrigger__KeyboardShortcut-sc-1ayqg8r-1"]{content:"iNWavl,"}/*!sc*/ 100.kscFKW{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:36px;height:36px;background:transparent;border:1px solid #D9E1E3;border-radius:6px;cursor:pointer;color:#1f2323;-webkit-transition:all 0.2s ease;transition:all 0.2s ease;padding:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}/*!sc*/ 101.kscFKW:hover{background:#ADBBBF;border-color:#1f2323;}/*!sc*/ 102.kscFKW svg{width:18px;height:18px;stroke:currentColor;stroke-width:2;fill:none;}/*!sc*/ 103@media (max-width:51.125em){.kscFKW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}/*!sc*/ 104data-styled.g48[id="SearchTrigger__MobileButton-sc-1ayqg8r-2"]{content:"kscFKW,"}/*!sc*/ 105.dmMQXT{position:relative;}/*!sc*/ 106data-styled.g49[id="SearchTrigger__TooltipContainer-sc-1ayqg8r-3"]{content:"dmMQXT,"}/*!sc*/ 107.csnytt{position:absolute;top:calc(100% + 8px);right:0;background:#181E1F;color:white;padding:12px 16px;border-radius:6px;font-size:13px;white-space:nowrap;opacity:0;visibility:hidden;-webkit-transition:opacity 0.3s ease,visibility 0.3s ease;transition:opacity 0.3s ease,visibility 0.3s ease;box-shadow:0 4px 12px rgba(0,0,0,0.15);z-index:1000;}/*!sc*/ 108.csnytt::before{content:"";position:absolute;top:-6px;right:20px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #181E1F;}/*!sc*/ 109@media (max-width:51.125em){.csnytt{display:none;}}/*!sc*/ 110data-styled.g50[id="SearchTrigger__Tooltip-sc-1ayqg8r-4"]{content:"csnytt,"}/*!sc*/ 111.bDlPnM{margin-left:12px;background:none;border:none;color:white;cursor:pointer;font-size:16px;padding:0;opacity:0.7;-webkit-transition:opacity 0.2s ease;transition:opacity 0.2s ease;}/*!sc*/ 112.bDlPnM:hover{opacity:1;}/*!sc*/ 113data-styled.g51[id="SearchTrigger__TooltipClose-sc-1ayqg8r-5"]{content:"bDlPnM,"}/*!sc*/ 114.jbxYoX{color:#181E1F;font-weight:700;font-size:16px;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 115.jbxYoX svg{margin-left:5px;}/*!sc*/ 116.jbxYoX:hover{color:#B11100;}/*!sc*/ 117data-styled.g87[id="MenuLinkTitle__StyledLink-sc-7z8r-0"]{content:"jbxYoX,"}/*!sc*/ 118.ebTCDI{position:relative;}/*!sc*/ 119data-styled.g88[id="MenuLinkTitle__Title-sc-7z8r-1"]{content:"ebTCDI,"}/*!sc*/ 120.gxtYTm{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ 121data-styled.g89[id="MenuLink__MenuLinkWrapper-sc-1rlzywk-0"]{content:"gxtYTm,"}/*!sc*/ 122.fAhcEw{font-size:16px;font-family:"Open Sans",sans-serif;font-weight:600;padding-top:12px;padding-bottom:12px;}/*!sc*/ 123data-styled.g91[id="Menu__StyledButton-sc-1pnmqk0-0"]{content:"fAhcEw,"}/*!sc*/ 124.jlWwFw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;}/*!sc*/ 125data-styled.g92[id="Menu__MenuWrapper-sc-1pnmqk0-1"]{content:"jlWwFw,"}/*!sc*/ 126.bJjXbU{height:24px;width:24px;}/*!sc*/ 127data-styled.g98[id="MobileMenu__StyledIconBurger-sc-1ywfcxj-2"]{content:"bJjXbU,"}/*!sc*/ 128.pgplX{width:100%;z-index:100;padding-bottom:50px;}/*!sc*/ 129@media (max-width:51.125em){.pgplX{background:white;position:fixed;top:0px;padding-bottom:0;width:calc(100% - 30px);}}/*!sc*/ 130@media (max-width:38em){.pgplX{width:calc(100% - 16px);}}
130/*!sc*/ 131data-styled.g100[id="Header__StyledHeader-sc-1f99kj7-0"]{content:"pgplX,"}/*!sc*/ 132.iSlMMd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ 133data-styled.g101[id="Header__LeftCol-sc-1f99kj7-1"]{content:"iSlMMd,"}/*!sc*/ 134.loKBBo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;gap:8px;}/*!sc*/ 135data-styled.g102[id="Header__RightCol-sc-1f99kj7-2"]{content:"loKBBo,"}/*!sc*/ 136.ftanBx{padding-top:56px;}/*!sc*/ 137@media (max-width:51.125em){.ftanBx{padding-top:40px;}}/*!sc*/ 138data-styled.g103[id="Header__StyledContainer-sc-1f99kj7-3"]{content:"ftanBx,"}/*!sc*/ 139@media (max-width:51.125em){.kGenTA{height:40px;width:170px;}}/*!sc*/ 140data-styled.g104[id="Header__StyledLogo-sc-1f99kj7-4"]{content:"kGenTA,"}/*!sc*/ 141.ieckEi{display:contents;}/*!sc*/ 142@media (max-width:51.125em){.ieckEi{display:none;}}/*!sc*/ 143data-styled.g105[id="Header__DesktopOnly-sc-1f99kj7-5"]{content:"ieckEi,"}/*!sc*/ 144.iKaCix{display:none;}/*!sc*/ 145@media (max-width:51.125em){.iKaCix{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;}}/*!sc*/ 146data-styled.g106[id="Header__MobileOnly-sc-1f99kj7-6"]{content:"iKaCix,"}/*!sc*/ 147.gddtoa{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}/*!sc*/ 148data-styled.g107[id="Header__StyledMobileMenu-sc-1f99kj7-7"]{content:"gddtoa,"}/*!sc*/ 149body{font-family:"Open Sans",sans-serif;color:#181E1F;letter-spacing:0;font-size:18px;line-height:32px;margin:0;}/*!sc*/ 150@media (max-width:64.25em){body{font-size:16px;line-height:24px;}}/*!sc*/ 151@media (max-width:51.125em){body{font-size:16px;line-height:24px;}}/*!sc*/ 152@media (max-width:38em){body{font-size:16px;line-height:24px;}}/*!sc*/ 153h1,h2,h3,h4,h5,h6{font-family:"Open Sans",sans-serif;}/*!sc*/ 154h1 .anchor,h2 .anchor,h3 .anchor,h4 .anchor{display:none;}/*!sc*/ 155@media only screen and (min-width:1028px){h1:hover .anchor,h2:hover .anchor,h3:hover .anchor,h4:hover .anchor{position:absolute;left:0;display:unset;}}/*!sc*/ 156a{color:#B11100;font-weight:600;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 157a:hover{color:#EE2B16;-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 158img{margin:0;}/*!sc*/ 159img.maxWidth100{max-width:100%;}/*!sc*/ 160@media (prefers-color-scheme:dark){.markdown-alert{--color-border-default:#30363d;--color-accent-fg:#58a6ff;--color-accent-emphasis:#1f6feb;--color-danger-fg:#f85149;--color-danger-emphasis:#da3633;--color-attention-fg:#d29922;--color-attention-emphasis:#9e6a03;--color-done-fg:#a371f7;--color-done-emphasis:#8957e5;--color-success-fg:#3fb950;--color-success-emphasis:#238636;}}/*!sc*/ 161@media (prefers-color-scheme:light){.markdown-alert{--color-border-default:#d0d7de;--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-danger-fg:#d1242f;--color-danger-emphasis:#cf222e;--color-attention-fg:#9a6700;--color-attention-emphasis:#9a6700;--color-done-fg:#8250df;--color-done-emphasis:#8250df;--color-success-fg:#1a7f37;--color-success-emphasis:#1f883d;}}/*!sc*/ 162.markdown-alert{border-left:.25em solid var(--borderColor-default,var(--color-border-default));color:inherit;margin-bottom:16px;padding:.5rem 1em;}/*!sc*/ 163.markdown-alert>:last-child{margin-bottom:0!important;}/*!sc*/ 164.markdown-alert .markdown-alert-title{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:14px;font-weight:500;line-height:1;}/*!sc*/ 165.markdown-alert .markdown-alert-title svg.octicon{margin-right:8px!important;margin-right:var(--base-size-8,8px)!important;fill:currentColor;}/*!sc*/ 166.markdown-alert.markdown-alert-note{border-left-color:var(--borderColor-accent-emphasis,var(--color-accent-emphasis));}/*!sc*/ 167.markdown-alert.markdown-alert-note .markdown-alert-title{color:var(--color-accent-fg);color:var(--fgColor-accent,var(--color-accent-fg));}/*!sc*/ 168.markdown-alert.markdown-alert-tip{border-left-color:var(--borderColor-success-emphasis,var(--color-success-emphasis));}/*!sc*/ 169.markdown-alert.markdown-alert-tip .markdown-alert-title{color:var(--color-success-fg);color:var(--fgColor-success,var(--color-success-fg));}/*!sc*/ 170.markdown-alert.markdown-alert-important{border-left-color:var(--borderColor-done-emphasis,var(--color-done-emphasis));}/*!sc*/ 171.markdown-alert.markdown-alert-important .markdown-alert-title{color:var(--color-done-fg);color:var(--fgColor-done,var(--color-done-fg));}/*!sc*/ 172.markdown-alert.markdown-alert-warning{border-left-color:var(--borderColor-attention-emphasis,var(--color-attention-emphasis));}/*!sc*/ 173.markdown-alert.markdown-alert-warning .markdown-alert-title{color:var(--color-attention-fg);color:var(--fgColor-attention,var(--color-attention-fg));}/*!sc*/ 174.markdown-alert.markdown-alert-caution{border-left-color:var(--borderColor-danger-emphasis,var(--color-danger-emphasis));}/*!sc*/ 175.markdown-alert.markdown-alert-caution .markdown-alert-title{color:var(--color-danger-fg);color:var(--fgColor-danger,var(--color-danger-fg));}/*!sc*/ 176data-styled.g108[id="sc-global-kwGRQb"]{content:"sc-global-kwGRQb1,"}/*!sc*/ 177.bZPpoQ{margin-top:64px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}/*!sc*/ 178.bZPpoQ a{font-weight:400;}/*!sc*/
179data-styled.g109[id="Footer__FooterRow-sc-12ia8lp-0"]{content:"bZPpoQ,"}/*!sc*/ 180.eYKAGK{padding:30px 0 50px 0;font-size:14px;color:#4E5B5E;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ 181.eYKAGK>*{-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;}/*!sc*/ 182@media (max-width:51.125em){.eYKAGK>*{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%;margin-bottom:15px;}}/*!sc*/ 183@media (max-width:51.125em){.eYKAGK{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}/*!sc*/ 184data-styled.g110[id="Footer__CopyrightSocialRow-sc-12ia8lp-1"]{content:"eYKAGK,"}/*!sc*/ 185.ldfdIq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;}/*!sc*/ 186data-styled.g111[id="Footer__FooterMeta-sc-12ia8lp-2"]{content:"ldfdIq,"}/*!sc*/ 187.koKcya{margin-top:0;margin-bottom:10px;color:#4E5B5E;font-weight:400;}/*!sc*/ 188data-styled.g112[id="Footer__ColumnHeader-sc-12ia8lp-3"]{content:"koKcya,"}/*!sc*/ 189.tHzLz{-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%;font-size:14px;color:#4E5B5E;}/*!sc*/ 190@media (max-width:51.125em){.tHzLz{-webkit-order:100;-ms-flex-order:100;order:100;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%;}}/*!sc*/ 191data-styled.g113[id="Footer__InfoCol-sc-12ia8lp-4"]{content:"tHzLz,"}/*!sc*/ 192.ZjBBa{margin:15px 0 13px 0;}/*!sc*/ 193data-styled.g114[id="Footer__CompanyDetails-sc-12ia8lp-5"]{content:"ZjBBa,"}/*!sc*/ 194.bbDMAr{margin:3px 0;font-weight:600;}/*!sc*/ 195data-styled.g115[id="Footer__CompanyNote-sc-12ia8lp-6"]{content:"bbDMAr,"}/*!sc*/ 196.hjcyZu{font-style:normal;margin:0;}/*!sc*/ 197data-styled.g116[id="Footer__Address-sc-12ia8lp-7"]{content:"hjcyZu,"}/*!sc*/ 198.ktsrTa{color:#b11100;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 199data-styled.g117[id="Footer__Phone-sc-12ia8lp-8"]{content:"ktsrTa,"}/*!sc*/ 200.jqtrRj{-webkit-flex:1 1 0;-ms-flex:1 1 0;flex:1 1 0;min-width:0;}/*!sc*/ 201@media (max-width:51.125em){.jqtrRj{margin-bottom:30px;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%;}}/*!sc*/ 202data-styled.g118[id="Footer__MenuCol-sc-12ia8lp-9"]{content:"jqtrRj,"}/*!sc*/ 203.fpKXnI{text-align:right;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}/*!sc*/ 204.fpKXnI svg{margin-left:16px;margin-right:0;width:32px;height:32px;}/*!sc*/ 205@media (max-width:51.125em){.fpKXnI{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}/*!sc*/ 206data-styled.g119[id="Footer__SocialCol-sc-12ia8lp-10"]{content:"fpKXnI,"}/*!sc*/ 207.gkRlql{list-style:none;padding:0;margin:0;}/*!sc*/ 208data-styled.g120[id="Footer__List-sc-12ia8lp-11"]{content:"gkRlql,"}/*!sc*/ 209.hJkTqS{margin-bottom:3px;}/*!sc*/ 210.hJkTqS a{color:#4E5B5E;-webkit-text-decoration:none;text-decoration:none;font-size:14px;}/*!sc*/ 211.hJkTqS a:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 212data-styled.g121[id="Footer__Item-sc-12ia8lp-12"]{content:"hJkTqS,"}/*!sc*/ 213.cKuXgv{color:#4E5B5E;}/*!sc*/ 214data-styled.g122[id="Footer__StyledLink-sc-12ia8lp-13"]{content:"cKuXgv,"}/*!sc*/ 215.fGCfCH{color:#4E5B5E;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 216.fGCfCH:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 217data-styled.g123[id="Footer__FooterMetaLink-sc-12ia8lp-14"]{content:"fGCfCH,"}/*!sc*/ 218.eihjKf{border:0;padding:0;background:transparent;font:inherit;color:#4E5B5E;cursor:pointer;}/*!sc*/ 219.eihjKf:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 220data-styled.g124[id="Footer__CookieSettingsButton-sc-12ia8lp-15"]{content:"eihjKf,"}/*!sc*/ 221.hOnBbQ{width:16px!important;height:16px!important;margin-right:8px!important;margin-left:0!important;}/*!sc*/ 222data-styled.g125[id="Footer__StyledIconSlack-sc-12ia8lp-16"]{content:"hOnBbQ,"}/*!sc*/ 223.goWloY{padding:8px 16px 8px 12px;width:137px;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;font-size:13px;line-height:16px;color:#343D3F;border:1px solid #88969a;}/*!sc*/ 224.goWloY:hover{color:#343D3F;border:1px solid #88969a;}/*!sc*/ 225data-styled.g126[id="Footer__StyledGoToButton-sc-12ia8lp-17"]{content:"goWloY,"}/*!sc*/ 226.erXvyi{background-color:#343D3F;padding:80px 0;}/*!sc*/ 227data-styled.g291[id="BookCall__BookCallWrapper-sc-kdkop6-0"]{content:"erXvyi,"}/*!sc*/ 228.ddFRte{-webkit-flex:0 0 70%;-ms-flex:0 0 70%;flex:0 0 70%;}/*!sc*/ 229@media (max-width:64.25em){.ddFRte{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;}}/*!sc*/ 230data-styled.g292[id="BookCall__LeftCol-sc-kdkop6-1"]{content:"ddFRte,"}/*!sc*/ 231.isQwiP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ 232@media (max-width:64.25em){.isQwiP{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}
232/*!sc*/ 233data-styled.g293[id="BookCall__BookCallContainer-sc-kdkop6-2"]{content:"isQwiP,"}/*!sc*/ 234.vJVYI{margin-left:auto;text-align:center;}/*!sc*/ 235.vJVYI a{-webkit-text-decoration:none;text-decoration:none;padding:17px 55px;font-weight:700;display:inline-block;}/*!sc*/ 236@media (max-width:38em){.vJVYI a{padding:11px 0;}}/*!sc*/ 237@media (max-width:64.25em){.vJVYI{margin-top:30px;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;}.vJVYI a{display:block;}}/*!sc*/ 238data-styled.g294[id="BookCall__RightCol-sc-kdkop6-3"]{content:"vJVYI,"}/*!sc*/ 239.dgrNdx{margin:0;color:#fff;}/*!sc*/ 240data-styled.g295[id="BookCall__StyledH3-sc-kdkop6-4"]{content:"dgrNdx,"}/*!sc*/ 241.kxZfzU{color:#fff;margin:20px 0 30px 0;}/*!sc*/ 242.kxZfzU a{color:#ee2b16;}/*!sc*/ 243data-styled.g296[id="BookCall__Description-sc-kdkop6-5"]{content:"kxZfzU,"}/*!sc*/ 244.dTBEkE{min-height:50px;}/*!sc*/ 245data-styled.g297[id="BookCall__ClutchWidgetSlot-sc-kdkop6-6"]{content:"dTBEkE,"}/*!sc*/ 246.knPJKz{display:block;font-weight:600;font-size:16px;line-height:24px;}/*!sc*/ 247@media (max-width:64.25em){.knPJKz{font-size:14px;line-height:24px;}}/*!sc*/ 248@media (max-width:51.125em){.knPJKz{font-size:14px;line-height:24px;}}/*!sc*/ 249@media (max-width:38em){.knPJKz{font-size:14px;line-height:24px;}}/*!sc*/ 250data-styled.g547[id="Person__Name-sc-mwt357-0"]{content:"knPJKz,"}/*!sc*/ 251.eKYVnM{font-size:14px;}/*!sc*/ 252.eKYVnM *{font-size:14px;line-height:24px;}/*!sc*/ 253@media (max-width:64.25em){.eKYVnM *{font-size:13px;line-height:16px;}}/*!sc*/ 254@media (max-width:51.125em){.eKYVnM *{font-size:13px;line-height:16px;}}/*!sc*/ 255@media (max-width:38em){.eKYVnM *{font-size:13px;line-height:16px;}}/*!sc*/ 256.eKYVnM a{color:#B11100;}/*!sc*/ 257.eKYVnM a:hover{color:#EE2B16;}/*!sc*/ 258data-styled.g548[id="Person__Position-sc-mwt357-1"]{content:"eKYVnM,"}/*!sc*/ 259.kNzMtF{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:-16px;margin-right:-16px;-webkit-box-flex-wrap:nowrap!important;-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important;color:#181E1F;}/*!sc*/ 260data-styled.g549[id="Person__Wrapper-sc-mwt357-2"]{content:"kNzMtF,"}/*!sc*/ 261.kwfRRv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:16px;}/*!sc*/ 262data-styled.g550[id="Person__PhotoCol-sc-mwt357-3"]{content:"kwfRRv,"}/*!sc*/ 263.jfowkV{width:64px;height:64px;}/*!sc*/ 264data-styled.g551[id="Person__PhotoWrapper-sc-mwt357-4"]{content:"jfowkV,"}/*!sc*/ 265.MjSeT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding-right:16px;padding-bottom:16px;}/*!sc*/ 266.MjSeT *{line-height:24px;}/*!sc*/ 267data-styled.g552[id="Person__PositionCol-sc-mwt357-5"]{content:"MjSeT,"}/*!sc*/ 268.crHMus{padding-top:68px;padding-bottom:68px;text-align:center;}/*!sc*/ 269data-styled.g977[id="AiAutomationBand__StyledContainer-sc-u4e3ra-0"]{content:"crHMus,"}/*!sc*/ 270.gEihPk{font-size:13px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:#4E5B5E;margin-bottom:14px;}/*!sc*/ 271data-styled.g978[id="AiAutomationBand__Eyebrow-sc-u4e3ra-1"]{content:"gEihPk,"}/*!sc*/ 272.fvDHZd{max-width:900px;margin:0 auto;font-size:44px;line-height:1.1;font-weight:800;letter-spacing:-1px;color:#343D3F;}/*!sc*/ 273@media (max-width:38em){.fvDHZd{font-size:30px;}}/*!sc*/ 274data-styled.g979[id="AiAutomationBand__Heading-sc-u4e3ra-2"]{content:"fvDHZd,"}/*!sc*/ 275.cWyqzY{max-width:680px;margin:18px auto 0;font-size:18px;line-height:1.6;color:#5a6b70;}/*!sc*/ 276@media (max-width:38em){.cWyqzY{font-size:16px;}}/*!sc*/ 277data-styled.g980[id="AiAutomationBand__Intro-sc-u4e3ra-3"]{content:"cWyqzY,"}/*!sc*/ 278.bwQtom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:16px;margin-top:28px;}/*!sc*/
279.bwQtom a{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 280@media (max-width:38em){.bwQtom{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/ 281data-styled.g981[id="AiAutomationBand__Actions-sc-u4e3ra-4"]{content:"bwQtom,"}/*!sc*/ 282.hTSTSX{max-width:900px;margin:18px auto 0;font-size:16px;line-height:1.6;color:#5a6b70;}/*!sc*/ 283data-styled.g982[id="AiAutomationBand__DeveloperNote-sc-u4e3ra-5"]{content:"hTSTSX,"}/*!sc*/ 284.jejSUD{font-weight:700;color:#B11100;}/*!sc*/ 285.jejSUD:hover{color:#D31A06;}/*!sc*/ 286data-styled.g983[id="AiAutomationBand__ShakaLink-sc-u4e3ra-6"]{content:"jejSUD,"}/*!sc*/ 287.esERWX{display:block;color:#4E5B5E;padding-bottom:24px;text-transform:uppercase;font-size:44px;line-height:1.2;text-align:center;}/*!sc*/ 288@media (max-width:38em){.esERWX{font-size:28px;}}/*!sc*/ 289data-styled.g984[id="SectionTitle__Title-sc-mayt3a-0"]{content:"esERWX,"}/*!sc*/ 290.icVwJQ{padding-top:68px;padding-bottom:68px;}/*!sc*/ 291data-styled.g985[id="Faq__StyledContainer-sc-agq0qi-0"]{content:"icVwJQ,"}/*!sc*/ 292.ciCMSL{margin-top:30px;width:100%;padding:0 16px;}/*!sc*/ 293@media (max-width:38em){.ciCMSL{padding:0;}}/*!sc*/ 294data-styled.g986[id="Faq__QuestionContainer-sc-agq0qi-1"]{content:"ciCMSL,"}/*!sc*/ 295.gKlxoW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:space-between;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:30px;margin-bottom:10px;cursor:pointer;}/*!sc*/ 296data-styled.g987[id="Faq__QuestionToggle-sc-agq0qi-2"]{content:"gKlxoW,"}/*!sc*/ 297.gaZoJx{margin:0!important;font-size:24px;line-height:32px;}/*!sc*/ 298@media (max-width:38em){.gaZoJx{font-size:20px;line-height:28px;}}/*!sc*/ 299data-styled.g988[id="Faq__QuestionTitle-sc-agq0qi-3"]{content:"gaZoJx,"}/*!sc*/ 300.iBssYZ{-webkit-transition:max-height 0.4s ease,opacity 0.4s ease;transition:max-height 0.4s ease,opacity 0.4s ease;margin:0!important;overflow:hidden;color:#343d3f;font-size:20px;line-height:30px;}/*!sc*/ 301@media (max-width:38em){.iBssYZ{font-size:18px;line-height:28px;}}/*!sc*/ 302data-styled.g989[id="Faq__Answer-sc-agq0qi-4"]{content:"iBssYZ,"}/*!sc*/ 303.hOciMN{padding-top:68px;padding-bottom:68px;}/*!sc*/ 304data-styled.g990[id="HowWeWork__StyledContainer-sc-1dgrjh1-0"]{content:"hOciMN,"}/*!sc*/ 305.lgPenq{text-align:center;margin-bottom:52px;}/*!sc*/ 306data-styled.g991[id="HowWeWork__Header-sc-1dgrjh1-1"]{content:"lgPenq,"}/*!sc*/ 307.llOLpQ{font-size:13px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:#88969a;margin-bottom:14px;}/*!sc*/ 308data-styled.g992[id="HowWeWork__Eyebrow-sc-1dgrjh1-2"]{content:"llOLpQ,"}/*!sc*/ 309.jXLyZO{font-size:44px;line-height:1.1;font-weight:800;letter-spacing:-1px;color:#343D3F;margin:0;}/*!sc*/ 310@media (max-width:38em){.jXLyZO{font-size:30px;}}/*!sc*/ 311data-styled.g993[id="HowWeWork__Heading-sc-1dgrjh1-3"]{content:"jXLyZO,"}/*!sc*/ 312.inZDyB{max-width:680px;margin:18px auto 0;font-size:18px;line-height:1.6;color:#5a6b70;}/*!sc*/ 313@media (max-width:38em){.inZDyB{font-size:16px;}}/*!sc*/ 314data-styled.g994[id="HowWeWork__Intro-sc-1dgrjh1-4"]{content:"inZDyB,"}/*!sc*/ 315.jIfyNl{display:-ms-grid;display:grid;-ms-grid-columns:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:24px;}/*!sc*/ 316@media (max-width:51.125em){.jIfyNl{-ms-grid-columns:repeat(2, 1fr);grid-template-columns:repeat(2, 1fr);}}/*!sc*/ 317@media (max-width:38em){.jIfyNl{-ms-grid-columns:1fr;grid-template-columns:1fr;}}/*!sc*/ 318data-styled.g995[id="HowWeWork__Grid-sc-1dgrjh1-5"]{content:"jIfyNl,"}/*!sc*/ 319.eDpJED{background:#f6fbfc;border-radius:16px;padding:28px;}/*!sc*/ 320data-styled.g996[id="HowWeWork__Card-sc-1dgrjh1-6"]{content:"eDpJED,"}/*!sc*/ 321.dgeQBN{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:space-between;
321-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:18px;}/*!sc*/ 322data-styled.g997[id="HowWeWork__CardTop-sc-1dgrjh1-7"]{content:"dgeQBN,"}/*!sc*/ 323.fHXsdD{width:52px;height:52px;background:#e8f4f8;border-radius:12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;font-size:26px;}/*!sc*/ 324data-styled.g998[id="HowWeWork__IconTile-sc-1dgrjh1-8"]{content:"fHXsdD,"}/*!sc*/ 325.hMOPoH{font-size:34px;font-weight:800;line-height:1;color:#d3dee1;}/*!sc*/ 326data-styled.g999[id="HowWeWork__Numeral-sc-1dgrjh1-9"]{content:"hMOPoH,"}/*!sc*/ 327.ejUPHO{font-size:18px;font-weight:700;color:#343D3F;margin:0 0 8px;}/*!sc*/ 328data-styled.g1000[id="HowWeWork__CardTitle-sc-1dgrjh1-10"]{content:"ejUPHO,"}/*!sc*/ 329.IGMgG{font-size:15px;line-height:1.6;color:#5a6b70;margin:0;}/*!sc*/ 330data-styled.g1001[id="HowWeWork__CardDescription-sc-1dgrjh1-11"]{content:"IGMgG,"}/*!sc*/ 331.cWvByT{font-weight:700;color:#B11100;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 332.cWvByT:hover{color:#EE2B16;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 333data-styled.g1002[id="HowWeWork__ShakaPerfLink-sc-1dgrjh1-12"]{content:"cWvByT,"}/*!sc*/ 334.jaaHTb{max-width:100%;margin-bottom:0;font-size:56px;line-height:68px;text-align:center;}/*!sc*/ 335@media (max-width:51.125em){.jaaHTb{font-size:40px;line-height:50px;}}/*!sc*/ 336@media (max-width:38em){.jaaHTb{font-size:32px;line-height:40px;}}/*!sc*/ 337data-styled.g1003[id="IndexHero__StyledH1-sc-1moizqv-0"]{content:"jaaHTb,"}/*!sc*/ 338.eqjPdf{max-width:100%;margin-bottom:0;font-size:36px;line-height:44px;text-align:center;}/*!sc*/ 339@media (max-width:51.125em){.eqjPdf{font-size:28px;line-height:36px;}}/*!sc*/ 340@media (max-width:38em){.eqjPdf{font-size:24px;line-height:30px;}}/*!sc*/ 341data-styled.g1004[id="IndexHero__StyledH2-sc-1moizqv-1"]{content:"eqjPdf,"}/*!sc*/ 342@media (max-width:51.125em){.bBNpWX{background-color:#f6fbfc;border-radius:16px;}}/*!sc*/ 343data-styled.g1005[id="IndexHero__StyledHeader-sc-1moizqv-2"]{content:"bBNpWX,"}/*!sc*/ 344.bMQPOM{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ 345data-styled.g1006[id="IndexHero__CenterCol-sc-1moizqv-3"]{content:"bMQPOM,"}/*!sc*/ 346.gCAOJx{margin:20px 0 8px;max-width:75%;font-size:26px;line-height:38px;text-align:center;}/*!sc*/ 347@media (max-width:51.125em){.gCAOJx{font-size:22px;line-height:34px;}}/*!sc*/ 348@media (max-width:38em){.gCAOJx{font-size:20px;line-height:30px;}}/*!sc*/ 349data-styled.g1007[id="IndexHero__StyledP-sc-1moizqv-4"]{content:"gCAOJx,"}/*!sc*/ 350.iBmjWh{margin:0 0 16px;max-width:75%;font-size:22px;line-height:38px;text-align:center;color:#EE2B16;font-weight:700;}/*!sc*/ 351@media (max-width:51.125em){.iBmjWh{font-size:20px;line-height:34px;}}/*!sc*/ 352@media (max-width:38em){.iBmjWh{font-size:18px;line-height:30px;}}/*!sc*/ 353data-styled.g1008[id="IndexHero__AccentP-sc-1moizqv-5"]{content:"iBmjWh,"}/*!sc*/ 354.byatQd{padding-bottom:60px;}/*!sc*/ 355data-styled.g1009[id="IndexHero__CompactHero-sc-1moizqv-6"]{content:"byatQd,"}/*!sc*/ 356.JiCrQ{display:none;font-size:inherit;line-height:inherit;font-weight:inherit;}/*!sc*/ 357@media (max-width:38em){.JiCrQ{display:inline;}}/*!sc*/ 358data-styled.g1010[id="IndexHero__MobileOnly-sc-1moizqv-7"]{content:"JiCrQ,"}/*!sc*/ 359.bSDPWt{display:inline;font-size:inherit;line-height:inherit;font-weight:inherit;}/*!sc*/ 360@media (max-width:38em){.bSDPWt{display:none;}}/*!sc*/ 361data-styled.g1011[id="IndexHero__DesktopOnly-sc-1moizqv-8"]{content:"bSDPWt,"}/*!sc*/ 362.ePgnYo{padding-top:68px;padding-bottom:68px;text-align:center;}/*!sc*/ 363data-styled.g1012[id="ByTheWay__StyledContainer-sc-1mdikp9-0"]{content:"ePgnYo,"}/*!sc*/ 364.bMTaWD{font-size:20px;line-height:1.6;max-width:700px;margin:0 auto 24px;}/*!sc*/ 365@media (max-width:38em){.bMTaWD{font-size:16px;}}/*!sc*/ 366data-styled.g1013[id="ByTheWay__Description-sc-1mdikp9-1"]{content:"bMTaWD,"}/*!sc*/ 367.hjGwzy{font-style:italic;padding-top:24px;padding-bottom:24px;margin:0;color:#444;}/*!sc*/ 368data-styled.g1014[id="Review__StyledParagraph-sc-18rm1r3-0"]{content:"hjGwzy,"}/*!sc*/ 369.fyziDI{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:545px;padding:40px;margin-left:16px;margin-right:16px;box-shadow:0 2px 10px rgba(0,0,0,0.1);border-radius:20px;background-color:white;}/*!sc*/ 370@media (max-width:51.125em){.fyziDI{max-width:600px;}}/*!sc*/ 371@media (max-width:38em){.fyziDI{padding:24px;}}/*!sc*/ 372data-styled.g1015[id="Review__Wrapper-sc-18rm1r3-1"]{content:"fyziDI,"}/*!sc*/ 373.ptnqb{margin-top:auto;}
373/*!sc*/ 374data-styled.g1016[id="Review__BottomSection-sc-18rm1r3-2"]{content:"ptnqb,"}/*!sc*/ 375.hOnljw{width:24px;height:24px;}/*!sc*/ 376data-styled.g1017[id="Review__StyledIconCaseStudy-sc-18rm1r3-3"]{content:"hOnljw,"}/*!sc*/ 377.hRmKFx{width:24px;height:24px;}/*!sc*/ 378data-styled.g1018[id="Review__StyledIconClutch-sc-18rm1r3-4"]{content:"hRmKFx,"}/*!sc*/ 379.giQFBd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:12px;margin-top:12px;-webkit-box-pack:justify;-ms-flex-pack:space-between;-webkit-justify-content:space-between;justify-content:space-between;color:#181E1F;font-size:16px;line-height:24px;}/*!sc*/ 380.giQFBd:hover{-webkit-text-decoration:none;text-decoration:none;color:#B11100;}/*!sc*/ 381.giQFBd:hover .Review__StyledIconCaseStudy-sc-18rm1r3-3 path,.giQFBd:hover .Review__StyledIconClutch-sc-18rm1r3-4 path{fill:#B11100;}/*!sc*/ 382data-styled.g1019[id="Review__ExternalLinkWrapper-sc-18rm1r3-5"]{content:"giQFBd,"}/*!sc*/ 383.ljLJpA{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:12px;margin-top:12px;-webkit-box-pack:justify;-ms-flex-pack:space-between;-webkit-justify-content:space-between;justify-content:space-between;color:#181E1F;font-size:16px;line-height:24px;}/*!sc*/ 384.ljLJpA:hover{-webkit-text-decoration:none;text-decoration:none;color:#B11100;}/*!sc*/ 385.ljLJpA:hover .Review__StyledIconCaseStudy-sc-18rm1r3-3 path,.ljLJpA:hover .Review__StyledIconClutch-sc-18rm1r3-4 path{fill:#B11100;}/*!sc*/ 386data-styled.g1020[id="Review__InternalLinkWrapper-sc-18rm1r3-6"]{content:"ljLJpA,"}/*!sc*/ 387.cUXMaH{margin-left:12px;}/*!sc*/ 388data-styled.g1021[id="Review__LinkName-sc-18rm1r3-7"]{content:"cUXMaH,"}/*!sc*/ 389.gOzjYr{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ 390data-styled.g1022[id="Review__LinkDetails-sc-18rm1r3-8"]{content:"gOzjYr,"}/*!sc*/ 391.dzENpA{width:100%;border-bottom:1px dashed #D9E1E3;}/*!sc*/ 392data-styled.g1023[id="Review__GreySeparatorLine-sc-18rm1r3-9"]{content:"dzENpA,"}/*!sc*/ 393.jnZyce{padding-top:68px;padding-bottom:100px;}/*!sc*/ 394data-styled.g1024[id="Reviews__StyledContainer-sc-1lf9pw0-0"]{content:"jnZyce,"}/*!sc*/ 395.dcsYOM{overflow:hidden;}/*!sc*/ 396data-styled.g1025[id="Reviews__Wrapper-sc-1lf9pw0-1"]{content:"dcsYOM,"}/*!sc*/ 397.evqnmc{display:block!important;}/*!sc*/ 398@media (max-width:38em){.evqnmc{margin-left:-16px!important;margin-right:-16px!important;}}/*!sc*/ 399@media (max-width:64.25em){.evqnmc .slick-slider{margin-left:32px;margin-right:32px;}}/*!sc*/ 400@media (max-width:38em){.evqnmc .slick-slider{margin-left:32px;margin-right:32px;}}/*!sc*/ 401.evqnmc .slick-list{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:-16px;}/*!sc*/ 402@media (max-width:51.125em){.evqnmc .slick-list{margin-left:0;}}/*!sc*/ 403.evqnmc .slick-track{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:10px 0 10px 10px;}/*!sc*/ 404@media (max-width:51.125em){.evqnmc .slick-track{margin-left:0;}}/*!sc*/ 405.evqnmc .slick-slide>div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;}/*!sc*/ 406.evqnmc .slick-prev{border:solid #333c3f!important;border-width:0 3px 3px 0!important;display:inline-block!important;padding:3px!important;-webkit-transform:rotate(135deg)!important;-moz-transform:rotate(135deg)!important;-ms-transform:rotate(135deg)!important;transform:rotate(135deg)!important;-webkit-transform:rotate(135deg)!important;}/*!sc*/ 407.evqnmc .slick-next{border:solid #333c3f!important;border-width:0 3px 3px 0!important;display:inline-block!important;padding:3px!important;-webkit-transform:rotate(-45deg)!important;-moz-transform:rotate(-45deg)!important;-ms-transform:rotate(-45deg)!important;transform:rotate(-45deg)!important;-webkit-transform:rotate(-45deg)!important;}/*!sc*/ 408.evqnmc .slick-next:before,.evqnmc .slick-prev:before{content:none!important;}/*!sc*/ 409data-styled.g1026[id="Reviews__StyledRow-sc-1lf9pw0-2"]{content:"evqnmc,"}/*!sc*/ 410.bLempW{padding-top:68px;padding-bottom:68px;}/*!sc*/ 411data-styled.g1027[id="ShakaStack__StyledContainer-sc-1dw8s15-0"]{content:"bLempW,"}/*!sc*/ 412.gFCxhm{margin:0 auto;max-width:720px;font-size:18px;line-height:1.6;text-align:center;}/*!sc*/ 413@media (max-width:38em){.gFCxhm{font-size:16px;}}/*!sc*/ 414data-styled.g1028[id="ShakaStack__Intro-sc-1dw8s15-1"]{content:"gFCxhm,"}/*!sc*/ 415.iseWgX{margin:16px 0 40px;text-align:center;font-weight:700;letter-spacing:1px;color:#4E5B5E;}/*!sc*/ 416data-styled.g1029[id="ShakaStack__Stages-sc-1dw8s15-2"]{content:"iseWgX,"}/*!sc*/
417.ggyCSc{display:-ms-grid;display:grid;-ms-grid-columns:repeat(5,minmax(0,1fr));grid-template-columns:repeat(5,minmax(0,1fr));gap:24px;}/*!sc*/ 418@media (max-width:64.25em){.ggyCSc{-ms-grid-columns:repeat(2, 1fr);grid-template-columns:repeat(2, 1fr);}}/*!sc*/ 419@media (max-width:38em){.ggyCSc{-ms-grid-columns:1fr;grid-template-columns:1fr;gap:16px;}}/*!sc*/ 420data-styled.g1030[id="ShakaStack__Grid-sc-1dw8s15-3"]{content:"ggyCSc,"}/*!sc*/ 421.gizkaU{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:28px 24px;border:2px solid #D9E1E3;border-top:4px solid #EE2B16;border-radius:8px;background:#fff;}/*!sc*/ 422.eCizwW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:28px 24px;border:2px solid #D9E1E3;border-top:4px solid #E67E22;border-radius:8px;background:#fff;}/*!sc*/ 423.bouIsD{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:28px 24px;border:2px solid #D9E1E3;border-top:4px solid #007C91;border-radius:8px;background:#fff;}/*!sc*/ 424.cNfcoM{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:28px 24px;border:2px solid #D9E1E3;border-top:4px solid #27AE60;border-radius:8px;background:#fff;}/*!sc*/ 425.bsocNf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:28px 24px;border:2px solid #D9E1E3;border-top:4px solid #2496ED;border-radius:8px;background:#fff;}/*!sc*/ 426data-styled.g1031[id="ShakaStack__Card-sc-1dw8s15-4"]{content:"gizkaU,eCizwW,bouIsD,cNfcoM,bsocNf,"}/*!sc*/ 427.hbnico{margin-bottom:8px;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#EE2B16;}/*!sc*/ 428.gvGbm{margin-bottom:8px;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#E67E22;}/*!sc*/ 429.kXRsoL{margin-bottom:8px;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#007C91;}/*!sc*/ 430.dCkNbc{margin-bottom:8px;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#27AE60;}/*!sc*/ 431.eVdyTf{margin-bottom:8px;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#2496ED;}/*!sc*/ 432data-styled.g1032[id="ShakaStack__Stage-sc-1dw8s15-5"]{content:"hbnico,gvGbm,kXRsoL,dCkNbc,eVdyTf,"}/*!sc*/ 433.jsJhXd{margin:0 0 12px;font-size:22px;}/*!sc*/ 434data-styled.g1033[id="ShakaStack__Product-sc-1dw8s15-6"]{content:"jsJhXd,"}/*!sc*/ 435.gplhPD{margin:0 0 20px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;font-size:16px;line-height:1.55;color:#4E5B5E;}/*!sc*/ 436data-styled.g1034[id="ShakaStack__Description-sc-1dw8s15-7"]{content:"gplhPD,"}/*!sc*/ 437.bYeVtU{margin-bottom:12px;font-size:13px;font-weight:600;color:#88969a;}/*!sc*/ 438data-styled.g1035[id="ShakaStack__Nature-sc-1dw8s15-8"]{content:"bYeVtU,"}/*!sc*/ 439.kfqEUF{font-size:15px;font-weight:700;color:#EE2B16;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 440.kfqEUF:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 441.fZEXRv{font-size:15px;font-weight:700;color:#E67E22;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 442.fZEXRv:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 443.dqnRZW{font-size:15px;font-weight:700;color:#007C91;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 444.dqnRZW:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 445.ircYFB{font-size:15px;font-weight:700;color:#27AE60;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 446.ircYFB:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 447.hUGpFm{font-size:15px;font-weight:700;color:#2496ED;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 448.hUGpFm:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 449data-styled.g1036[id="ShakaStack__CardLink-sc-1dw8s15-9"]{content:"kfqEU
449F,fZEXRv,dqnRZW,ircYFB,hUGpFm,"}/*!sc*/ 450.bEtlLE{margin-top:48px;text-align:center;}/*!sc*/ 451data-styled.g1037[id="ShakaStack__CtaWrapper-sc-1dw8s15-10"]{content:"bEtlLE,"}/*!sc*/ 452.kzQmkB{display:inline-block;padding:16px 44px;font-weight:700;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 453data-styled.g1038[id="ShakaStack__ExploreButton-sc-1dw8s15-11"]{content:"kzQmkB,"}/*!sc*/ 454.kOxVTt{padding-top:68px;padding-bottom:68px;}/*!sc*/ 455data-styled.g1040[id="TechnologyWeUse__StyledContainer-sc-vqmata-1"]{content:"kOxVTt,"}/*!sc*/ 456.dMMSpN{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:24px;margin-top:16px;}/*!sc*/ 457@media (max-width:38em){.dMMSpN{gap:16px;}}/*!sc*/ 458data-styled.g1041[id="TechnologyWeUse__TechGrid-sc-vqmata-2"]{content:"dMMSpN,"}/*!sc*/ 459.egwnZN{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:16px 24px;border:2px solid #D9E1E3;border-radius:8px;}/*!sc*/ 460.egwnZN svg{width:48px;height:48px;}/*!sc*/ 461@media (max-width:38em){.egwnZN{padding:12px 16px;}.egwnZN svg{width:36px;height:36px;}}/*!sc*/ 462data-styled.g1042[id="TechnologyWeUse__TechCard-sc-vqmata-3"]{content:"egwnZN,"}/*!sc*/ 463.bKsJNK{margin:0;font-size:20px;}/*!sc*/ 464@media (max-width:38em){.bKsJNK{font-size:16px;}}/*!sc*/ 465data-styled.g1043[id="TechnologyWeUse__TechName-sc-vqmata-4"]{content:"bKsJNK,"}/*!sc*/ 466.bWNJhI{font-size:24px;font-weight:700;color:#666;text-align:center;margin:32px 0 8px;}/*!sc*/ 467@media (max-width:38em){.bWNJhI{font-size:20px;}}/*!sc*/ 468data-styled.g1044[id="TechnologyWeUse__SubHeading-sc-vqmata-5"]{content:"bWNJhI,"}/*!sc*/ 469.iiwOKN{margin-top:16px;margin-bottom:0px;font-size:18px;line-height:1.6;text-align:center;max-width:700px;margin-left:auto;margin-right:auto;}/*!sc*/ 470@media (max-width:38em){.iiwOKN{font-size:16px;}}/*!sc*/ 471data-styled.g1045[id="TechnologyWeUse__Description-sc-vqmata-6"]{content:"iiwOKN,"}/*!sc*/ 472.WTrAF{list-style:none;padding:0;margin:0 auto 0px;max-width:700px;text-align:center;font-size:18px;line-height:1.6;}/*!sc*/ 473@media (max-width:38em){.WTrAF{font-size:16px;}}/*!sc*/ 474data-styled.g1046[id="TechnologyWeUse__BulletList-sc-vqmata-7"]{content:"WTrAF,"}/*!sc*/ 475.DTEQH{cursor:help;border-bottom:1px dashed #aaa;position:relative;}/*!sc*/ 476.DTEQH::after{content:attr(data-tip);position:absolute;left:50%;bottom:100%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);background:#333;color:white;font-size:14px;line-height:1.4;padding:8px 12px;border-radius:6px;white-space:normal;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:280px;pointer-events:none;opacity:0;-webkit-transition:opacity 0.2s;transition:opacity 0.2s;z-index:10;margin-bottom:8px;}/*!sc*/ 477@media (max-width:38em){.DTEQH::after{max-width:200px;}}/*!sc*/ 478.DTEQH:hover::after{opacity:1;}/*!sc*/ 479data-styled.g1047[id="TechnologyWeUse__Tip-sc-vqmata-8"]{content:"DTEQH,"}/*!sc*/ 480.SQzbr{margin-bottom:8px;}/*!sc*/ 481.SQzbr a{color:#e74c3c;-webkit-text-decoration:none;text-decoration:none;font-weight:600;}/*!sc*/ 482.SQzbr a:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 483data-styled.g1048[id="TechnologyWeUse__BulletItem-sc-vqmata-9"]{content:"SQzbr,"}/*!sc*/ 484.fmwzBH{font-size:24px;font-weight:700;color:#666;text-align:center;margin:32px 0 8px;}/*!sc*/ 485@media (max-width:38em){.fmwzBH{font-size:20px;}}/*!sc*/ 486data-styled.g1050[id="WhoAreWe__SubHeading-sc-10h2r5v-1"]{content:"fmwzBH,"}/*!sc*/ 487.eoRckl{padding-top:68px;padding-bottom:68px;}/*!sc*/ 488data-styled.g1051[id="WhoAreWe__StyledContainer-sc-10h2r5v-2"]{content:"eoRckl,"}/*!sc*/ 489.UFxOv{margin-top:16px;margin-bottom:0px;font-size:18px;line-height:1.6;text-align:center;max-width:700px;margin-left:auto;margin-right:auto;}/*!sc*/ 490@media (max-width:38em){.UFxOv{font-size:16px;}}/*!sc*/ 491data-styled.g1052[id="WhoAreWe__Description-sc-10h2r5v-3"]{content:"UFxOv,"}/*!sc*/ 492.gXlgDp{list-style:none;padding:0;margin:0 auto 0px;max-width:700px;text-align:left;font-size:18px;line-height:1.6;}/*!sc*/ 493@media (max-width:38em){.gXlgDp{font-size:16px;}}/*!sc*/ 494data-styled.g1053[id="WhoAreWe__BulletList-sc-10h2r5v-4"]{content:"gXlgDp,"}/*!sc*/ 495.bDfSBj{padding-left:24px;position:relative;margin-bottom:8px;}/*!sc*/ 496.bDfSBj::before{content:"";position:absolute;
496left:0;top:10px;width:8px;height:8px;border-radius:50%;background:#e74c3c;}/*!sc*/ 497.bDfSBj a{color:#e74c3c;-webkit-text-decoration:none;text-decoration:none;font-weight:600;}/*!sc*/ 498.bDfSBj a:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/ 499data-styled.g1054[id="WhoAreWe__BulletItem-sc-10h2r5v-5"]{content:"bDfSBj,"}/*!sc*/ 500.ljWtrD{position:-webkit-sticky;position:sticky;top:0;z-index:1000;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:12px 0;background:rgba(246,251,252,0.95);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 2px 8px rgba(0,0,0,0.08);}/*!sc*/ 501@media (max-width:51.125em){.ljWtrD{top:85px;}}/*!sc*/ 502data-styled.g1055[id="pages__StickyBar-sc-12s69b8-0"]{content:"ljWtrD,"}/*!sc*/ 503.cpvwrV{font-size:18px;font-weight:600;padding:16px 40px;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ 504@media (max-width:600px){.cpvwrV{font-size:14px;padding:4px 20px;}}/*!sc*/ 505data-styled.g1056[id="pages__StickyCTA-sc-12s69b8-1"]{content:"cpvwrV,"}/*!sc*/ 506.icvXuS{background:#f6fbfc;}/*!sc*/ 507.cxxRKy{background:transparent;}/*!sc*/ 508data-styled.g1057[id="pages__Section-sc-12s69b8-2"]{content:"icvXuS,cxxRKy,"}/*!sc*/ 509@media (max-width:51.125em){.cfMfnf [class*="ContainerWrapper"]{padding-left:12px!important;padding-right:12px!important;}.cfMfnf [class*="RowWrapper"]{margin-left:-12px!important;margin-right:-12px!important;}}/*!sc*/ 510data-styled.g1058[id="pages__CompactMobileGrid-sc-12s69b8-3"]{content:"cfMfnf,"}/*!sc*/ 511</style><style type="text/css"> 512 .anchor.before { 513 position: absolute; 514 top: 0; 515 left: 0; 516 transform: translateX(-100%); 517 padding-right: 4px; 518 } 519 .anchor.after { 520 display: inline-block; 521 padding-left: 4px; 522 } 523 h1 .anchor svg, 524 h2 .anchor svg, 525 h3 .anchor svg, 526 h4 .anchor svg, 527 h5 .anchor svg, 528 h6 .anchor svg { 529 visibility: hidden; 530 } 531 h1:hover .anchor svg, 532 h2:hover .anchor svg, 533 h3:hover .anchor svg, 534 h4:hover .anchor svg, 535 h5:hover .anchor svg, 536 h6:hover .anchor svg, 537 h1 .anchor:focus svg, 538 h2 .anchor:focus svg, 539 h3 .anchor:focus svg, 540 h4 .anchor:focus svg, 541 h5 .anchor:focus svg, 542 h6 .anchor:focus svg { 543 visibility: visible; 544 } 545 </style>
545<script> 546 document.addEventListener("DOMContentLoaded", function(event) { 547 var hash = window.decodeURI(location.hash.replace('#', '')) 548 if (hash !== '') { 549 var element = document.getElementById(hash) 550 if (element) { 551 var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop 552 var clientTop = document.documentElement.clientTop || document.body.clientTop || 0 553 var offset = element.getBoundingClientRect().top + scrollTop - clientTop 554 // Wait for the browser to finish rendering before scrolling. 555 setTimeout((function() { 556 window.scrollTo(0, offset - 10) 557 }), 0) 558 } 559 } 560 }) 561 </script>
561<style>.gatsby-image-wrapper{position:relative;overflow:hidden}.gatsby-image-wrapper picture.object-fit-polyfill{position:static!important}.gatsby-image-wrapper img{bottom:0;height:100%;left:0;margin:0;max-width:none;padding:0;position:absolute;right:0;top:0;width:100%;object-fit:cover}.gatsby-image-wrapper [data-main-image]{opacity:0;transform:translateZ(0);transition:opacity .25s linear;will-change:opacity}.gatsby-image-wrapper-constrained{display:inline-block;vertical-align:top}</style><noscript><style>.gatsby-image-wrapper noscript [data-main-image]{opacity:1!important}.gatsby-image-wrapper [data-placeholder-image]{opacity:0!important}</style></noscript>
561<script type="module">const e="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;e&&document.body.addEventListener("load",(function(e){const t=e.target;if(void 0===t.dataset.mainImage)return;if(void 0===t.dataset.gatsbyImageSsr)return;let a=null,n=t;for(;null===a&&n;)void 0!==n.parentNode.dataset.gatsbyImageWrapper&&(a=n.parentNode),n=n.parentNode;const o=a.querySelector("[data-placeholder-image]"),r=new Image;r.src=t.currentSrc,r.decode().catch((()=>{})).then((()=>{t.style.opacity=1,o&&(o.style.opacity=0,o.style.transition="opacity 500ms linear")}))}),!0);</script>
561<script type="application/ld+json" data-gatsby-head="true">{"@context":"https://schema.org","@type":"Organization","name":"ShakaCode","description":"ShakaCode is a US software consultancy, remote-first since 2011, best known for React on Rails. We build and maintain AI automations for mid-market companies with small IT teams and optimize web performance.","foundingDate":"2011","contactPoint":{"@type":"ContactPoint","contactType":"sales","email":"[email protected]"},"url":"https://shakacode.com/","logo":"https://shakacode.com/shakacode-og.png","sameAs":["https://github.com/shakacode","https://linkedin.com/company/shakacode","https://twitter.com/shakacode"]}</script>
561<script type="application/ld+json" data-gatsby-head="true">{"@context":"https://schema.org","@type":"WebSite","name":"Shakacode","url":"https://shakacode.com/"}</script>
561</head><body><noscript id="gatsby-noscript">This app works best with JavaScript enabled.</noscript><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><header><div class="BlueContainer__BlueWrapper-sc-10n4nd7-0 JyRY"><div class="Hero-sc-sp7ovf-0 IndexHero__CompactHero-sc-1moizqv-6 bDxWJp byatQd"><div class="Header__StyledHeader-sc-1f99kj7-0 pgplX IndexHero__StyledHeader-sc-1moizqv-2 bBNpWX"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 Header__StyledContainer-sc-1f99kj7-3 cFpblv ftanBx"><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:25%;flex-basis:25%;flex-grow:0;flex-shrink:0;max-width:25%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 Header__LeftCol-sc-1f99kj7-1 eMtYwd iSlMMd"><a aria-current="page" class="" href="/"><svg class="IconShakacode__HeaderIconShakacode-sc-1df0ktu-0 Header__StyledLogo-sc-1f99kj7-4 dBncPp kGenTA" viewBox="0 0 206 47" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-add-photo-_R_2kq_"><title id="svg-add-photo-_R_2kq_">Add Photo</title><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="b-shaka"><stop stop-color="#F32B05" offset="0%"></stop><stop stop-color="#B00012" offset="100%"></stop></linearGradient><linearGradient x1="50%" y1="24.608%" x2="50%" y2="72.622%" id="c-shaka"><stop stop-color="#FF6956" offset=".792%"></stop><stop stop-color="#FF6956" stop-opacity=".01" offset="96.579%"></stop></linearGradient><path d="M11.207 10h41.586a2 2 0 011.77 1.069l8.702 16.534a2 2 0 01-.453 2.437L33.317 55.848a2 2 0 01-2.634 0L1.188 30.04a2 2 0 01-.453-2.437l8.703-16.534A2 2 0 0111.208 10z" id="a-shaka"></path></defs><g fill="none" fill-rule="evenodd"><text font-family="'Montserrat Bold', Montserrat, 'Open Sans', Arial, sans-serif" font-size="20" font-weight="bold" fill="#333738" transform="translate(0 -10)"><tspan x="80" y="41">ShakaCode</tspan></text><g transform="translate(0 -10)"><path d="M0 0h64v64H0z"></path><mask id="d-shaka" fill="#fff"><use xlink:href="#a-shaka"></use></mask><use fill="url(#b-shaka)" xlink:href="#a-shaka"></use><path d="M7 43c22.118-2.144 33.57-6.578 34.354-13.303 1.178-10.088-17.4-1.454-20.927-1 9.658-7.17 22.018-11.721 37.08-13.652H66V57H7V43z" fill="url(#c-shaka)" mask="url(#d-s
561haka)"></path></g></g></svg></a></div><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:75%;flex-basis:75%;flex-grow:0;flex-shrink:0;max-width:75%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 Header__RightCol-sc-1f99kj7-2 eMtYwd loKBBo"><div class="Header__DesktopOnly-sc-1f99kj7-5 ieckEi"><div class="Menu__MenuWrapper-sc-1pnmqk0-1 jlWwFw"><div class="MenuLink__MenuLinkWrapper-sc-1rlzywk-0 gxtYTm"><span class="MenuLinkTitle__StyledLink-sc-7z8r-0 jbxYoX"><span class="MenuLinkTitle__Title-sc-7z8r-1 ebTCDI">About</span><svg color="lightGray" viewBox="0 0 8 5" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-chevron-down-_R_39ckq_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 idZSLk"><title id="svg-chevron-down-_R_39ckq_">Chevron down</title><path d="M1 0l3 3 3-3 1 1-4 4-4-4z" fill="#D9E1E3" fill-rule="evenodd"></path></svg></span></div><div class="MenuLink__MenuLinkWrapper-sc-1rlzywk-0 gxtYTm"><span class="MenuLinkTitle__StyledLink-sc-7z8r-0 jbxYoX"><span class="MenuLinkTitle__Title-sc-7z8r-1 ebTCDI">Services</span><svg color="lightGray" viewBox="0 0 8 5" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-chevron-down-_R_3ackq_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 idZSLk"><title id="svg-chevron-down-_R_3ackq_">Chevron down</title><path d="M1 0l3 3 3-3 1 1-4 4-4-4z" fill="#D9E1E3" fill-rule="evenodd"></path></svg></span></div><div class="MenuLink__MenuLinkWrapper-sc-1rlzywk-0 gxtYTm"><span class="MenuLinkTitle__StyledLink-sc-7z8r-0 jbxYoX"><span class="MenuLinkTitle__Title-sc-7z8r-1 ebTCDI">Portfolio</span><svg color="lightGray" viewBox="0 0 8 5" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-chevron-down-_R_3bckq_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 idZSLk"><title id="svg-chevron-down-_R_3bckq_">Chevron down</title><path d="M1 0l3 3 3-3 1 1-4 4-4-4z" fill="#D9E1E3" fill-rule="evenodd"></path></svg></span></div><div class="MenuLink__MenuLinkWrapper-sc-1rlzywk-0 gxtYTm"><span class="MenuLinkTitle__StyledLink-sc-7z8r-0 jbxYoX"><span class="MenuLinkTitle__Title-sc-7z8r-1 ebTCDI">Insights</span><svg color="lightGray" viewBox="0 0 8 5" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-chevron-down-_R_3cckq_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 idZSLk"><title id="svg-chevron-down-_R_3cckq_">Chevron down</title><path d="M1 0l3 3 3-3 1 1-4 4-4-4z" fill="#D9E1E3" fill-rule="evenodd"></path></svg></span></div><div class="MenuLink__MenuLinkWrapper-sc-1rlzywk-0 gxtYTm"><span class="MenuLinkTitle__StyledLink-sc-7z8r-0 jbxYoX"><span class="MenuLinkTitle__Title-sc-7z8r-1 ebTCDI">Docs</span><svg color="lightGray" viewBox="0 0 8 5" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-chevron-down-_R_3dckq_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 idZSLk"><title id="svg-chevron-down-_R_3dckq_">Chevron down</title><path d="M1 0l3 3 3-3 1 1-4 4-4-4z" fill="#D9E1E3" fill-rule="evenodd"></path></svg></span></div><div class="SearchTrigger__TooltipContainer-sc-1ayqg8r-3 dmMQXT"><button aria-label="Search documentation" class="SearchTrigger__DesktopBadge-sc-1ayqg8r-0 bgWeJJ"><span>Search</span><kbd class="SearchTrigger__KeyboardShortcut-sc-1ayqg8r-1 iNWavl">Ctrl+K</kbd></button><div class="SearchTrigger__Tooltip-sc-1ayqg8r-4 csnytt">Press <strong>Ctrl+K</strong> to search anytime<button class="SearchTrigger__TooltipClose-sc-1ayqg8r-5 bDlPnM">â</button></div></div><button aria-label="Search documentation" class="SearchTrigger__MobileButton-sc-1ayqg8r-2 kscFKW"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle cx="10.5" cy="10.5" r="7.5"></circle><line x1="16" y1="16" x2="21" y2="21" stroke-linecap="round"></line></svg></button><a href="https://meetings.hubspot.com/justingordon/30-minute-consultation" target="_blank" rel="noopener noreferrer" class="Button__ButtonLink-sc-xxhl33-1 Menu__StyledButton-sc-1pnmqk0-0 bHoJxm fAhcEw">Book a free call</a></div></div><div class="Header__MobileOnly-sc-1f99kj7-6 iKaCix"><div class="SearchTrigger__TooltipContainer-sc-1ayqg8r-3 dmMQXT"><button aria-label="Search documentation" class="SearchTrigger__DesktopBadge-sc-1ayqg8r-0 bgWeJJ"><span>Search</span><kbd class="SearchTrigger__KeyboardShortcut-sc-1ayqg8r-1 iNWavl">Ctrl+K</kbd></button><div class="SearchTrigger__Tooltip-sc-1ayqg8r-4 csnytt">Press <strong>Ctrl+K</strong> to search anytime<button class="SearchTrigger__TooltipClose-sc-1ayqg8r-5 bDlPnM">â</button></div></div><button aria-label="Search documentation" class="SearchTrigger__MobileButton-sc-1ayqg8r-2 kscFKW"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle cx="10.5" cy="10.5" r="7.5"></circle><line x1="16" y1="16" x2="21" y2="21" stroke-linecap="round"></line></svg></button><div class="Header__StyledMobileMenu-sc-1f99kj7-7 gddtoa"><svg color="darkerRed" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI MobileMenu__StyledIconBurger-sc-1ywfcxj-2 bJjXbU" viewBox="0 0 24 20" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-burger-_R_6kkq_"><title id="svg-burger-_R_6kkq_">Burger</title><path d="M14 16a2 2 0 110 4H2a2 2 0 110-4h12zm8-8a2 2 0 110 4H2a2 2 0 110-4h20zm0-8a2 2 0 110 4H2a2 2 0 110-4h20z" fill="#B11100" fill-rule="evenodd"></path></svg></div></div></div></div></div></div><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 cFpblv"><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:100%;flex-basis:100%;flex-grow:0;flex-shrink:0;max-width:100%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 IndexHero__CenterCol-sc-1moizqv-3 eMtYwd bMQPOM"><h1 class="H1-sc-hj2kha-0 IndexHero__StyledH1-sc-1moizqv-0 bkbNNW jaaHTb"><span class="IndexHero__DesktopOnly-sc-1moizqv-8 bSDPWt">We make slow web apps fast</span><span class="IndexHero__MobileOnly-sc-1moizqv-7 JiCrQ">We make web apps faster</span></h1><h2 class="H2-sc-1u39ok0-0 IndexHero__StyledH2-sc-1moizqv-1 QTrsV eqjPdf">Without breaking a thing</h2><p class="P-sc-2fe20n-0 IndexHero__StyledP-sc-1moizqv-4 fduduP gCAOJx">We optimize <strong>Web Vitals</strong>, <strong>Lighthouse</strong> & <strong>UX</strong>, then track every metric that matters - including <strong>SEO</strong> and<!-- --> <strong>Accessibility</strong>.</p><p class="P-sc-2fe20n-0 IndexHero__AccentP-sc-1moizqv-5 fduduP iBmjWh">And we lock in the gains, so regressions never come back.</p></div></div></div></div></div></header><main>
561<div class="pages__CompactMobileGrid-sc-12s69b8-3 cfMfnf"><div class="pages__StickyBar-sc-12s69b8-0 ljWtrD"><a class="Button__ButtonGatsbyLink-sc-xxhl33-2 pages__StickyCTA-sc-12s69b8-1 eoieIP cpvwrV" href="/contact/">Schedule a Free Performance Audit</a></div><div class="pages__Section-sc-12s69b8-2 icvXuS"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 AiAutomationBand__StyledContainer-sc-u4e3ra-0 cFpblv crHMus"><div class="AiAutomationBand__Eyebrow-sc-u4e3ra-1 gEihPk">New</div><h2 class="AiAutomationBand__Heading-sc-u4e3ra-2 fvDHZd">AI automation for companies with a small IT team</h2><p class="AiAutomationBand__Intro-sc-u4e3ra-3 cWyqzY">Your AI training is done and the automations already broke? We fix them, automate one process at a time on your own infrastructure, and keep them running. We build the same systems for ourselves: our Slack agent is on the Slack Marketplace, and our own outreach runs on an agent that never sends without a person's approval.</p><div class="AiAutomationBand__Actions-sc-u4e3ra-4 bwQtom"><a class="Button__ButtonGatsbyLink-sc-xxhl33-2 eoieIP" href="/services/ai-consulting/">See how we work</a><a href="/cdn-cgi/l/email-protection#e9839c9a9d8087a99a818882888a868d8cc78a8684d69a9c8b838c8a9dd4be81889dccdbd99a9d8699998c8dccdbd99e869b8280878e" class="Button__ButtonOutlinedLink-sc-xxhl33-4 hwslQr">Tell us what stopped working</a></div><p class="AiAutomationBand__DeveloperNote-sc-u4e3ra-5 hTSTSX">Have developers? Start with the system around your coding agents:<!-- --> <a href="https://shaka.shakacode.com" target="_blank" rel="noopener noreferrer" class="AiAutomationBand__ShakaLink-sc-u4e3ra-6 jejSUD">Shaka</a>, open source.</p></div></div><div class="pages__Section-sc-12s69b8-2 cxxRKy"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 HowWeWork__StyledContainer-sc-1dgrjh1-0 cFpblv hOciMN"><header class="HowWeWork__Header-sc-1dgrjh1-1 lgPenq"><div class="HowWeWork__Eyebrow-sc-1dgrjh1-2 llOLpQ">Performance, end to end</div><h2 class="HowWeWork__Heading-sc-1dgrjh1-3 jXLyZO">How We Work</h2><p class="HowWeWork__Intro-sc-1dgrjh1-4 inZDyB">Nine steps from a free audit to a green PageSpeed score - measured, containerized, A/B-tested with AI agents proposing optimizations, then shipped by human experts.</p></header><div class="HowWeWork__Grid-sc-1dgrjh1-5 jIfyNl"><article class="HowWeWork__Card-sc-1dgrjh1-6 eDpJED"><div class="HowWeWork__CardTop-sc-1dgrjh1-7 dgeQBN"><div aria-hidden="true" class="HowWeWork__IconTile-sc-1dgrjh1-8 fHXsdD">ð</div><div aria-hidden="true" class="HowWeWork__Numeral-sc-1dgrjh1-9 hMOPoH">01</div></div><h3 class="HowWeWork__CardTitle-sc-1dgrjh1-10 ejUPHO">Free performance audit</h3><p class="HowWeWork__CardDescription-sc-1dgrjh1-11 IGMgG">We scan your pages with our own tooling - no commitment, no cost.</p></article><article class="HowWeWork__Card-sc-1dgrjh1-6 eDpJED"><div class="HowWeWork__CardTop-sc-1dgrjh1-7 dgeQBN"><div aria-hidden="true" class="HowWeWork__IconTile-sc-1dgrjh1-8 fHXsdD">ð</div><div aria-hidden="true" class="HowWeWork__Numeral-sc-1dgrjh1-9 hMOPoH">02</div></div><h3 class="HowWeWork__CardTitle-sc-1dgrjh1-10 ejUPHO">Report & plan</h3><p class="HowWeWork__CardDescription-sc-1dgrjh1-11 IGMgG">You get an HTML report - we walk through the bottlenecks and the plan together.</p></article><article class="HowWeWork__Card-sc-1dgrjh1-6 eDpJED"><div class="HowWeWork__CardTop-sc-1dgrjh1-7 dgeQBN"><div aria-hidden="true" class="HowWeWork__IconTile-sc-1dgrjh1-8 fHXsdD">ð</div><div aria-hidden="true" class="HowWeWork__Numeral-sc-1dgrjh1-9 hMOPoH">03</div></div><h3 class="HowWeWork__CardTitle-sc-1dgrjh1-10 ejUPHO">Code access</h3><p class="HowWeWork__CardDescription-sc-1dgrjh1-11 IGMgG">You grant code access - GitHub, GitLab, or Bitbucket.</p></article><article class="HowWeWork__Card-sc-1dgrjh1-6 eDpJED"><div class="HowWeWork__CardTop-sc-1dgrjh1-7 dgeQBN"><div aria-hidden="true" class="HowWeWork__IconTile-sc-1dgrjh1-8 fHXsdD">ð³</div><div aria-hidden="true" class="HowWeWork__Numeral-sc-1dgrjh1-9 hMOPoH">04</div></div><h3 class="HowWeWork__CardTitle-sc-1dgrjh1-10 ejUPHO">Containerize</h3><p class="HowWeWork__CardDescription-sc-1dgrjh1-11 IGMgG">We containerize your app for clean, isolated A/B testing.</p></article><article class="HowWeWork__Card-sc-1dgrjh1-6 eDpJED"><div class="HowWeWork__CardTop-sc-1dgrjh1-7 dgeQBN"><div aria-hidden="true" class="HowWeWork__IconTile-sc-1dgrjh1-8 fHXsdD">ð§ª</div><div aria-hidden="true" class="HowWeWork__Numeral-sc-1dgrjh1-9 hMOPoH">05</div></div><h3 class="HowWeWork__CardTitle-sc-1dgrjh1-10 ejUPHO">A/B pipeline</h3><p class="HowWeWork__CardDescription-sc-1dgrjh1-11 IGMgG">A statistically rigorous A/B pipeline, powered by<!-- --> <a href="https://shakaperf.com" target="_blank" rel="noopener noreferrer" class="HowWeWork__ShakaPerfLink-sc-1dgrjh1-12 cWvByT">ShakaPerf</a>.</p></article><article class="HowWeWork__Card-sc-1dgrjh1-6 eDpJED"><div class="HowWeWork__CardTop-sc-1dgrjh1-7 dgeQBN"><div aria-hidden="true" class="HowWeWork__IconTile-sc-1dgrjh1-8 fHXsdD">ð¤</div><div aria-hidden="true" class="HowWeWork__Numeral-sc-1dgrjh1-9 hMOPoH">06</div></div><h3 class="HowWeWork__CardTitle-sc-1dgrjh1-10 ejUPHO">AI optimization</h3><p class="HowWeWork__CardDescription-sc-1dgrjh1-11 IGMgG">AI agents propose optimizations, validated against the A/B tests as their feedback loop.</p></article><article class="HowWeWork__Card-sc-1dgrjh1-6 eDpJED"><div class="HowWeWork__CardTop-sc-1dgrjh1-7 dgeQBN"><div aria-hidden="true" class="HowWeWork__IconTile-sc-1dgrjh1-8 fHXsdD">ð ï¸</div><div aria-hidden="true" class="HowWeWork__Numeral-sc-1dgrjh1-9 hMOPoH">07</div></div><h3 class="HowWeWork__CardTitle-sc-1dgrjh1-10 ejUPHO">Human experts</h3><p class="HowWeWork__CardDescription-sc-1dgrjh1-11 IGMgG">Our engineers pick the best proposals and implement them with care.</p></article><article class="HowWeWork__Card-sc-1dgrjh1-6 eDpJED"><div class="HowWeWork__CardTop-sc-1dgrjh1-7 dgeQBN"><div aria-hidden="true" class="HowWeWork__IconTile-sc-1dgrjh1-8 fHXsdD">ð</div><div aria-hidden="true" class="HowWeWork__Numeral-sc-1dgrjh1-9 hMOPoH">08</div></div><h3 class="HowWeWork__CardTitle-sc-1dgrjh1-10 ejUPHO">Green score</h3><p class="HowWeWork__CardDescription-sc-1dgrjh1-11 IGMgG">Your pages pass Core Web Vitals and earn a green PageSpeed score.</p></article><article class="HowWeWork__Card-sc-1dgrjh1-6 eDpJED"><div class="HowWeWork__CardTop-sc-1dgrjh1-7 dgeQBN"><div aria-hidden="true" class="HowWeWork__IconTile-sc-1dgrjh1-8 fHXsdD">ð</div><div aria-hidden="true" class="HowWeWork__Numeral-sc-1dgrjh1-9 hMOPoH">09</div></div><h3 class="HowWeWork__CardTitle-sc-1dgrjh1-10 ejUPHO">Bug fixes</h3><p class="HowWeWork__CardDescription-sc-1dgrjh1-11 IGMgG">And we squash every bug we run into along the way.</p></article></div></div></div><div class="pages__Section-sc-12s69b8-2 icvXuS"><div class="TechnologyWeUse__Wrapper-sc-vqmata-0"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 TechnologyWeUse__StyledContainer-sc-vqmata-1 cFpblv kOxVTt"><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:100%;flex-basis:100%;flex-grow:0;flex-shrink:0;max-width:100%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 eMtYwd"><span class="SectionTitle__Title-sc-mayt3a-0 esERWX">Technologies We Use</span></div></div><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:100%;flex-basis:100%;flex-grow:0;flex-shrink:0;max-width:100%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 eMtYwd"><h3 class="TechnologyWeUse__SubHeading-sc-vqmata-5 bWNJhI">
561To measure</h3><p class="P-sc-2fe20n-0 TechnologyWeUse__Description-sc-vqmata-6 fduduP iiwOKN"><a href="https://github.com/shakacode/shakaperf" style="color:#e74c3c;font-weight:600">ShakaPerf</a> is the performance-testing framework we built and use ourselves - statistically rigorous A/B testing in CI, source-available for you to run yourself.</p><ul class="TechnologyWeUse__BulletList-sc-vqmata-7 WTrAF"><li class="TechnologyWeUse__BulletItem-sc-vqmata-9 SQzbr"><span data-tip="All you need is a Docker image with your web app exposing a single port. Our framework will automatically write all the tests." class="TechnologyWeUse__Tip-sc-vqmata-8 DTEQH">Extremely easy to set up</span></li><li class="TechnologyWeUse__BulletItem-sc-vqmata-9 SQzbr"><span data-tip="Auto-adjusted p-values across metrics, configurable sensitivity, and fewer false regression alerts." class="TechnologyWeUse__Tip-sc-vqmata-8 DTEQH">Statistically rigorous A/B testing</span></li><li class="TechnologyWeUse__BulletItem-sc-vqmata-9 SQzbr"><span data-tip="Screenshot comparison of main vs feature branches catches unintended visual changes before they ship - no separate visual-regression suite to maintain." class="TechnologyWeUse__Tip-sc-vqmata-8 DTEQH">Detects visual changes</span></li><li class="TechnologyWeUse__BulletItem-sc-vqmata-9 SQzbr"><span data-tip="We can optimize any web page as long as it fits in a docker container." class="TechnologyWeUse__Tip-sc-vqmata-8 DTEQH">Stack agnostic</span></li><li class="TechnologyWeUse__BulletItem-sc-vqmata-9 SQzbr"><span data-tip="WCAG 2.0, 2.1, 2.2 on level A, AA and AAA as well as best practices like ensuring every page has an h1 heading. All performance optimizations will be SEO compliant." class="TechnologyWeUse__Tip-sc-vqmata-8 DTEQH">Accessibility & SEO tests</span></li><li class="TechnologyWeUse__BulletItem-sc-vqmata-9 SQzbr"><span data-tip="No gradual degradation due to entropy and rapid development." class="TechnologyWeUse__Tip-sc-vqmata-8 DTEQH">Automatic regression detection in the main branch</span></li></ul><div class="TechnologyWeUse__TechGrid-sc-vqmata-2 dMMSpN"><div class="TechnologyWeUse__TechCard-sc-vqmata-3 egwnZN"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-lighthouse-_R_2ci6q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-lighthouse-_R_2ci6q_">Lighthouse</title><g id="IconLighthouse" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><path d="M12 0l5.5 3.5v5H20v3h-2.25l2 12.5H4.25l2-12.5H4v-3h2.5V3.53zm2.94 13.25l-6.22 2.26L8 20.04l7.5-2.75zM12 3.56L9.5 5.17V8.5h5V5.15Z" fill="#F44B21" fill-rule="nonzero"></path></g></svg><h4 class="H4-sc-k1osi8-0 TechnologyWeUse__TechName-sc-vqmata-4 bcZTSE bKsJNK">Lighthouse</h4></div><div class="TechnologyWeUse__TechCard-sc-vqmata-3 egwnZN"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-axe-_R_2ki6q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-axe-_R_2ki6q_">Axe</title><g id="IconAxe" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><path d="M5.182 10.564L1.5 12l3.682 1.436c.347 1.018.862 1.967 1.512 2.82L4.5 19.5l3.244-2.194a9.017 9.017 0 0 0 2.82 1.512L12 22.5l1.436-3.682a9.017 9.017 0 0 0 2.82-1.512L19.5 19.5l-2.194-3.244a9.017 9.017 0 0 0 1.512-2.82L22.5 12l-3.682-1.436a9.017 9.017 0 0 0-1.512-2.82L19.5 4.5l-3.244 2.194a9.017 9.017 0 0 0-2.82-1.512L12 1.5l-1.436 3.682a9.017 9.017 0 0 0-2.82 1.512L4.5 4.5l2.194 3.244a9.017 9.017 0 0 0-1.512 2.82ZM12 15.75a3.75 3.75 0 1 0 0-7.5 3.75 3.75 0 0 0 0 7.5Z" fill="#4B2E83" fill-rule="nonzero"></path></g></svg><h4 class="H4-sc-k1osi8-0 TechnologyWeUse__TechName-sc-vqmata-4 bcZTSE bKsJNK">Axe</h4></div><div class="TechnologyWeUse__TechCard-sc-vqmata-3 egwnZN"><svg viewBox="0 0 400 400" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-playwright-_R_2si6q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-playwright-_R_2si6q_">Playwright</title><g id="IconPlaywright" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><path d="M136.444 221.556C123.558 225.213 115.104 231.625 109.535 238.032C114.869 233.364 122.014 229.08 131.652 226.348C141.51 223.554 149.92 223.574 156.869 224.915V219.481C150.941 218.939 144.145 219.371 136.444 221.556ZM108.946 175.876L61.0895 188.484C61.0895 188.484 61.9617 189.716 63.5767 191.36L104.153 180.668C104.153 180.668 103.578 188.077 98.5847 194.705C108.03 187.559 108.946 175.876 108.946 175.876ZM149.005 288.347C81.6582 306.486 46.0272 228.438 35.2396 187.928C30.2556 169.229 28.0799 155.067 27.5 145.928C27.4377 144.979 27.4665 144.179 27.5336 143.446C24.04 143.657 22.3674 145.473 22.7077 150.721C23.2876 159.855 25.4633 174.016 30.4473 192.721C41.2301 233.225 76.8659 311.273 144.213 293.134C158.872 289.185 169.885 281.992 178.152 272.81C170.532 279.692 160.995 285.112 149.005 288.347ZM161.661 128.11V132.903H188.077C187.535 131.206 186.989 129.677 186.447 128.11H161.661Z" fill="#2D4552"></path><path d="M193.981 167.584C205.861 170.958 212.144 179.287 215.465 186.658L228.711 190.42C228.711 190.42 226.904 164.623 203.57 157.995C181.74
5611 151.793 168.308 170.124 166.674 172.496C173.024 167.972 182.297 164.268 193.981 167.584ZM299.422 186.777C277.573 180.547 264.145 198.916 262.535 201.255C268.89 196.736 278.158 193.031 289.837 196.362C301.698 199.741 307.976 208.06 311.307 215.436L324.572 219.212C324.572 219.212 322.736 193.41 299.422 186.777ZM286.262 254.795L176.072 223.99C176.072 223.99 177.265 230.038 181.842 237.869L274.617 263.805C282.255 259.386 286.262 254.795 286.262 254.795ZM209.867 321.102C122.618 297.71 133.166 186.543 147.284 133.865C153.097 112.156 159.073 96.0203 164.029 85.204C161.072 84.5953 158.623 86.1529 156.203 91.0746C150.941 101.747 144.212 119.124 137.7 143.45C123.586 196.127 113.038 307.29 200.283 330.682C241.406 341.699 273.442 324.955 297.323 298.659C274.655 319.19 245.714 330.701 209.867 321.102Z" fill="#2D4552"></path><path d="M161.661 262.296V239.863L99.3324 257.537C99.3324 257.537 103.938 230.777 136.444 221.556C146.302 218.762 154.713 218.781 161.661 220.123V128.11H192.869C189.471 117.61 186.184 109.526 183.423 103.909C178.856 94.612 174.174 100.775 163.545 109.665C156.059 115.919 137.139 129.261 108.668 136.933C80.1966 144.61 57.179 142.574 47.5752 140.911C33.9601 138.562 26.8387 135.572 27.5049 145.928C28.0847 155.062 30.2605 169.224 35.2445 187.928C46.0272 228.433 81.663 306.481 149.01 288.342C166.602 283.602 179.019 274.233 187.626 262.291H161.661V262.296ZM61.0848 188.484L108.946 175.876C108.946 175.876 107.551 194.288 89.6087 199.018C71.6614 203.743 61.0848 188.484 61.0848 188.484Z" fill="#E2574C"></path><path d="M341.786 129.174C329.345 131.355 299.498 134.072 262.612 124.185C225.716 114.304 201.236 97.0224 191.537 88.8994C177.788 77.3834 171.74 69.3802 165.788 81.4857C160.526 92.163 153.797 109.54 147.284 133.866C133.171 186.543 122.623 297.706 209.867 321.098C297.093 344.47 343.53 242.92 357.644 190.238C364.157 165.917 367.013 147.5 367.799 135.625C368.695 122.173 359.455 126.078 341.786 129.174ZM166.497 172.756C166.497 172.756 180.246 151.372 203.565 158C226.899 164.628 228.706 190.425 228.706 190.425L166.497 172.756ZM223.42 268.713C182.403 256.698 176.077 223.99 176.077 223.99L286.262 254.796C286.262 254.791 264.021 280.578 223.42 268.713ZM262.377 201.495C262.377 201.495 276.107 180.126 299.422 186.773C322.736 193.411 324.572 219.208 324.572 219.208L262.377 201.495Z" fill="#2EAD33"></path><path d="M139.88 246.04L99.3324 257.532C99.3324 257.532 103.737 232.44 133.607 222.496L110.647 136.33L108.663 136.933C80.1918 144.611 57.1742 142.574 47.5704 140.911C33.9554 138.563 26.834 135.572 27.5001 145.929C28.08 155.063 30.2557 169.224 35.2397 187.929C46.0225 228.433 81.6583 306.481 149.005 288.342L150.989 287.719L139.88 246.04ZM61.0848 188.485L108.946 175.876C108.946 175.876 107.551 194.288 89.6087 199.018C71.6615 203.743 61.0848 188.485 61.0848 188.485Z" fill="#D65348"></path><path d="M225.27 269.163L223.415 268.712C182.398 256.698 176.072 223.99 176.072 223.99L232.89 239.872L262.971 124.281L262.607 124.185C225.711 114.304 201.232 97.0224 191.532 88.8994C177.783 77.3834 171.735 69.3802 165.783 81.4857C160.526 92.163 153.797 109.54 147.284 133.866C133.171 186.543 122.623 297.706 209.867 321.097L211.655 321.5L225.27 269.163ZM166.497 172.756C166.497 172.756 180.246 151.372 203.565 158C226.899 164.628 228.706 190.425 228.706 190.425L166.497 172.756Z" fill="#1D8D22"></path><path d="M141.946 245.451L131.072 248.537C133.641 263.019 138.169 276.917 145.276 289.195C146.513 288.922 147.74 288.687 149 288.342C152.302 287.451 155.364 286.348 158.312 285.145C150.371 273.361 145.118 259.789 141.946 245.451ZM137.7 143.451C132.112 164.307 127.113 194.326 128.489 224.436C130.952 223.367 133.554 222.371 136.444 221.551L138.457 221.101C136.003 188.939 141.308 156.165 147.284 133.866C148.799 128.225 150.318 122.978 151.832 118.085C149.393 119.637 146.767 121.228 143.776 122.867C141.759 129.093 139.722 135.898 137.7 143.451Z" fill="#C04B41"></path></g></svg><h4 class="H4-sc-k1osi8-0 TechnologyWeUse__TechName-sc-vqmata-4 bcZTSE bKsJNK">Playwright</h4></div><div class="TechnologyWeUse__TechCard-sc-vqmata-3 egwnZN"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-circleci-_R_34i6q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-circleci-_R_34i6q_">CircleCI</title><g id="IconCircleCi" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><path d="M8.963 12c0-1.584 1.284-2.855 2.855-2.855 1.572 0 2.856 1.284 2.856 2.855 0 1.572-1.284 2.856-2.856 2.856-1.57 0-2.855-1.284-2.855-2.856zm2.855-12C6.215 0 1.522 3.84.19 9.025c-.01.036-.01.07-.01.12 0 .313.252.576.575.576H5.59c.23 0 .433-.13.517-.333.997-2.16 3.18-3.672 5.712-3.672 3.466 0 6.286 2.82 6.286 6.287 0 3.47-2.82 6.29-6.29 6.29-2.53 0-4.714-1.5-5.71-3.673-.097-.19-.29-.336-.517-.336H.755c-.312 0-.575.253-.575.576 0 .037.014.072.014.12C1.514 20.16 6.214 24 11.818 24c6.624 0 12-5.375 12-12 0-6.623-5.376-12-12-12z" fill="#343434" fill-rule="nonzero"></path></g></svg><h4 class="H4-sc-k1osi8-0 TechnologyWeUse__TechName-sc-vqmata-4 bcZTSE bKsJNK">CircleCI</h4></div><div class="TechnologyWeUse__TechCard-sc-vqmata-3 egwnZN"><svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-docker-_R_3ci6q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-docker-_R_3ci6q_">Docker</title><g id="IconDocker" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><path d="M18.191,13.071H20.7v2.566H21.97a5.5,5.5,0,0,0,1.744-.292,4.462,4.462,0,0,0,.848-.383,3.149,3.149,0,0,1-.589-1.623,3.427,3.427,0,0,1,.616-2.416l.264-.305.314.253a4,4,0,0,1,1.575,2.538,3.837,3.837,0,0,1,2.913.271l.345.2-.181.354a3.629,3.629,0,0,1-3.648,1.74c-2.173,5.413-6.9,7.976-12.642,7.976A7.958,7.958,0,0,1,6.3,20.211l-.025-.043-.226-.459a7.28,7.28,0,0,1-.579-3.693l.035-.38H7.648V13.071h2.51v-2.51h5.02V8.051h3.012v5.02Z" fill="#3a4e55"></path><path d="M26.324,14.021A3.311,3.311,0,0,0,24.906,11.2a3.072,3.072,0,0,0,.289,3.821,5.279,5.279,0,0,1-3.225,1.037H5.883a6.779,6.779,0,0,0,.667,3.737l.183.335a6.2,6.2,0,0,0,.379.569h0q.992.064,1.829.045h0a8.972,8.972,0,0,0,2.669-.389.193.193,0,1,1,.126.365c-.09.031-.184.061-.281.088h0a8.4,8.4,0,0,1-1.845.3c.044,0-.046.007-.046.007l-.082.007c-.291.016-.6.02-.925.02-.351,0-.7-.007-1.083-.026l-.01.007a7.882,7.882,0,0,0,6.063,2.41c5.56,0,10.276-2.465,12.365-8,1.482.152,2.906-.226,3.553-1.49a3.5,3.5,0,0,0-3.122-.022" fill="#00aada"></path><path d="M9.889,13.671h.172v1.813H9.889V13.671Zm-.33,0h.179v1.813H9.559V13.671Zm-.33,0h.179v1.813H9.23V13.671Zm-.33,0h.179v1.813H8.9V13.671Zm-.33,0h.179v1.813H8.57V13.671Zm-.323,0h.172v1.813H8.248V13.671Zm-.181-.181h2.175v2.176H8.066V13.49Z" fill="#00acd3"></path>
561<path d="M12.4,11.161h.172v1.813H12.4V11.161Zm-.33,0h.179v1.813H12.07V11.161Zm-.33,0h.179v1.813H11.74V11.161Zm-.33,0h.179v1.813H11.41V11.161Zm-.33,0h.178v1.813h-.178V11.161Zm-.323,0h.172v1.813h-.172V11.161Zm-.181-.181h2.176v2.176H10.577V10.979Z" fill="#00acd3"></path><path d="M12.4,13.671h.172v1.813H12.4V13.671Zm-.33,0h.179v1.813H12.07V13.671Zm-.33,0h.179v1.813H11.74V13.671Zm-.33,0h.179v1.813H11.41V13.671Zm-.33,0h.178v1.813h-.178V13.671Zm-.323,0h.172v1.813h-.172V13.671Zm-.181-.181h2.176v2.176H10.577V13.49Z" fill="#26c2ee"></path><path d="M14.909,13.671h.172v1.813h-.172V13.671Zm-.33,0h.179v1.813H14.58V13.671Zm-.33,0h.179v1.813H14.25V13.671Zm-.33,0H14.1v1.813h-.179V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.323,0h.172v1.813h-.172V13.671Zm-.181-.181h2.176v2.176H13.087V13.49Z" fill="#00acd3"></path><path d="M14.909,11.161h.172v1.813h-.172V11.161Zm-.33,0h.179v1.813H14.58V11.161Zm-.33,0h.179v1.813H14.25V11.161Zm-.33,0H14.1v1.813h-.179V11.161Zm-.33,0h.179v1.813h-.179V11.161Zm-.323,0h.172v1.813h-.172V11.161Zm-.181-.181h2.176v2.176H13.087V10.979Z" fill="#26c2ee"></path><path d="M17.42,13.671h.172v1.813H17.42V13.671Zm-.33,0h.179v1.813H17.09V13.671Zm-.33,0h.179v1.813H16.76V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.33,0h.179v1.813H16.1V13.671Zm-.323,0h.172v1.813h-.172V13.671ZM15.6,13.49h2.176v2.176H15.6V13.49Z" fill="#26c2ee"></path><path d="M17.42,11.161h.172v1.813H17.42V11.161Zm-.33,0h.179v1.813H17.09V11.161Zm-.33,0h.179v1.813H16.76V11.161Zm-.33,0h.179v1.813h-.179V11.161Zm-.33,0h.179v1.813H16.1V11.161Zm-.323,0h.172v1.813h-.172V11.161Zm-.181-.181h2.176v2.176H15.6V10.979Z" fill="#00acd3"></path><path d="M17.42,8.65h.172v1.813H17.42V8.65Zm-.33,0h.179v1.813H17.09V8.65Zm-.33,0h.179v1.813H16.76V8.65Zm-.33,0h.179v1.813h-.179V8.65Zm-.33,0h.179v1.813H16.1V8.65Zm-.323,0h.172v1.813h-.172V8.65ZM15.6,8.469h2.176v2.176H15.6V8.469Z" fill="#26c2ee"></path><path d="M19.93,13.671H20.1v1.813H19.93V13.671Zm-.33,0h.178v1.813H19.6V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.33,0h.179v1.813h-.179V13.671Zm-.323,0h.172v1.813h-.172V13.671Zm-.181-.181h2.176v2.176H18.107V13.49Z" fill="#00acd3"></path></g></svg><h4 class="H4-sc-k1osi8-0 TechnologyWeUse__TechName-sc-vqmata-4 bcZTSE bKsJNK">Docker</h4></div></div><h3 class="TechnologyWeUse__SubHeading-sc-vqmata-5 bWNJhI">To optimize</h3><p class="P-sc-2fe20n-0 TechnologyWeUse__Description-sc-vqmata-6 fduduP iiwOKN">We specialize in React & Rails apps, but our approach is stack-agnostic - if it runs in a Docker container, we can optimize it.</p><div class="TechnologyWeUse__TechGrid-sc-vqmata-2 dMMSpN"><div class="TechnologyWeUse__TechCard-sc-vqmata-3 egwnZN"><svg viewBox="0 0 56 51" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-react-_R_1fi6q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-react-_R_1fi6q_">React</title><g transform="translate(0 -2)" fill="none" fill-rule="evenodd"><path d="M0 0h56v56H0z"></path><circle fill="#00D8FF" fill-rule="nonzero" cx="28" cy="27.627" r="4.993"></circle><path d="M28 39.066c-7.012 0-13.14-.826-17.725-2.397-2.974-1.015-5.5-2.368-7.3-3.91C1.064 31.13.05 29.349.05 27.628c0-3.302 3.62-6.535 9.698-8.644 4.973-1.73 11.458-2.695 18.242-2.695 6.664 0 13.06.935 18.004 2.646 2.894.994 5.331 2.287 7.062 3.72 1.88 1.571 2.874 3.292 2.874 4.973 0 3.432-4.048 6.903-10.573 9.061C40.742 38.22 34.575 39.066 28 39.066zm0-20.391c-6.436 0-12.801.935-17.456 2.556-5.59 1.95-8.097 4.616-8.097 6.396 0 1.85 2.695 4.764 8.604 6.784 4.337 1.482 10.205 2.268 16.949 2.268 6.326 0 12.225-.796 16.611-2.258 6.137-2.04 8.942-4.954 8.942-6.794 0-.945-.716-2.059-2.02-3.143-1.501-1.253-3.69-2.397-6.305-3.302C40.523 19.57 34.406 18.675 28 18.675z" fill="#00D8FF" fill-rule="nonzero"></path><path d="M16.67 52.514c-1.014 0-1.91-.22-2.665-.657-2.855-1.651-3.85-6.405-2.646-12.722.985-5.182 3.392-11.27 6.784-17.148 3.332-5.769 7.33-10.842 11.28-14.273 2.307-2.01 4.644-3.482 6.753-4.258 2.298-.845 4.287-.845 5.74-.01 2.974 1.711 3.958 6.963 2.566 13.687-.985 4.775-3.332 10.534-6.615 16.233-3.501 6.068-7.28 10.962-10.931 14.154-2.368 2.07-4.805 3.581-7.033 4.367-1.163.418-2.258.627-3.232.627zm2.497-29.93l1.035.597c-3.213 5.57-5.59 11.548-6.505 16.402-1.104 5.819-.04 9.32 1.492 10.205.378.22.875.338 1.482.338 1.98 0 5.092-1.253 8.693-4.396 3.452-3.014 7.062-7.709 10.434-13.547 3.163-5.481 5.411-10.992 6.346-15.517 1.303-6.336.18-10.216-1.422-11.14-.816-.468-2.139-.408-3.73.178
561-1.84.677-3.92 2-6.008 3.82-3.75 3.263-7.58 8.116-10.782 13.667l-1.035-.607z" fill="#00D8FF" fill-rule="nonzero"></path><path d="M39.33 52.544c-2.706 0-6.138-1.632-9.719-4.715-3.998-3.442-8.066-8.564-11.468-14.443-3.342-5.769-5.73-11.767-6.734-16.91-.587-3.003-.696-5.758-.318-7.977.417-2.417 1.402-4.137 2.864-4.983 2.964-1.72 8.007.05 13.14 4.615 3.64 3.233 7.46 8.147 10.752 13.836 3.511 6.068 5.869 11.787 6.804 16.542.607 3.083.706 5.948.278 8.275-.457 2.477-1.492 4.238-2.984 5.103-.746.438-1.631.657-2.616.657zM20.211 32.193c3.222 5.57 7.221 10.613 10.961 13.825 4.486 3.86 8.047 4.695 9.589 3.8 1.601-.925 2.775-4.715 1.561-10.842-.895-4.496-3.153-9.966-6.535-15.805-3.173-5.48-6.823-10.186-10.275-13.25C20.68 5.626 16.76 4.66 15.16 5.586c-.816.468-1.423 1.651-1.711 3.322-.328 1.93-.229 4.397.308 7.112.955 4.884 3.243 10.623 6.456 16.174z" fill="#00D8FF" fill-rule="nonzero"></path></g></svg><h4 class="H4-sc-k1osi8-0 TechnologyWeUse__TechName-sc-vqmata-4 bcZTSE bKsJNK">React RSC</h4></div><div class="TechnologyWeUse__TechCard-sc-vqmata-3 egwnZN"><svg viewBox="0 0 56 44" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-ruby-_R_1ni6q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-ruby-_R_1ni6q_">Ruby</title><g fill="none" fill-rule="evenodd"><path d="M0-7h56v56H0z"></path><path fill="#900" d="M34.607 12.742H56L28 44.045z"></path><path fill="#FA7B7C" d="M0 12.742h21.393l6.608 31.303z"></path><path fill="#D50000" d="M17.618 12.742h20.764L28.001 44.045z"></path><path fill="#FA7B7C" d="M9.281 0H28v12.742H9.281z"></path><path fill="#FD0101" d="M28 0h18.562v12.742H28z"></path><path fill="#900" d="M17.618 12.742h20.764L28 0z"></path><path fill="#D50000" d="M38.382 12.742H56L46.247 0z"></path><path fill="#FD0101" d="M0 12.742h17.618L9.281 0z"></path></g></svg><h4 class="H4-sc-k1osi8-0 TechnologyWeUse__TechName-sc-vqmata-4 bcZTSE bKsJNK">Ruby on Rails</h4></div><div class="TechnologyWeUse__TechCard-sc-vqmata-3 egwnZN"><svg viewBox="0 0 56 56" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-all-stacks-_R_1vi6q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-all-stacks-_R_1vi6q_">All Stacks</title><g transform="translate(14, 14)"><circle r="12" fill="white" stroke="#42b883" stroke-width="1.2"></circle><polygon points="0,-7 -6,5 -3.5,5 0,-2 3.5,5 6,5" fill="#42b883"></polygon><polygon points="0,-4 -3.2,3.5 -1.8,3.5 0,-0.5 1.8,3.5 3.2,3.5" fill="#35495e"></polygon></g><g transform="translate(42, 14)"><circle r="12" fill="white" stroke="#DD0031" stroke-width="1.2"></circle><polygon points="0,-8 -6.5,6 -4.5,6 0,-4 4.5,6 6.5,6" fill="#DD0031"></polygon><rect x="-3.5" y="0.5" width="7" height="1.8" fill="white"></rect></g><g transform="translate(14, 42)"><circle r="12" fill="white" stroke="#FF3E00" stroke-width="1.2"></circle><path d="M-3,-7 C2,-9 7,-5 5,-1 C3,3 -3,2 -5,5 C-7,8 -2,10 3,8" stroke="#FF3E00" stroke-width="2" stroke-linecap="round" fill="none"></path></g><g transform="translate(42, 42)"><circle r="12" fill="white" stroke="#888" stroke-width="1.2"></circle><circle cx="-5" cy="0" r="1.8" fill="#888"></circle><circle cx="0" cy="0" r="1.8" fill="#888"></circle><circle cx="5" cy="0" r="1.8" fill="#888"></circle></g></svg><h4 class="H4-sc-k1osi8-0 TechnologyWeUse__TechName-sc-vqmata-4 bcZTSE bKsJNK">Web Apps of All Stacks</h4></div></div></div></div></div></div></div><div class="pages__Section-sc-12s69b8-2 cxxRKy"><div class="WhoAreWe__Wrapper-sc-10h2r5v-0"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 WhoAreWe__StyledContainer-sc-10h2r5v-2 cFpblv eoRckl"><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:100%;flex-basis:100%;flex-grow:0;flex-shrink:0;max-width:100%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 eMtYwd"><span class="SectionTitle__Title-sc-mayt3a-0 esERWX">Who are we?</span></div></div><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:100%;flex-basis:100%;flex-grow:0;flex-shrink:0;max-width:100%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 eMtYwd"><p class="P-sc-2fe20n-0 WhoAreWe__Description-sc-10h2r5v-3 fduduP UFxOv">A team of senior engineers with decades of combined experience. We started in web app consulting and went deep on performance optimization and AI-assisted delivery, backing our work with measured results rather than opinions.</p><h3 class="WhoAreWe__SubHeading-sc-10h2r5v-1 fmwzBH">We maintain widely used Open Source projects</h3><ul class="WhoAreWe__BulletList-sc-10h2r5v-4 gXlgDp"><li class="WhoAreWe__BulletItem-sc-10h2r5v-5 bDfSBj"><a href="https://reactonrails.com/">React on Rails</a> - the first React Server Components for Rails (in Pro), cutting client-side JavaScript for faster pages. We also fix targeted performance issues without a full RSC migration.</li><li class="WhoAreWe__BulletItem-sc-10h2r5v-5 bDfSBj"><a href="https://shakapacker.com/">Shakapacker</a> - Open Source webpack and Rspack integration for Rails apps. Among other things we can help you reduce CI cost.</li></ul><h3 class="WhoAreWe__SubHeading-sc-10h2r5v-1 fmwzBH">We have our own startup</h3><p class="P-sc-2fe20n-0 WhoAreWe__Description-sc-10h2r5v-3 fduduP UFxOv">
561<a href="https://hichee.com/" style="color:#e74c3c;font-weight:600">HiChee</a> - a price comparison search engine for vacation rentals.</p></div></div></div></div></div><div class="pages__Section-sc-12s69b8-2 icvXuS"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 ShakaStack__StyledContainer-sc-1dw8s15-0 cFpblv bLempW"><span class="SectionTitle__Title-sc-mayt3a-0 esERWX">The ShakaStack</span><p class="P-sc-2fe20n-0 ShakaStack__Intro-sc-1dw8s15-1 fduduP gFCxhm">We don't just consult on React and Rails performance. We build and maintain the stack that delivers it, with a project for each stage of shipping fast React inside Rails.</p><div class="ShakaStack__Stages-sc-1dw8s15-2 iseWgX">build â test â prove â deploy</div><div class="ShakaStack__Grid-sc-1dw8s15-3 ggyCSc"><div class="ShakaStack__Card-sc-1dw8s15-4 gizkaU"><div class="ShakaStack__Stage-sc-1dw8s15-5 hbnico">01<!-- --> <!-- -->Build</div><h4 class="H4-sc-k1osi8-0 ShakaStack__Product-sc-1dw8s15-6 bcZTSE jsJhXd">React on Rails</h4><p class="P-sc-2fe20n-0 ShakaStack__Description-sc-1dw8s15-7 fduduP gplhPD">Render React inside Rails views and controllers. Server-side rendering and hydration in the open-source gem; the first React Server Components for Rails, in Pro.</p><div class="ShakaStack__Nature-sc-1dw8s15-8 bYeVtU">Open source + Pro</div><a href="https://reactonrails.com" target="_blank" rel="noopener noreferrer" class="ShakaStack__CardLink-sc-1dw8s15-9 kfqEUF">Learn more</a></div><div class="ShakaStack__Card-sc-1dw8s15-4 eCizwW"><div class="ShakaStack__Stage-sc-1dw8s15-5 gvGbm">02<!-- --> <!-- -->Bundle</div><h4 class="H4-sc-k1osi8-0 ShakaStack__Product-sc-1dw8s15-6 bcZTSE jsJhXd">Shakapacker</h4><p class="P-sc-2fe20n-0 ShakaStack__Description-sc-1dw8s15-7 fduduP gplhPD">The maintained successor to rails/webpacker. Bundle with webpack or Rspack, the Rust-powered bundler that builds up to 10x faster. New installs default to Rspack.</p><div class="ShakaStack__Nature-sc-1dw8s15-8 bYeVtU">Open source</div><a href="https://shakapacker.com" target="_blank" rel="noopener noreferrer" class="ShakaStack__CardLink-sc-1dw8s15-9 fZEXRv">Learn more</a></div><div class="ShakaStack__Card-sc-1dw8s15-4 bouIsD"><div class="ShakaStack__Stage-sc-1dw8s15-5 kXRsoL">03<!-- --> <!-- -->Test</div><h4 class="H4-sc-k1osi8-0 ShakaStack__Product-sc-1dw8s15-6 bcZTSE jsJhXd">E2E on Rails</h4><p class="P-sc-2fe20n-0 ShakaStack__Description-sc-1dw8s15-7 fduduP gplhPD">Use Cypress or Playwright with your real Rails test setup: FactoryBot, fixtures, database cleanup, scenarios, and custom app commands.</p><div class="ShakaStack__Nature-sc-1dw8s15-8 bYeVtU">Open source</div><a href="https://e2eonrails.com" target="_blank" rel="noopener noreferrer" class="ShakaStack__CardLink-sc-1dw8s15-9 dqnRZW">Learn more</a></div><div class="ShakaStack__Card-sc-1dw8s15-4 cNfcoM"><div class="ShakaStack__Stage-sc-1dw8s15-5 dCkNbc">04<!-- --> <!-- -->Prove</div><h4 class="H4-sc-k1osi8-0 ShakaStack__Product-sc-1dw8s15-6 bcZTSE jsJhXd">ShakaPerf</h4><p class="P-sc-2fe20n-0 ShakaStack__Description-sc-1dw8s15-7 fduduP gplhPD">Statistically rigorous A/B performance testing in CI. Catch regressions before they ship, on any stack, with accessibility and SEO checks built in. Source-available.</p><div class="ShakaStack__Nature-sc-1dw8s15-8 bYeVtU">Source-available</div><a href="https://shakaperf.com" target="_blank" rel="noopener noreferrer" class="ShakaStack__CardLink-sc-1dw8s15-9 ircYFB">Learn more</a></div><div class="ShakaStack__Card-sc-1dw8s15-4 bsocNf"><div class="ShakaStack__Stage-sc-1dw8s15-5 eVdyTf">05<!-- --> <!-- -->Deploy</div><h4 class="H4-sc-k1osi8-0 ShakaStack__Product-sc-1dw8s15-6 bcZTSE jsJhXd">Control Plane Flow</h4><p class="P-sc-2fe20n-0 ShakaStack__Description-sc-1dw8s15-7 fduduP gplhPD">A Heroku-style workflow, review apps, staging, and promotion to production, on Control Plane infrastructure at lower cost.</p><div class="ShakaStack__Nature-sc-1dw8s15-8 bYeVtU">Open source</div><a href="https://controlplaneflow.com" target="_blank" rel="noopener noreferrer" class="ShakaStack__CardLink-sc-1dw8s15-9 hUGpFm">Learn more</a></div></div><div class="ShakaStack__CtaWrapper-sc-1dw8s15-10 bEtlLE"><a href="https://shakastack.com" target="_blank" rel="noopener noreferrer" class="Button__ButtonLink-sc-xxhl33-1 ShakaStack__ExploreButton-sc-1dw8s15-11 bHoJxm kzQmkB">Explore the stack</a></div></div></div><div class="pages__Section-sc-12s69b8-2 cxxRKy"><div class="Reviews__Wrapper-sc-1lf9pw0-1 dcsYOM"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 Reviews__StyledContainer-sc-1lf9pw0-0 cFpblv jnZyce"><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:100%;flex-basis:100%;flex-grow:0;flex-shrink:0;max-width:100%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 eMtYwd"><span class="SectionTitle__Title-sc-mayt3a-0 esERWX">What our clients say</span></div></div><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 Reviews__StyledRow-sc-1lf9pw0-2 dEimrw evqnmc"><div class="slick-slider slick-initialized" dir="ltr"><div class="slick-arrow slick-prev" role="button" tabindex="0" aria-label="Navigate reviews"></div><div class="slick-list"><div class="slick-track" style="width:366.6666666666667%;left:-100%"><div data-index="-3" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:100px;height:38px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='285'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#08b8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a7ef41ffaa4631da85cbf4a549f99cc4/958c5/printivity_logo.webp 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/f8daa/printivity_logo.webp 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/dce45/printivity_logo.webp 100w" sizes="(min-width: 100px) 100px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 100px) 100px, 100vw" decoding="async" loading="lazy" data-src="/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png" data-srcset="/static/a7ef41ffaa4631da85cbf4a549f99cc4/193ed/printivity_logo.png 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/83415/printivity_logo.png 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png 100w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a7ef41ffaa4631da85cbf4a549f99cc4/958c5/printivity_logo.webp 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/f8daa/printivity_logo.webp 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/dce45/printivity_logo.webp 100w" sizes="(min-width: 100px) 100px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 100px) 100px, 100vw" decoding="async" loading="lazy" src="/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png" srcSet="/static/a7ef41ffaa4631da85cbf4a549f99cc4/193ed/printivity_logo.png 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/83415/printivity_logo.png 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png 100w" alt="company logo"/></picture></noscript>
vendor: 108 bytes, line 561
561<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">Weâve reduced the time needed to bring new products to market, from a technical perspective, from weeks or months to just a few days, with cost savings of up to 90%. ShakaCode far exceeded our expectations, providing us with a platform on which we can grow our business.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/132764dcd1f932e9804100d6c72249a1/ea39e/erik.webp 20w,/static/132764dcd1f932e9804100d6c72249a1/25769/erik.webp 40w,/static/132764dcd1f932e9804100d6c72249a1/1b1dc/erik.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" data-src="/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png" data-srcset="/static/132764dcd1f932e9804100d6c72249a1/9cb3b/erik.png 20w,/static/132764dcd1f932e9804100d6c72249a1/ee9bb/erik.png 40w,/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png 80w" alt="Erik Krueger - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/132764dcd1f932e9804100d6c72249a1/ea39e/erik.webp 20w,/static/132764dcd1f932e9804100d6c72249a1/25769/erik.webp 40w,/static/132764dcd1f932e9804100d6c72249a1/1b1dc/erik.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" src="/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png" srcSet="/static/132764dcd1f932e9804100d6c72249a1/9cb3b/erik.png 20w,/static/132764dcd1f932e9804100d6c72249a1/ee9bb/erik.png 40w,/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png 80w" alt="Erik Krueger - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Erik Krueger</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>CTO at<!-- --> <a href="https://www.printivity.com/" target="_blank" rel="noopener noreferrer">Printivity</a></span></span></div></div><a class="Review__InternalLinkWrapper-sc-18rm1r3-6 ljLJpA" href="/recent-work/printivity/"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconCaseStudy-sc-18rm1r3-3 hOnljw" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-casestudy-_R_dsajmq_"><title id="svg-casestudy-_R_dsajmq_">CaseStudy</title><g id="CaseStudy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.8718878,2 L20,5 L20,20 C20,21.1045695 19.1045695,22 18,22 L6,22 C4.8954305,22 4,21.1045695 4,20 L4,4 C4,2.8954305 4.8954305,2 6,2 L16.8718878,2 Z M16,4 L7.5,4 C7.25454011,4 7.05039163,4.17687516 7.00805567,4.41012437 L7,4.5 L7,19.5 C7,19.7454599 7.17687516,19.9496084 7.41012437,19.9919443 L7.5,20 L17.5,20 C17.7454599,20 17.9496084,19.8231248 17.9919443,19.5898756 L18,19.5 L18,6 L16,4 Z M15,10 C15.5522847,10 16,10.4477153 16,11 L16,13 C16,13.5522847 15.5522847,14 15,14 L10,14 C9.44771525,14 9,13.5522847 9,13 L9,11 C9,10.4477153 9.44771525,10 10,10 L15,10 Z" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">View case study</div></div></a><div class="Review__GreySeparatorLine-sc-18rm1r3-9 dzENpA"></div><a href="https://clutch.co/profile/shakacode?page=1#review-1047338" target="_blank" rel="noopener noreferrer" class="Review__ExternalLinkWrapper-sc-18rm1r3-5 giQFBd"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconClutch-sc-18rm1r3-4 hRmKFx" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-clutch-_R_1nsajmq_"><title id="svg-clutch-_R_1nsajmq_">Clutch</title><g id="Clutch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.0263585,16.1598968 C15.0256247,17.0595231 13.7043344,17.5581666 12.2543619,17.5581666 C9.05798822,17.5581666 6.71068724,15.2108656 6.71068724,11.9880662 C6.71068724,8.76526676 8.98330659,6.51677532 12.2543619,6.51677532 C13.6790575,6.51677532 15.0256247,6.99129088 16.0516353,7.89091725 L16.7490468,8.49066816 L19.8477599,5.39310407 L19.0722199,4.69339467 C17.2488393,3.04695203 14.8280056,2.12319776 12.2532129,2.12319776 C6.50847237,2.12319776 2.3366418,6.26860252 2.3366418,11.9639383 C2.3366418,17.6351461 6.60843086,21.9287652 12.2532129,21.9287652 C14.8762614,21.9287652 17.3223719,21.0050109 19.1227736,19.3321425 L19.8718878,18.6324331 L16.7249189,15.5371669 L16.0263585,16.1598968 Z" fill="#343D3F"></path><path d="M12.1027007,8.71586199 C13.9387198,8.71586199 15.4266076,10.2014519 15.4266076,12.0386199 C15.4266076,13.87349 13.9387198,15.3613778 12.1027007,15.3613778 C10.2678306,15.3613778 8.78109173,13.87349 8.78109173,12.0386199 C8.78224067,10.2026008 10.2689795,8.71586199 12.1027007,8.71586199" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">Read Clutch review</div></div></a></div></div></div></div><div data-index="-2" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:108px;height:18px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='125'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f80808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/85da3af5518fc7c768a793e0f2a4589a/2f072/hvmn_logo.webp 27w,/static/85da3af5518fc7c768a793e0f2a4589a/dd8f1/hvmn_logo.webp 54w,/static/85da3af5518fc7c768a793e0f2a4589a/49915/hvmn_logo.webp 108w" sizes="(min-width: 108px) 108px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 108px) 108px, 100vw" decoding="async" loading="lazy" data-src="/static/85da3af5518fc7c768a793e0f2a4589a/62c72/hvmn_logo.png" data-srcset="/static/85da3af5518fc7c768a793e0f2a4589a/e7b9c/hvmn_logo.png 27w,/static/85da3af5518fc7c768a793e0f2a4589a/e8d32/hvmn_logo.png 54w,/static/85da3af5518fc7c768a793e0f2a4589a/62c72/hvmn_logo.png 108w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/85da3af5518fc7c768a793e0f2a4589a/2f072/hvmn_logo.webp 27w,/static/85da3af5518fc7c768a793e0f2a4589a/dd8f1/hvmn_logo.webp 54w,/static/85da3af5518fc7c768a793e0f2a4589a/49915/hvmn_logo.webp 108w" sizes="(min-width: 108px) 108px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 108px) 108px, 100vw" decoding="async" loading="lazy" src="/static/85da3af5518fc7c768a793e0f2a4589a/62c72/hvmn_logo.png" srcSet="/static/85da3af5518fc7c768a793e0f2a4589a/e7b9c/hvmn_logo.png 27w,/static/85da3af5518fc7c768a793e0f2a4589a/e8d32/hvmn_logo.png 54w,/static/85da3af5518fc7c768a793e0f2a4589a/62c72/hvmn_logo.png 108w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">Over three weeks, the ShakaCode team helped us migrate to React on Rails Pro, set up Webpack v4, migrated our entire asset pipeline to Webpack v4. The results were great. Our blog and product pages are 80-90% faster after that effort. The improved fragment caching was quick to set up and made a huge dent in our average server response times.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a5145a98dd4ba53d88ede123611167c9/ea39e/paul.webp 20w,/static/a5145a98dd4ba53d88ede123611167c9/25769/paul.webp 40w,/static/a5145a98dd4ba53d88ede123611167c9/1b1dc/paul.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" data-src="/static/a5145a98dd4ba53d88ede123611167c9/1272e/paul.png" data-srcset="/static/a5145a98dd4ba53d88ede123611167c9/9cb3b/paul.png 20w,/static/a5145a98dd4ba53d88ede123611167c9/ee9bb/paul.png 40w,/static/a5145a98dd4ba53d88ede123611167c9/1272e/paul.png 80w" alt="Paul Benigeri - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a5145a98dd4ba53d88ede123611167c9/ea39e/paul.webp 20w,/static/a5145a98dd4ba53d88ede123611167c9/25769/paul.webp 40w,/static/a5145a98dd4ba53d88ede123611167c9/1b1dc/paul.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" src="/static/a5145a98dd4ba53d88ede123611167c9/1272e/paul.png" srcSet="/static/a5145a98dd4ba53d88ede123611167c9/9cb3b/paul.png 20w,/static/a5145a98dd4ba53d88ede123611167c9/ee9bb/paul.png 40w,/static/a5145a98dd4ba53d88ede123611167c9/1272e/paul.png 80w" alt="Paul Benigeri - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Paul Benigeri</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>VP of Growth & Engineering at<!-- --> <a href="https://hvmn.com" target="_blank" rel="noopener noreferrer">HVMN</a></span></span></div></div></div></div></div></div><div data-index="-1" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:95px;height:37px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='292.10526315789474'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a4f65e35723af9b90e7f60c3c51be244/13869/bmdi_logo.webp 24w,/static/a4f65e35723af9b90e7f60c3c51be244/a5b42/bmdi_logo.webp 48w,/static/a4f65e35723af9b90e7f60c3c51be244/dbbde/bmdi_logo.webp 95w" sizes="(min-width: 95px) 95px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 95px) 95px, 100vw" decoding="async" loading="lazy" data-src="/static/a4f65e35723af9b90e7f60c3c51be244/e8fbf/bmdi_logo.jpg" data-srcset="/static/a4f65e35723af9b90e7f60c3c51be244/b55cd/bmdi_logo.jpg 24w,/static/a4f65e35723af9b90e7f60c3c51be244/138e5/bmdi_logo.jpg 48w,/static/a4f65e35723af9b90e7f60c3c51be244/e8fbf/bmdi_logo.jpg 95w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a4f65e35723af9b90e7f60c3c51be244/13869/bmdi_logo.webp 24w,/static/a4f65e35723af9b90e7f60c3c51be244/a5b42/bmdi_logo.webp 48w,/static/a4f65e35723af9b90e7f60c3c51be244/dbbde/bmdi_logo.webp 95w" sizes="(min-width: 95px) 95px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 95px) 95px, 100vw" decoding="async" loading="lazy" src="/static/a4f65e35723af9b90e7f60c3c51be244/e8fbf/bmdi_logo.jpg" srcSet="/static/a4f65e35723af9b90e7f60c3c51be244/b55cd/bmdi_logo.jpg 24w,/static/a4f65e35723af9b90e7f60c3c51be244/138e5/bmdi_logo.jpg 48w,/static/a4f65e35723af9b90e7f60c3c51be244/e8fbf/bmdi_logo.jpg 95w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">The functionality that ShakaCode developed for the Revenue Equation App has made a huge difference to our clients. Itâs enabled them to be more proactive when it comes to identifying underperforming campaigns and optimize spend to drive revenue and reduce risk. That translates to increased profits and happy shareholders.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a28028e969116f06b62cb01d99dc3ae8/ea39e/rachel_hazelwood.webp 20w,/static/a28028e969116f06b62cb01d99dc3ae8/25769/rachel_hazelwood.webp 40w,/static/a28028e969116f06b62cb01d99dc3ae8/1b1dc/rachel_hazelwood.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" data-src="/static/a28028e969116f06b62cb01d99dc3ae8/1272e/rachel_hazelwood.png" data-srcset="/static/a28028e969116f06b62cb01d99dc3ae8/9cb3b/rachel_hazelwood.png 20w,/static/a28028e969116f06b62cb01d99dc3ae8/ee9bb/rachel_hazelwood.png 40w,/static/a28028e969116f06b62cb01d99dc3ae8/1272e/rachel_hazelwood.png 80w" alt="Rachel Hazelwood - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a28028e969116f06b62cb01d99dc3ae8/ea39e/rachel_hazelwood.webp 20w,/static/a28028e969116f06b62cb01d99dc3ae8/25769/rachel_hazelwood.webp 40w,/static/a28028e969116f06b62cb01d99dc3ae8/1b1dc/rachel_hazelwood.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" src="/static/a28028e969116f06b62cb01d99dc3ae8/1272e/rachel_hazelwood.png" srcSet="/static/a28028e969116f06b62cb01d99dc3ae8/9cb3b/rachel_hazelwood.png 20w,/static/a28028e969116f06b62cb01d99dc3ae8/ee9bb/rachel_hazelwood.png 40w,/static/a28028e969116f06b62cb01d99dc3ae8/1272e/rachel_hazelwood.png 80w" alt="Rachel Hazelwood - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Rachel Hazelwood</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>Head of Product Management,<!-- --> <a href="https://bluemoondigital.co/" target="_blank" rel="noopener noreferrer">Blue Moon Digital, Inc.</a></span></span></div></div><a class="Review__InternalLinkWrapper-sc-18rm1r3-6 ljLJpA" href="/recent-work/bmdi/"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconCaseStudy-sc-18rm1r3-3 hOnljw" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-casestudy-_R_dsqjmq_"><title id="svg-casestudy-_R_dsqjmq_">CaseStudy</title><g id="CaseStudy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.8718878,2 L20,5 L20,20 C20,21.1045695 19.1045695,22 18,22 L6,22 C4.8954305,22 4,21.1045695 4,20 L4,4 C4,2.8954305 4.8954305,2 6,2 L16.8718878,2 Z M16,4 L7.5,4 C7.25454011,4 7.05039163,4.17687516 7.00805567,4.41012437 L7,4.5 L7,19.5 C7,19.7454599 7.17687516,19.9496084 7.41012437,19.9919443 L7.5,20 L17.5,20 C17.7454599,20 17.9496084,19.8231248 17.9919443,19.5898756 L18,19.5 L18,6 L16,4 Z M15,10 C15.5522847,10 16,10.4477153 16,11 L16,13 C16,13.5522847 15.5522847,14 15,14 L10,14 C9.44771525,14 9,13.5522847 9,13 L9,11 C9,10.4477153 9.44771525,10 10,10 L15,10 Z" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">View case study</div></div></a><div class="Review__GreySeparatorLine-sc-18rm1r3-9 dzENpA"></div><a href="https://clutch.co/profile/shakacode#review-1249908" target="_blank" rel="noopener noreferrer" class="Review__ExternalLinkWrapper-sc-18rm1r3-5 giQFBd"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconClutch-sc-18rm1r3-4 hRmKFx" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-clutch-_R_1nsqjmq_"><title id="svg-clutch-_R_1nsqjmq_">Clutch</title><g id="Clutch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.0263585,16.1598968 C15.0256247,17.0595231 13.7043344,17.5581666 12.2543619,17.5581666 C9.05798822,17.5581666 6.71068724,15.2108656 6.71068724,11.9880662 C6.71068724,8.76526676 8.98330659,6.51677532 12.2543619,6.51677532 C13.6790575,6.51677532 15.0256247,6.99129088 16.0516353,7.89091725 L16.7490468,8.49066816 L19.8477599,5.39310407 L19.0722199,4.69339467 C17.2488393,3.04695203 14.8280056,2.12319776 12.2532129,2.12319776 C6.50847237,2.12319776 2.3366418,6.26860252 2.3366418,11.9639383 C2.3366418,17.6351461 6.60843086,21.9287652 12.2532129,21.9287652 C14.8762614,21.9287652 17.3223719,21.0050109 19.1227736,19.3321425 L19.8718878,18.6324331 L16.7249189,15.5371669 L16.0263585,16.1598968 Z" fill="#343D3F"></path><path d="M12.1027007,8.71586199 C13.9387198,8.71586199 15.4266076,10.2014519 15.4266076,12.0386199 C15.4266076,13.87349 13.9387198,15.3613778 12.1027007,15.3613778 C10.2678306,15.3613778 8.78109173,13.87349 8.78109173,12.0386199 C8.78224067,10.2026008 10.2689795,8.71586199 12.1027007,8.71586199" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">Read Clutch review</div></div></a></div></div></div></div><div data-index="0" class="slick-slide slick-active slick-current" tabindex="-1" aria-hidden="false" style="outline:none;width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:126px;height:39px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='232.14285714285714'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/40fcb6fe86d62f1878447b623467af1a/77cc0/popmenu_logo.webp 32w,/static/40fcb6fe86d62f1878447b623467af1a/2a99f/popmenu_logo.webp 63w,/static/40fcb6fe86d62f1878447b623467af1a/46f1d/popmenu_logo.webp 12
5616w" sizes="(min-width: 126px) 126px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 126px) 126px, 100vw" decoding="async" loading="lazy" data-src="/static/40fcb6fe86d62f1878447b623467af1a/f9266/popmenu_logo.png" data-srcset="/static/40fcb6fe86d62f1878447b623467af1a/da45b/popmenu_logo.png 32w,/static/40fcb6fe86d62f1878447b623467af1a/9c426/popmenu_logo.png 63w,/static/40fcb6fe86d62f1878447b623467af1a/f9266/popmenu_logo.png 126w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/40fcb6fe86d62f1878447b623467af1a/77cc0/popmenu_logo.webp 32w,/static/40fcb6fe86d62f1878447b623467af1a/2a99f/popmenu_logo.webp 63w,/static/40fcb6fe86d62f1878447b623467af1a/46f1d/popmenu_logo.webp 126w" sizes="(min-width: 126px) 126px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 126px) 126px, 100vw" decoding="async" loading="lazy" src="/static/40fcb6fe86d62f1878447b623467af1a/f9266/popmenu_logo.png" srcSet="/static/40fcb6fe86d62f1878447b623467af1a/da45b/p
561opmenu_logo.png 32w,/static/40fcb6fe86d62f1878447b623467af1a/9c426/popmenu_logo.png 63w,/static/40fcb6fe86d62f1878447b623467af1a/f9266/popmenu_logo.png 126w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">ShakaCode far exceeded our expectations. Not only did they bring industry-leading technology - React on Rails Pro - to give us the performance and savings we needed, they also gave us the partner we were looking for. ShakaCode has provided the skills, experience, and professionalism we can depend upon as we grow our working relationship.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a76655a8b4f831ad9a7c0c9efd3caab6/40a99/justis_blasco.webp 16w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/399cd/justis_blasco.webp 32w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/b4444/justis_blasco.webp 64w" sizes="(min-width: 64px) 64px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 64px) 64px, 100vw" decoding="async" loading="lazy" data-src="/static/a76655a8b4f831ad9a7c0c9efd3caab6/5f967/justis_blasco.png" data-srcset="/static/a76655a8b4f831ad9a7c0c9efd3caab6/cd65f/justis_blasco.png 16w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/48496/justis_blasco.png 32w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/5f967/justis_blasco.png 64w" alt="Justis Blasco - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a76655a8b4f831ad9a7c0c9efd3caab6/40a99/justis_blasco.webp 16w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/399cd/justis_blasco.webp 32w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/b4444/justis_blasco.webp 64w" sizes="(min-width: 64px) 64px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 64px) 64px, 100vw" decoding="async" loading="lazy" src="/static/a76655a8b4f831ad9a7c0c9efd3caab6/5f967/justis_blasco.png" srcSet="/static/a76655a8b4f831ad9a7c0c9efd3caab6/cd65f/justis_blasco.png 16w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/48496/justis_blasco.png 32w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/5f967/justis_blasco.png 64w" alt="Justis Blasco - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Justis Blasco</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>Chief Technology Officer & Co-founder,<!-- --> <a href="https://get.popmenu.com/" target="_blank" rel="noopener noreferrer">Popmenu</a></span></span></div></div><a class="Review__InternalLinkWrapper-sc-18rm1r3-6 ljLJpA" href="/recent-work/popmenu/"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconCaseStudy-sc-18rm1r3-3 hOnljw" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-casestudy-_R_dt2jmq_"><title id="svg-casestudy-_R_dt2jmq_">CaseStudy</title><g id="CaseStudy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.8718878,2 L20,5 L20,20 C20,21.1045695 19.1045695,22 18,22 L6,22 C4.8954305,22 4,21.1045695 4,20 L4,4 C4,2.8954305 4.8954305,2 6,2 L16.8718878,2 Z M16,4 L7.5,4 C7.25454011,4 7.05039163,4.17687516 7.00805567,4.41012437 L7,4.5 L7,19.5 C7,19.7454599 7.17687516,19.9496084 7.41012437,19.9919443 L7.5,20 L17.5,20 C17.7454599,20 17.9496084,19.8231248 17.9919443,19.5898756 L18,19.5 L18,6 L16,4 Z M15,10 C15.5522847,10 16,10.4477153 16,11 L16,13 C16,13.5522847 15.5522847,14 15,14 L10,14 C9.44771525,14 9,13.5522847 9,13 L9,11 C9,10.4477153 9.44771525,10 10,10 L15,10 Z" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">View case study</div></div></a><div class="Review__GreySeparatorLine-sc-18rm1r3-9 dzENpA"></div><a href="https://clutch.co/profile/shakacode#review-1215882" target="_blank" rel="noopener noreferrer" class="Review__ExternalLinkWrapper-sc-18rm1r3-5 giQFBd"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconClutch-sc-18rm1r3-4 hRmKFx" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-clutch-_R_1nt2jmq_"><title id="svg-clutch-_R_1nt2jmq_">Clutch</title><g id="Clutch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.0263585,16.1598968 C15.0256247,17.0595231 13.7043344,17.5581666 12.2543619,17.5581666 C9.05798822,17.5581666 6.71068724,15.2108656 6.71068724,11.9880662 C6.71068724,8.76526676 8.98330659,6.51677532 12.2543619,6.51677532 C13.6790575,6.51677532 15.0256247,6.99129088 16.0516353,7.89091725 L16.7490468,8.49066816 L19.8477599,5.39310407 L19.0722199,4.69339467 C17.2488393,3.04695203 14.8280056,2.12319776 12.2532129,2.12319776 C6.50847237,2.12319776 2.3366418,6.26860252 2.3366418,11.9639383 C2.3366418,17.6351461 6.60843086,21.9287652 12.2532129,21.9287652 C14.8762614,21.9287652 17.3223719,21.0050109 19.1227736,19.3321425 L19.8718878,18.6324331 L16.7249189,15.5371669 L16.0263585,16.1598968 Z" fill="#343D3F"></path><path d="M12.1027007,8.71586199 C13.9387198,8.71586199 15.4266076,10.2014519 15.4266076,12.0386199 C15.4266076,13.87349 13.9387198,15.3613778 12.1027007,15.3613778 C10.2678306,15.3613778 8.78109173,13.87349 8.78109173,12.0386199 C8.78224067,10.2026008 10.2689795,8.71586199 12.1027007,8.71586199" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">Read Clutch review</div></div></a></div></div></div></div><div data-index="1" class="slick-slide slick-active" tabindex="-1" aria-hidden="false" style="outline:none;width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:185px;height:28px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='113.51351351351352'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/d6432f0d0b7ca37df9c75c55a4d9b684/baea9/datacenters_logo.webp 46w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/9d5ea/datacenters_logo.webp 93w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/7
561dddf/datacenters_logo.webp 185w" sizes="(min-width: 185px) 185px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 185px) 185px, 100vw" decoding="async" loading="lazy" data-src="/static/d6432f0d0b7ca37df9c75c55a4d9b684/4711d/datacenters_logo.png" data-srcset="/static/d6432f0d0b7ca37df9c75c55a4d9b684/dfe5d/datacenters_logo.png 46w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/0a58a/datacenters_logo.png 93w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/4711d/datacenters_logo.png 185w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/d6432f0d0b7ca37df9c75c55a4d9b684/baea9/datacenters_logo.webp 46w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/9d5ea/datacenters_logo.webp 93w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/7dddf/datacenters_logo.webp 185w" sizes="(min-width: 185px) 185px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 185px) 185px, 100vw" decoding="async" loading="lazy" src="/static/d6432f0d0b7ca37df9c75c55a4d9b684/4711d/datacenters_logo.png" srcSet="/static/d6432f0d0b7ca37df9c75c55a4d9b684/dfe5d/datacenters_logo.png 46w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/0a58a/datacenters_logo.png 93w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/4711d/datacenters_logo.png 185w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">One of the things that had the biggest impact was the way ShakaCode managed the project. Everything was super-transparent, which, because weâre extremely cost-conscious, was important to us. Everyone tracks their time by the task. That made it easier to predict how long it would take and how much it would cost to develop new features.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/52b57bc216cf4a559557dc3b7c98e247/ea39e/mike.webp 20w,/static/52b57bc216cf4a559557dc3b7c98e247/25769/mike.webp 40w,/static/52b57bc216cf4a559557dc3b7c98e247/1b1dc/mike.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" data-src="/static/52b57bc216cf4a559557dc3b7c98e247/1272e/mike.png" data-srcset="/static/52b57bc216cf4a559557dc3b7c98e247/9cb3b/mike.png 20w,/static/52b57bc216cf4a559557dc3b7c98e247/ee9bb/mike.png 40w,/static/52b57bc216cf4a559557dc3b7c98e247/1272e/mike.png 80w" alt="Mike Price - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/52b57bc216cf4a559557dc3b7c98e247/ea39e/mike.webp 20w,/static/52b57bc216cf4a559557dc3b7c98e247/25769/mike.webp 40w,/static/52b57bc216cf4a559557dc3b7c98e247/1b1dc/mike.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" src="/static/52b57bc216cf4a559557dc3b7c98e247/1272e/mike.png" srcSet="/static/52b57bc216cf4a559557dc3b7c98e247/9cb3b/mike.png 20w,/static/52b57bc216cf4a559557dc3b7c98e247/ee9bb/mike.png 40w,/static/52b57bc216cf4a559557dc3b7c98e247/1272e/mike.png 80w" alt="Mike Price - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Mike Price</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>VP of Software Engineering at GCG and<!-- --> <a href="https://datacenters.com" target="_blank" rel="noopener noreferrer">Datacenters.com</a></span></span></div></div><a class="Review__InternalLinkWrapper-sc-18rm1r3-6 ljLJpA" href="/recent-work/datacenters/"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconCaseStudy-sc-18rm1r3-3 hOnljw" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-casestudy-_R_dtajmq_"><title id="svg-casestudy-_R_dtajmq_">CaseStudy</title><g id="CaseStudy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.8718878,2 L20,5 L20,20 C20,21.1045695 19.1045695,22 18,22 L6,22 C4.8954305,22 4,21.1045695 4,20 L4,4 C4,2.8954305 4.8954305,2 6,2 L16.8718878,2 Z M16,4 L7.5,4 C7.25454011,4 7.05039163,4.17687516 7.00805567,4.41012437 L7,4.5 L7,19.5 C7,19.7454599 7.17687516,19.9496084 7.41012437,19.9919443 L7.5,20 L17.5,20 C17.7454599,20 17.9496084,19.8231248 17.9919443,19.5898756 L18,19.5 L18,6 L16,4 Z M15,10 C15.5522847,10 16,10.4477153 16,11 L16,13 C16,13.5522847 15.5522847,14 15,14 L10,14 C9.44771525,14 9,13.5522847 9,13 L9,11 C9,10.4477153 9.44771525,10 10,10 L15,10 Z" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">View case study</div></div></a><div class="Review__GreySeparatorLine-sc-18rm1r3-9 dzENpA"></div><a href="https://clutch.co/profile/shakacode#review-1096427" target="_blank" rel="noopener noreferrer" class="Review__ExternalLinkWrapper-sc-18rm1r3-5 giQFBd"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconClutch-sc-18rm1r3-4 hRmKFx" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-clutch-_R_1ntajmq_"><title id="svg-clutch-_R_1ntajmq_">Clutch</title><g id="Clutch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.0263585,16.1598968 C15.0256247,17.0595231 13.7043344,17.5581666 12.2543619,17.5581666 C9.05798822,17.5581666 6.71068724,15.2108656 6.71068724,11.9880662 C6.71068724,8.76526676 8.98330659,6.51677532 12.2543619,6.51677532 C13.6790575,6.51677532 15.0256247,6.99129088 16.0516353,7.89091725 L16.7490468,8.49066816 L19.8477599,5.39310407 L19.0722199,4.69339467 C17.2488393,3.04695203 14.8280056,2.12319776 12.2532129,2.12319776 C6.50847237,2.12319776 2.3366418,6.26860252 2.3366418,11.9639383 C2.3366418,17.6351461 6.60843086,21.9287652 12.2532129,21.9287652 C14.8762614,21.9287652 17.3223719,21.0050109 19.1227736,19.3321425 L19.8718878,18.6324331 L16.7249189,15.5371669 L16.0263585,16.1598968 Z" fill="#343D3F"></path><path d="M12.1027007,8.71586199 C13.9387198,8.71586199 15.4266076,10.2014519 15.4266076,12.0386199 C15.4266076,13.87349 13.9387198,15.3613778 12.1027007,15.3613778 C10.2678306,15.3613778 8.78109173,13.87349 8.78109173,12.0386199 C8.78224067,10.2026008 10.2689795,8.71586199 12.1027007,8.71586199" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">Read Clutch review</div></div></a></div></div></div></div><div data-index="2" class="slick-slide slick-active" tabindex="-1" aria-hidden="false" style="outline:none;width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:100px;height:38px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='285'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#08b8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a7ef41ffaa4631da85cbf4a549f99cc4/958c5/printivity_logo.webp 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/f8daa/printivity_logo.webp 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/dce45/printivity_logo.webp 100w" sizes="(min-width: 100px) 100px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 100px) 100px, 100vw" decoding="async" loading="lazy" data-src="/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png" data-srcset="/static/a7ef41ffaa4631da85cbf4a549f99cc4/193ed/printivity_logo.png 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/83415/printivity_logo.png 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png 100w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a7ef41ffaa4631da85cbf4a549f99cc4/958c5/printivity_logo.webp 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/f8daa/printivity_logo.webp 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/dce45/printivity_logo.webp 100w" sizes="(min-width: 100px) 100px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 100px) 100px, 100vw" decoding="async" loading="lazy" src="/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png" srcSet="/static/a7ef41ffaa4631da85cbf4a549f99cc4/193ed/printivity_logo.png 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/83415/printivity_logo.png 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png 100w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">Weâve reduced the time needed to bring new products to market, from a technical perspective, from weeks or months to just a few days, with cost savings of up to 90%. ShakaCode far exceeded our expectations, providing us with a platform on which we can grow our business.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/132764dcd1f932e9804100d6c72249a1/ea39e/erik.webp 20w,/static/132764dcd1f932e9804100d6c72249a1/25769/erik.webp 40w,/static/132764dcd1f932e9804100d6c72249a1/1b1dc/erik.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" data-src="/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png" data-srcset="/static/132764dcd1f932e9804100d6c72249a1/9cb3b/erik.png 20w,/static/132764dcd1f932e9804100d6c72249a1/ee9bb/erik.png 40w,/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png 80w" alt="Erik Krueger - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/132764dcd1f932e9804100d6c72249a1/ea39e/erik.webp 20w,/static/132764dcd1f932e9804100d6c72249a1/25769/erik.webp 40w,/static/132764dcd1f932e9804100d6c72249a1/1b1dc/erik.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" src="/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png" srcSet="/static/132764dcd1f932e9804100d6c72249a1/9cb3b/erik.png 20w,/static/132764dcd1f932e9804100d6c72249a1/ee9bb/erik.png 40w,/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png 80w" alt="Erik Krueger - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Erik Krueger</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>CTO at<!-- --> <a href="https://www.printivity.com/" target="_blank" rel="noopener noreferrer">Printivity</a></span></span></div></div><a class="Review__InternalLinkWrapper-sc-18rm1r3-6 ljLJpA" href="/recent-work/printivity/"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconCaseStudy-sc-18rm1r3-3 hOnljw" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-casestudy-_R_dtijmq_"><title id="svg-casestudy-_R_dtijmq_">CaseStudy</title><g id="CaseStudy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.8718878,2 L20,5 L20,20 C20,21.1045695 19.1045695,22 18,22 L6,22 C4.8954305,22 4,21.1045695 4,20 L4,4 C4,2.8954305 4.8954305,2 6,2 L16.8718878,2 Z M16,4 L7.5,4 C7.25454011,4 7.05039163,4.17687516 7.00805567,4.41012437 L7,4.5 L7,19.5 C7,19.7454599 7.17687516,19.9496084 7.41012437,19.9919443 L7.5,20 L17.5,20 C17.7454599,20 17.9496084,19.8231248 17.9919443,19.5898756 L18,19.5 L18,6 L16,4 Z M15,10 C15.5522847,10 16,10.4477153 16,11 L16,13 C16,13.5522847 15.5522847,14 15,14 L10,14 C9.44771525,14 9,13.5522847 9,13 L9,11 C9,10.4477153 9.44771525,10 10,10 L15,10 Z" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">View case study</div></div></a><div class="Review__GreySeparatorLine-sc-18rm1r3-9 dzENpA"></div><a href="https://clutch.co/profile/shakacode?page=1#review-1047338" target="_blank" rel="noopener noreferrer" class="Review__ExternalLinkWrapper-sc-18rm1r3-5 giQFBd"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconClutch-sc-18rm1r3-4 hRmKFx" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-clutch-_R_1ntijmq_"><title id="svg-clutch-_R_1ntijmq_">Clutch</title><g id="Clutch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.0263585,16.1598968 C15.0256247,17.0595231 13.7043344,17.5581666 12.2543619,17.5581666 C9.05798822,17.5581666 6.71068724,15.2108656 6.71068724,11.9880662 C6.71068724,8.76526676 8.98330659,6.51677532 12.2543619,6.51677532 C13.6790575,6.51677532 15.0256247,6.99129088 16.0516353,7.89091725 L16.7490468,8.49066816 L19.8477599,5.39310407 L19.0722199,4.69339467 C17.2488393,3.04695203 14.8280056,2.12319776 12.2532129,2.12319776 C6.50847237,2.12319776 2.3366418,6.26860252 2.3366418,11.9639383 C2.3366418,17.6351461 6.60843086,21.9287652 12.2532129,21.9287652 C14.8762614,21.9287652 17.3223719,21.0050109 19.1227736,19.3321425 L19.8718878,18.6324331 L16.7249189,15.5371669 L16.0263585,16.1598968 Z" fill="#343D3F"></path><path d="M12.1027007,8.71586199 C13.9387198,8.71586199 15.4266076,10.2014519 15.4266076,12.0386199 C15.4266076,13.87349 13.9387198,15.3613778 12.1027007,15.3613778 C10.2678306,15.3613778 8.78109173,13.87349 8.78109173,12.0386199 C8.78224067,10.2026008 10.2689795,8.71586199 12.1027007,8.71586199" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">Read Clutch review</div></div></a></div></div></div></div><div data-index="3" class="slick-slide" tabindex="-1" aria-hidden="true" style="outline:none;width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:108px;height:18px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='125'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f80808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/85da3af5518fc7c768a793e0f2a4589a/2f072/hvmn_logo.webp 27w,/static/85da3af5518fc7c768a793e0f2a4589a/dd8f1/hvmn_logo.webp 54w,/static/85da3af5518fc7c768a793e0f2a4589a/49915/hvmn_logo.webp 108w" sizes="(min-width: 108px) 108px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 108px) 108px, 100vw" decoding="async" loading="lazy" data-src="/static/85da3af5518fc7c768a793e0f2a4589a/62c72/hvmn_logo.png" data-srcset="/static/85da3af5518fc7c768a793e0f2a4589a/e7b9c/hvmn_logo.png 27w,/static/85da3af5518fc7c768a793e0f2a4589a/e8d32/hvmn_logo.png 54w,/static/85da3af5518fc7c768a793e0f2a4589a/62c72/hvmn_logo.png 108w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/85da3af5518fc7c768a793e0f2a4589a/2f072/hvmn_logo.webp 27w,/static/85da3af5518fc7c768a793e0f2a4589a/dd8f1/hvmn_logo.webp 54w,/static/85da3af5518fc7c768a793e0f2a4589a/49915/hvmn_logo.webp 108w" sizes="(min-width: 108px) 108px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 108px) 108px, 100vw" decoding="async" loading="lazy" src="/static/85da3af5518fc7c768a793e0f2a4589a/62c72/hvmn_logo.png" srcSet="/static/85da3af5518fc7c768a793e0f2a4589a/e7b9c/hvmn_logo.png 27w,/static/85da3af5518fc7c768a793e0f2a4589a/e8d32/hvmn_logo.png 54w,/static/85da3af5518fc7c768a793e0f2a4589a/62c72/hvmn_logo.png 108w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">Over three weeks, the ShakaCode team helped us migrate to React on Rails Pro, set up Webpack v4, migrated our entire asset pipeline to Webpack v4. The results were great. Our blog and product pages are 80-90% faster after that effort. The improved fragment caching was quick to set up and made a huge dent in our average server response times.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a5145a98dd4ba53d88ede123611167c9/ea39e/paul.webp 20w,/static/a5145a98dd4ba53d88ede123611167c9/25769/paul.webp 40w,/static/a5145a98dd4ba53d88ede123611167c9/1b1dc/paul.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" data-src="/static/a5145a98dd4ba53d88ede123611167c9/1272e/paul.png" data-srcset="/static/a5145a98dd4ba53d88ede123611167c9/9cb3b/paul.png 20w,/static/a5145a98dd4ba53d88ede123611167c9/ee9bb/paul.png 40w,/static/a5145a98dd4ba53d88ede123611167c9/1272e/paul.png 80w" alt="Paul Benigeri - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a5145a98dd4ba53d88ede123611167c9/ea39e/paul.webp 20w,/static/a5145a98dd4ba53d88ede123611167c9/25769/paul.webp 40w,/static/a5145a98dd4ba53d88ede123611167c9/1b1dc/paul.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" src="/static/a5145a98dd4ba53d88ede123611167c9/1272e/paul.png" srcSet="/static/a5145a98dd4ba53d88ede123611167c9/9cb3b/paul.png 20w,/static/a5145a98dd4ba53d88ede123611167c9/ee9bb/paul.png 40w,/static/a5145a98dd4ba53d88ede123611167c9/1272e/paul.png 80w" alt="Paul Benigeri - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Paul Benigeri</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>VP of Growth & Engineering at<!-- --> <a href="https://hvmn.com" target="_blank" rel="noopener noreferrer">HVMN</a></span></span></div></div></div></div></div></div><div data-index="4" class="slick-slide" tabindex="-1" aria-hidden="true" style="outline:none;width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:95px;height:37px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='292.10526315789474'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a4f65e35723af9b90e7f60c3c51be244/13869/bmdi_logo.webp 24w,/static/a4f65e35723af9b90e7f60c3c51be244/a5b42/bmdi_logo.webp 48w,/static/a4f65e35723af9b90e7f60c3c51be244/dbbde/bmdi_logo.webp 95w" sizes="(min-width: 95px) 95px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 95px) 95px, 100vw" decoding="async" loading="lazy" data-src="/static/a4f65e35723af9b90e7f60c3c51be244/e8fbf/bmdi_logo.jpg" data-srcset="/static/a4f65e35723af9b90e7f60c3c51be244/b55cd/bmdi_logo.jpg 24w,/static/a4f65e35723af9b90e7f60c3c51be244/138e5/bmdi_logo.jpg 48w,/static/a4f65e35723af9b90e7f60c3c51be244/e8fbf/bmdi_logo.jpg 95w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a4f65e35723af9b90e7f60c3c51be244/13869/bmdi_logo.webp 24w,/static/a4f65e35723af9b90e7f60c3c51be244/a5b42/bmdi_logo.webp 48w,/static/a4f65e35723af9b90e7f60c3c51be244/dbbde/bmdi_logo.webp 95w" sizes="(min-width: 95px) 95px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 95px) 95px, 100vw" decoding="async" loading="lazy" src="/static/a4f65e35723af9b90e7f60c3c51be244/e8fbf/bmdi_logo.jpg" srcSet="/static/a4f65e35723af9b90e7f60c3c51be244/b55cd/bmdi_logo.jpg 24w,/static/a4f65e35723af9b90e7f60c3c51be244/138e5/bmdi_logo.jpg 48w,/static/a4f65e35723af9b90e7f60c3c51be244/e8fbf/bmdi_logo.jpg 95w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">The functionality that ShakaCode developed for the Revenue Equation App has made a huge difference to our clients. Itâs enabled them to be more proactive when it comes to identifying underperforming campaigns and optimize spend to drive revenue and reduce risk. That translates to increased profits and happy shareholders.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a28028e969116f06b62cb01d99dc3ae8/ea39e/rachel_hazelwood.webp 20w,/static/a28028e969116f06b62cb01d99dc3ae8/25769/rachel_hazelwood.webp 40w,/static/a28028e969116f06b62cb01d99dc3ae8/1b1dc/rachel_hazelwood.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" data-src="/static/a28028e969116f06b62cb01d99dc3ae8/1272e/rachel_hazelwood.png" data-srcset="/static/a28028e969116f06b62cb01d99dc3ae8/9cb3b/rachel_hazelwood.png 20w,/static/a28028e969116f06b62cb01d99dc3ae8/ee9bb/rachel_hazelwood.png 40w,/static/a28028e969116f06b62cb01d99dc3ae8/1272e/rachel_hazelwood.png 80w" alt="Rachel Hazelwood - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a28028e969116f06b62cb01d99dc3ae8/ea39e/rachel_hazelwood.webp 20w,/static/a28028e969116f06b62cb01d99dc3ae8/25769/rachel_hazelwood.webp 40w,/static/a28028e969116f06b62cb01d99dc3ae8/1b1dc/rachel_hazelwood.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" src="/static/a28028e969116f06b62cb01d99dc3ae8/1272e/rachel_hazelwood.png" srcSet="/static/a28028e969116f06b62cb01d99dc3ae8/9cb3b/rachel_hazelwood.png 20w,/static/a28028e969116f06b62cb01d99dc3ae8/ee9bb/rachel_hazelwood.png 40w,/static/a28028e969116f06b62cb01d99dc3ae8/1272e/rachel_hazelwood.png 80w" alt="Rachel Hazelwood - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Rachel Hazelwood</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>Head of Product Management,<!-- --> <a href="https://bluemoondigital.co/" target="_blank" rel="noopener noreferrer">Blue Moon Digital, Inc.</a></span></span></div></div><a class="Review__InternalLinkWrapper-sc-18rm1r3-6 ljLJpA" href="/recent-work/bmdi/"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconCaseStudy-sc-18rm1r3-3 hOnljw" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-casestudy-_R_du2jmq_"><title id="svg-casestudy-_R_du2jmq_">CaseStudy</title><g id="CaseStudy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.8718878,2 L20,5 L20,20 C20,21.1045695 19.1045695,22 18,22 L6,22 C4.8954305,22 4,21.1045695 4,20 L4,4 C4,2.8954305 4.8954305,2 6,2 L16.8718878,2 Z M16,4 L7.5,4 C7.25454011,4 7.05039163,4.17687516 7.00805567,4.41012437 L7,4.5 L7,19.5 C7,19.7454599 7.17687516,19.9496084 7.41012437,19.9919443 L7.5,20 L17.5,20 C17.7454599,20 17.9496084,19.8231248 17.9919443,19.5898756 L18,19.5 L18,6 L16,4 Z M15,10 C15.5522847,10 16,10.4477153 16,11 L16,13 C16,13.5522847 15.5522847,14 15,14 L10,14 C9.44771525,14 9,13.5522847 9,13 L9,11 C9,10.4477153 9.44771525,10 10,10 L15,10 Z" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">View case study</div></div></a><div class="Review__GreySeparatorLine-sc-18rm1r3-9 dzENpA"></div><a href="https://clutch.co/profile/shakacode#review-1249908" target="_blank" rel="noopener noreferrer" class="Review__ExternalLinkWrapper-sc-18rm1r3-5 giQFBd"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconClutch-sc-18rm1r3-4 hRmKFx" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-clutch-_R_1nu2jmq_"><title id="svg-clutch-_R_1nu2jmq_">Clutch</title><g id="Clutch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.0263585,16.1598968 C15.0256247,17.0595231 13.7043344,17.5581666 12.2543619,17.5581666 C9.05798822,17.5581666 6.71068724,15.2108656 6.71068724,11.9880662 C6.71068724,8.76526676 8.98330659,6.51677532 12.2543619,6.51677532 C13.6790575,6.51677532 15.0256247,6.99129088 16.0516353,7.89091725 L16.7490468,8.49066816 L19.8477599,5.39310407 L19.0722199,4.69339467 C17.2488393,3.04695203 14.8280056,2.12319776 12.2532129,2.12319776 C6.50847237,2.12319776 2.3366418,6.26860252 2.3366418,11.9639383 C2.3366418,17.6351461 6.60843086,21.9287652 12.2532129,21.9287652 C14.8762614,21.9287652 17.3223719,21.0050109 19.1227736,19.3321425 L19.8718878,18.6324331 L16.7249189,15.5371669 L16.0263585,16.1598968 Z" fill="#343D3F"></path><path d="M12.1027007,8.71586199 C13.9387198,8.71586199 15.4266076,10.2014519 15.4266076,12.0386199 C15.4266076,13.87349 13.9387198,15.3613778 12.1027007,15.3613778 C10.2678306,15.3613778 8.78109173,13.87349 8.78109173,12.0386199 C8.78224067,10.2026008 10.2689795,8.71586199 12.1027007,8.71586199" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">Read Clutch review</div></div></a></div></div></div></div><div data-index="5" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:126px;height:39px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='232.14285714285714'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/40fcb6fe86d62f1878447b623467af1a/77cc0/popmenu_logo.webp 32w,/static/40fcb6fe86d62f1878447b623467af1a/2a99f/popmenu_logo.webp 63w,/static/40fcb6fe86d62f1878447b623467af1a/46f1d/popmenu_logo.webp 12
5616w" sizes="(min-width: 126px) 126px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 126px) 126px, 100vw" decoding="async" loading="lazy" data-src="/static/40fcb6fe86d62f1878447b623467af1a/f9266/popmenu_logo.png" data-srcset="/static/40fcb6fe86d62f1878447b623467af1a/da45b/popmenu_logo.png 32w,/static/40fcb6fe86d62f1878447b623467af1a/9c426/popmenu_logo.png 63w,/static/40fcb6fe86d62f1878447b623467af1a/f9266/popmenu_logo.png 126w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/40fcb6fe86d62f1878447b623467af1a/77cc0/popmenu_logo.webp 32w,/static/40fcb6fe86d62f1878447b623467af1a/2a99f/popmenu_logo.webp 63w,/static/40fcb6fe86d62f1878447b623467af1a/46f1d/popmenu_logo.webp 126w" sizes="(min-width: 126px) 126px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 126px) 126px, 100vw" decoding="async" loading="lazy" src="/static/40fcb6fe86d62f1878447b623467af1a/f9266/popmenu_logo.png" srcSet="/static/40fcb6fe86d62f1878447b623467af1a/da45b/p
561opmenu_logo.png 32w,/static/40fcb6fe86d62f1878447b623467af1a/9c426/popmenu_logo.png 63w,/static/40fcb6fe86d62f1878447b623467af1a/f9266/popmenu_logo.png 126w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">ShakaCode far exceeded our expectations. Not only did they bring industry-leading technology - React on Rails Pro - to give us the performance and savings we needed, they also gave us the partner we were looking for. ShakaCode has provided the skills, experience, and professionalism we can depend upon as we grow our working relationship.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a76655a8b4f831ad9a7c0c9efd3caab6/40a99/justis_blasco.webp 16w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/399cd/justis_blasco.webp 32w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/b4444/justis_blasco.webp 64w" sizes="(min-width: 64px) 64px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 64px) 64px, 100vw" decoding="async" loading="lazy" data-src="/static/a76655a8b4f831ad9a7c0c9efd3caab6/5f967/justis_blasco.png" data-srcset="/static/a76655a8b4f831ad9a7c0c9efd3caab6/cd65f/justis_blasco.png 16w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/48496/justis_blasco.png 32w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/5f967/justis_blasco.png 64w" alt="Justis Blasco - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a76655a8b4f831ad9a7c0c9efd3caab6/40a99/justis_blasco.webp 16w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/399cd/justis_blasco.webp 32w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/b4444/justis_blasco.webp 64w" sizes="(min-width: 64px) 64px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 64px) 64px, 100vw" decoding="async" loading="lazy" src="/static/a76655a8b4f831ad9a7c0c9efd3caab6/5f967/justis_blasco.png" srcSet="/static/a76655a8b4f831ad9a7c0c9efd3caab6/cd65f/justis_blasco.png 16w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/48496/justis_blasco.png 32w,/static/a76655a8b4f831ad9a7c0c9efd3caab6/5f967/justis_blasco.png 64w" alt="Justis Blasco - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Justis Blasco</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>Chief Technology Officer & Co-founder,<!-- --> <a href="https://get.popmenu.com/" target="_blank" rel="noopener noreferrer">Popmenu</a></span></span></div></div><a class="Review__InternalLinkWrapper-sc-18rm1r3-6 ljLJpA" href="/recent-work/popmenu/"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconCaseStudy-sc-18rm1r3-3 hOnljw" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-casestudy-_R_duajmq_"><title id="svg-casestudy-_R_duajmq_">CaseStudy</title><g id="CaseStudy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.8718878,2 L20,5 L20,20 C20,21.1045695 19.1045695,22 18,22 L6,22 C4.8954305,22 4,21.1045695 4,20 L4,4 C4,2.8954305 4.8954305,2 6,2 L16.8718878,2 Z M16,4 L7.5,4 C7.25454011,4 7.05039163,4.17687516 7.00805567,4.41012437 L7,4.5 L7,19.5 C7,19.7454599 7.17687516,19.9496084 7.41012437,19.9919443 L7.5,20 L17.5,20 C17.7454599,20 17.9496084,19.8231248 17.9919443,19.5898756 L18,19.5 L18,6 L16,4 Z M15,10 C15.5522847,10 16,10.4477153 16,11 L16,13 C16,13.5522847 15.5522847,14 15,14 L10,14 C9.44771525,14 9,13.5522847 9,13 L9,11 C9,10.4477153 9.44771525,10 10,10 L15,10 Z" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">View case study</div></div></a><div class="Review__GreySeparatorLine-sc-18rm1r3-9 dzENpA"></div><a href="https://clutch.co/profile/shakacode#review-1215882" target="_blank" rel="noopener noreferrer" class="Review__ExternalLinkWrapper-sc-18rm1r3-5 giQFBd"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconClutch-sc-18rm1r3-4 hRmKFx" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-clutch-_R_1nuajmq_"><title id="svg-clutch-_R_1nuajmq_">Clutch</title><g id="Clutch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.0263585,16.1598968 C15.0256247,17.0595231 13.7043344,17.5581666 12.2543619,17.5581666 C9.05798822,17.5581666 6.71068724,15.2108656 6.71068724,11.9880662 C6.71068724,8.76526676 8.98330659,6.51677532 12.2543619,6.51677532 C13.6790575,6.51677532 15.0256247,6.99129088 16.0516353,7.89091725 L16.7490468,8.49066816 L19.8477599,5.39310407 L19.0722199,4.69339467 C17.2488393,3.04695203 14.8280056,2.12319776 12.2532129,2.12319776 C6.50847237,2.12319776 2.3366418,6.26860252 2.3366418,11.9639383 C2.3366418,17.6351461 6.60843086,21.9287652 12.2532129,21.9287652 C14.8762614,21.9287652 17.3223719,21.0050109 19.1227736,19.3321425 L19.8718878,18.6324331 L16.7249189,15.5371669 L16.0263585,16.1598968 Z" fill="#343D3F"></path><path d="M12.1027007,8.71586199 C13.9387198,8.71586199 15.4266076,10.2014519 15.4266076,12.0386199 C15.4266076,13.87349 13.9387198,15.3613778 12.1027007,15.3613778 C10.2678306,15.3613778 8.78109173,13.87349 8.78109173,12.0386199 C8.78224067,10.2026008 10.2689795,8.71586199 12.1027007,8.71586199" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">Read Clutch review</div></div></a></div></div></div></div><div data-index="6" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:185px;height:28px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='113.51351351351352'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/d6432f0d0b7ca37df9c75c55a4d9b684/baea9/datacenters_logo.webp 46w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/9d5ea/datacenters_logo.webp 93w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/7
561dddf/datacenters_logo.webp 185w" sizes="(min-width: 185px) 185px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 185px) 185px, 100vw" decoding="async" loading="lazy" data-src="/static/d6432f0d0b7ca37df9c75c55a4d9b684/4711d/datacenters_logo.png" data-srcset="/static/d6432f0d0b7ca37df9c75c55a4d9b684/dfe5d/datacenters_logo.png 46w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/0a58a/datacenters_logo.png 93w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/4711d/datacenters_logo.png 185w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/d6432f0d0b7ca37df9c75c55a4d9b684/baea9/datacenters_logo.webp 46w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/9d5ea/datacenters_logo.webp 93w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/7dddf/datacenters_logo.webp 185w" sizes="(min-width: 185px) 185px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 185px) 185px, 100vw" decoding="async" loading="lazy" src="/static/d6432f0d0b7ca37df9c75c55a4d9b684/4711d/datacenters_logo.png" srcSet="/static/d6432f0d0b7ca37df9c75c55a4d9b684/dfe5d/datacenters_logo.png 46w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/0a58a/datacenters_logo.png 93w,/static/d6432f0d0b7ca37df9c75c55a4d9b684/4711d/datacenters_logo.png 185w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">One of the things that had the biggest impact was the way ShakaCode managed the project. Everything was super-transparent, which, because weâre extremely cost-conscious, was important to us. Everyone tracks their time by the task. That made it easier to predict how long it would take and how much it would cost to develop new features.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#f8f8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/52b57bc216cf4a559557dc3b7c98e247/ea39e/mike.webp 20w,/static/52b57bc216cf4a559557dc3b7c98e247/25769/mike.webp 40w,/static/52b57bc216cf4a559557dc3b7c98e247/1b1dc/mike.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" data-src="/static/52b57bc216cf4a559557dc3b7c98e247/1272e/mike.png" data-srcset="/static/52b57bc216cf4a559557dc3b7c98e247/9cb3b/mike.png 20w,/static/52b57bc216cf4a559557dc3b7c98e247/ee9bb/mike.png 40w,/static/52b57bc216cf4a559557dc3b7c98e247/1272e/mike.png 80w" alt="Mike Price - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/52b57bc216cf4a559557dc3b7c98e247/ea39e/mike.webp 20w,/static/52b57bc216cf4a559557dc3b7c98e247/25769/mike.webp 40w,/static/52b57bc216cf4a559557dc3b7c98e247/1b1dc/mike.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" src="/static/52b57bc216cf4a559557dc3b7c98e247/1272e/mike.png" srcSet="/static/52b57bc216cf4a559557dc3b7c98e247/9cb3b/mike.png 20w,/static/52b57bc216cf4a559557dc3b7c98e247/ee9bb/mike.png 40w,/static/52b57bc216cf4a559557dc3b7c98e247/1272e/mike.png 80w" alt="Mike Price - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Mike Price</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>VP of Software Engineering at GCG and<!-- --> <a href="https://datacenters.com" target="_blank" rel="noopener noreferrer">Datacenters.com</a></span></span></div></div><a class="Review__InternalLinkWrapper-sc-18rm1r3-6 ljLJpA" href="/recent-work/datacenters/"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconCaseStudy-sc-18rm1r3-3 hOnljw" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-casestudy-_R_duijmq_"><title id="svg-casestudy-_R_duijmq_">CaseStudy</title><g id="CaseStudy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.8718878,2 L20,5 L20,20 C20,21.1045695 19.1045695,22 18,22 L6,22 C4.8954305,22 4,21.1045695 4,20 L4,4 C4,2.8954305 4.8954305,2 6,2 L16.8718878,2 Z M16,4 L7.5,4 C7.25454011,4 7.05039163,4.17687516 7.00805567,4.41012437 L7,4.5 L7,19.5 C7,19.7454599 7.17687516,19.9496084 7.41012437,19.9919443 L7.5,20 L17.5,20 C17.7454599,20 17.9496084,19.8231248 17.9919443,19.5898756 L18,19.5 L18,6 L16,4 Z M15,10 C15.5522847,10 16,10.4477153 16,11 L16,13 C16,13.5522847 15.5522847,14 15,14 L10,14 C9.44771525,14 9,13.5522847 9,13 L9,11 C9,10.4477153 9.44771525,10 10,10 L15,10 Z" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">View case study</div></div></a><div class="Review__GreySeparatorLine-sc-18rm1r3-9 dzENpA"></div><a href="https://clutch.co/profile/shakacode#review-1096427" target="_blank" rel="noopener noreferrer" class="Review__ExternalLinkWrapper-sc-18rm1r3-5 giQFBd"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconClutch-sc-18rm1r3-4 hRmKFx" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-clutch-_R_1nuijmq_"><title id="svg-clutch-_R_1nuijmq_">Clutch</title><g id="Clutch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.0263585,16.1598968 C15.0256247,17.0595231 13.7043344,17.5581666 12.2543619,17.5581666 C9.05798822,17.5581666 6.71068724,15.2108656 6.71068724,11.9880662 C6.71068724,8.76526676 8.98330659,6.51677532 12.2543619,6.51677532 C13.6790575,6.51677532 15.0256247,6.99129088 16.0516353,7.89091725 L16.7490468,8.49066816 L19.8477599,5.39310407 L19.0722199,4.69339467 C17.2488393,3.04695203 14.8280056,2.12319776 12.2532129,2.12319776 C6.50847237,2.12319776 2.3366418,6.26860252 2.3366418,11.9639383 C2.3366418,17.6351461 6.60843086,21.9287652 12.2532129,21.9287652 C14.8762614,21.9287652 17.3223719,21.0050109 19.1227736,19.3321425 L19.8718878,18.6324331 L16.7249189,15.5371669 L16.0263585,16.1598968 Z" fill="#343D3F"></path><path d="M12.1027007,8.71586199 C13.9387198,8.71586199 15.4266076,10.2014519 15.4266076,12.0386199 C15.4266076,13.87349 13.9387198,15.3613778 12.1027007,15.3613778 C10.2678306,15.3613778 8.78109173,13.87349 8.78109173,12.0386199 C8.78224067,10.2026008 10.2689795,8.71586199 12.1027007,8.71586199" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">Read Clutch review</div></div></a></div></div></div></div><div data-index="7" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width:9.090909090909092%"><div><div class="Review__Wrapper-sc-18rm1r3-1 fyziDI"><div data-gatsby-image-wrapper="" style="width:100px;height:38px" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='285'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#08b8f8;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/a7ef41ffaa4631da85cbf4a549f99cc4/958c5/printivity_logo.webp 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/f8daa/printivity_logo.webp 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/dce45/printivity_logo.webp 100w" sizes="(min-width: 100px) 100px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 100px) 100px, 100vw" decoding="async" loading="lazy" data-src="/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png" data-srcset="/static/a7ef41ffaa4631da85cbf4a549f99cc4/193ed/printivity_logo.png 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/83415/printivity_logo.png 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png 100w" alt="company logo"/></picture><noscript><picture><source type="image/webp" srcSet="/static/a7ef41ffaa4631da85cbf4a549f99cc4/958c5/printivity_logo.webp 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/f8daa/printivity_logo.webp 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/dce45/printivity_logo.webp 100w" sizes="(min-width: 100px) 100px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 100px) 100px, 100vw" decoding="async" loading="lazy" src="/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png" srcSet="/static/a7ef41ffaa4631da85cbf4a549f99cc4/193ed/printivity_logo.png 25w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/83415/printivity_logo.png 50w,/static/a7ef41ffaa4631da85cbf4a549f99cc4/77202/printivity_logo.png 100w" alt="company logo"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div><p class="Review__StyledParagraph-sc-18rm1r3-0 hjGwzy">Weâve reduced the time needed to bring new products to market, from a technical perspective, from weeks or months to just a few days, with cost savings of up to 90%. ShakaCode far exceeded our expectations, providing us with a platform on which we can grow our business.</p><div class="Review__BottomSection-sc-18rm1r3-2 ptnqb"><div class="Person__Wrapper-sc-mwt357-2 kNzMtF"><div class="Person__PhotoCol-sc-mwt357-3 kwfRRv"><div class="Person__PhotoWrapper-sc-mwt357-4 jfowkV"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained"><div style="max-width:750px;display:block"><img alt="" role="presentation" aria-hidden="true" src="data:image/svg+xml;charset=utf-8,%3Csvg%20height='750'%20width='750'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E" style="max-width:100%;display:block;position:static"/></div><div aria-hidden="true" data-placeholder-image="" style="opacity:1;transition:opacity 500ms linear;background-color:#080808;position:absolute;top:0;left:0;bottom:0;right:0"></div><picture><source type="image/webp" data-srcset="/static/132764dcd1f932e9804100d6c72249a1/ea39e/erik.webp 20w,/static/132764dcd1f932e9804100d6c72249a1/25769/erik.webp 40w,/static/132764dcd1f932e9804100d6c72249a1/1b1dc/erik.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" data-src="/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png" data-srcset="/static/132764dcd1f932e9804100d6c72249a1/9cb3b/erik.png 20w,/static/132764dcd1f932e9804100d6c72249a1/ee9bb/erik.png 40w,/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png 80w" alt="Erik Krueger - shakacode client"/></picture><noscript><picture><source type="image/webp" srcSet="/static/132764dcd1f932e9804100d6c72249a1/ea39e/erik.webp 20w,/static/132764dcd1f932e9804100d6c72249a1/25769/erik.webp 40w,/static/132764dcd1f932e9804100d6c72249a1/1b1dc/erik.webp 80w" sizes="(min-width: 80px) 80px, 100vw"/><img data-gatsby-image-ssr="" data-main-image="" style="opacity:0" sizes="(min-width: 80px) 80px, 100vw" decoding="async" loading="lazy" src="/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png" srcSet="/static/132764dcd1f932e9804100d6c72249a1/9cb3b/erik.png 20w,/static/132764dcd1f932e9804100d6c72249a1/ee9bb/erik.png 40w,/static/132764dcd1f932e9804100d6c72249a1/1272e/erik.png 80w" alt="Erik Krueger - shakacode client"/></picture></noscript>
561<script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script>
561</div></div></div><div class="Person__PositionCol-sc-mwt357-5 MjSeT"><span class="Person__Name-sc-mwt357-0 knPJKz">Erik Krueger</span><span class="Person__Position-sc-mwt357-1 eKYVnM"><span>CTO at<!-- --> <a href="https://www.printivity.com/" target="_blank" rel="noopener noreferrer">Printivity</a></span></span></div></div><a class="Review__InternalLinkWrapper-sc-18rm1r3-6 ljLJpA" href="/recent-work/printivity/"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconCaseStudy-sc-18rm1r3-3 hOnljw" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-casestudy-_R_duqjmq_"><title id="svg-casestudy-_R_duqjmq_">CaseStudy</title><g id="CaseStudy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.8718878,2 L20,5 L20,20 C20,21.1045695 19.1045695,22 18,22 L6,22 C4.8954305,22 4,21.1045695 4,20 L4,4 C4,2.8954305 4.8954305,2 6,2 L16.8718878,2 Z M16,4 L7.5,4 C7.25454011,4 7.05039163,4.17687516 7.00805567,4.41012437 L7,4.5 L7,19.5 C7,19.7454599 7.17687516,19.9496084 7.41012437,19.9919443 L7.5,20 L17.5,20 C17.7454599,20 17.9496084,19.8231248 17.9919443,19.5898756 L18,19.5 L18,6 L16,4 Z M15,10 C15.5522847,10 16,10.4477153 16,11 L16,13 C16,13.5522847 15.5522847,14 15,14 L10,14 C9.44771525,14 9,13.5522847 9,13 L9,11 C9,10.4477153 9.44771525,10 10,10 L15,10 Z" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">View case study</div></div></a><div class="Review__GreySeparatorLine-sc-18rm1r3-9 dzENpA"></div><a href="https://clutch.co/profile/shakacode?page=1#review-1047338" target="_blank" rel="noopener noreferrer" class="Review__ExternalLinkWrapper-sc-18rm1r3-5 giQFBd"><div class="Review__LinkDetails-sc-18rm1r3-8 gOzjYr"><svg color="black" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Review__StyledIconClutch-sc-18rm1r3-4 hRmKFx" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-clutch-_R_1nuqjmq_"><title id="svg-clutch-_R_1nuqjmq_">Clutch</title><g id="Clutch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect x="0" y="0" width="24" height="24"></rect><path d="M16.0263585,16.1598968 C15.0256247,17.0595231 13.7043344,17.5581666 12.2543619,17.5581666 C9.05798822,17.5581666 6.71068724,15.2108656 6.71068724,11.9880662 C6.71068724,8.76526676 8.98330659,6.51677532 12.2543619,6.51677532 C13.6790575,6.51677532 15.0256247,6.99129088 16.0516353,7.89091725 L16.7490468,8.49066816 L19.8477599,5.39310407 L19.0722199,4.69339467 C17.2488393,3.04695203 14.8280056,2.12319776 12.2532129,2.12319776 C6.50847237,2.12319776 2.3366418,6.26860252 2.3366418,11.9639383 C2.3366418,17.6351461 6.60843086,21.9287652 12.2532129,21.9287652 C14.8762614,21.9287652 17.3223719,21.0050109 19.1227736,19.3321425 L19.8718878,18.6324331 L16.7249189,15.5371669 L16.0263585,16.1598968 Z" fill="#343D3F"></path><path d="M12.1027007,8.71586199 C13.9387198,8.71586199 15.4266076,10.2014519 15.4266076,12.0386199 C15.4266076,13.87349 13.9387198,15.3613778 12.1027007,15.3613778 C10.2678306,15.3613778 8.78109173,13.87349 8.78109173,12.0386199 C8.78224067,10.2026008 10.2689795,8.71586199 12.1027007,8.71586199" fill="#343D3F"></path></g></svg><div class="Review__LinkName-sc-18rm1r3-7 cUXMaH">Read Clutch review</div></div></a></div></div></div></div></div></div><div class="slick-arrow slick-next" role="button" tabindex="0" aria-label="Navigate reviews"></div></div></div></div></div></div><div class="pages__Section-sc-12s69b8-2 icvXuS"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 Faq__StyledContainer-sc-agq0qi-0 cFpblv icVwJQ"><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:100%;flex-basis:100%;flex-grow:0;flex-shrink:0;max-width:100%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 eMtYwd"><span class="SectionTitle__Title-sc-mayt3a-0 esERWX">FAQ</span></div></div><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:0;padding-right:0;width:100%;flex-basis:0;flex-grow:1;flex-shrink:0;max-width:100%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 eMtYwd"><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div class="Faq__QuestionContainer-sc-agq0qi-1 ciCMSL"><div class="Faq__QuestionToggle-sc-agq0qi-2 gKlxoW"><h4 class="H4-sc-k1osi8-0 Faq__QuestionTitle-sc-agq0qi-3 bcZTSE gaZoJx">Can't we just optimize ourselves?</h4><span><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.14282 8.7998L15.2 22.8569C15.3026 22.9663 15.4265 23.0534 15.5641 23.113C15.7017 23.1725 15.85 23.2033 16 23.2033C16.1499 23.2033 16.2982 23.1725 16.4358 23.113C16.5734 23.0534 16.6974 22.9663 16.8 22.8569L30.8571 8.7998" stroke="#2A2B2B" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></div><p style="max-height:0;opacity:0" class="P-sc-2fe20n-0 Faq__Answer-sc-agq0qi-4 fduduP iBssYZ">Absolutely. We can help by setting up the A/B tests, exposing the key performance levers, and giving your team a reliable measurement loop. Performance optimization can get very tedious, if you have to measure all the metrics manually. It's common to make a page faster on desktops and introduce a bug on mobiles. We will set up A/B tests for your most important UX routes on all screen types, so you won't need to rely on manual testing. This will also catch perf-regressions and visual changes in the main branch.</p></div></div><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div class="Faq__QuestionContainer-sc-agq0qi-1 ciCMSL"><div class="Faq__QuestionToggle-sc-agq0qi-2 gKlxoW"><h4 class="H4-sc-k1osi8-0 Faq__QuestionTitle-sc-agq0qi-3 bcZTSE gaZoJx">How fast will we see results?</h4><span><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.14282 8.7998L15.2 22.8569C15.3026 22.9663 15.4265 23.0534 15.5641 23.113C15.7017 23.1725 15.85 23.2033 16 23.2033C16.1499 23.2033 16.2982 23.1725 16.4358 23.113C16.5734 23.0534 16.6974 22.9663 16.8 22.8569L30.8571 8.7998" stroke="#2A2B2B" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></div><p style="max-height:0;opacity:0" class="P-sc-2fe20n-0 Faq__Answer-sc-agq0qi-4 fduduP iBssYZ">We prioritize low-effort high-effect optimizations. So the most impressive stuff will be done in a couple of weeks. After the low-hanging fruit is handled, progress usually gets slower. We can squeeze every bit of performance out of your pages (months) or just do the basics (weeks).</p></div></div><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div class="Faq__QuestionContainer-sc-agq0qi-1 ciCMSL"><div class="Faq__QuestionToggle-sc-agq0qi-2 gKlxoW"><h4 class="H4-sc-k1osi8-0 Faq__QuestionTitle-sc-agq0qi-3 bcZTSE gaZoJx">We're not on React on Rails - can you still help?</h4><span><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.14282 8.7998L15.2 22.8569C15.3026 22.9663 15.4265 23.0534 15.5641 23.113C15.7017 23.1725 15.85 23.2033 16 23.2033C16.1499 23.2033 16.2982 23.1725 16.4358 23.113C16.5734 23.0534 16.6974 22.9663 16.8 22.8569L30.8571 8.7998" stroke="#2A2B2B" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></div><p style="max-height:0;opacity:0" class="P-sc-2fe20n-0 Faq__Answer-sc-agq0qi-4 fduduP iBssYZ">Absolutely. While we built React on Rails and have deep expertise there, our performance optimization process works with any modern web stack - Next.js, Gatsby, Vue, Angular, Svelte and more. Web Vitals and Lighthouse scores are framework-agnostic, and so is our approach.</p></div></div><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div class="Faq__QuestionContainer-sc-agq0qi-1 ciCMSL"><div class="Faq__QuestionToggle-sc-agq0qi-2 gKlxoW"><h4 class="H4-sc-k1osi8-0 Faq__QuestionTitle-sc-agq0qi-3 bcZTSE gaZoJx">So you are using AI for optimization? Isn't it reckless?</h4><span><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.14282 8.7998L15.2 22.8569C15.3026 22.9663 15.4265 23.0534 15.5641 23.113C15.7017 23.1725 15.85 23.2033 16 23.2033C16.1499 23.2033 16.2982 23.1725 16.4358 23.113C16.5734 23.0534 16.6974 22.9663 16.8 22.8569L30.8571 8.7998" stroke="#2A2B2B" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></div><p style="max-height:0;opacity:0" class="P-sc-2fe20n-0 Faq__Answer-sc-agq0qi-4 fduduP iBssYZ">Depends on how you do it. Just asking AI to make a page faster is risky. More often than not it will result in perf regressions and bugs. However our perf-testing framework rejects changes that fail its performance, visual, accessibility, and SEO gates, so the AI has to keep iterating until a change passes those checks. Then our engineers review what's left before anything ships.</p></div></div></div></div></div><div class="pages__Section-sc-12s69b8-2 cxxRKy"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 ByTheWay__StyledContainer-sc-1mdikp9-0 cFpblv ePgnYo"><div style="margin-left:-16px;margin-right:-16px;display:flex;flex-grow:0;flex-shrink:0;align-items:normal;justify-content:flex-start;flex-direction:row;flex-wrap:wrap" class="Row__RowWrapper-sc-1hye4yz-0 dEimrw"><div style="box-sizing:border-box;min-height:1px;position:relative;padding-left:16px;padding-right:16px;width:100%;flex-basis:100%;flex-grow:0;flex-shrink:0;max-width:100%;margin-left:0%;right:auto;left:auto" class="Col__ColWrapper-sc-1891fgc-0 eMtYwd"><span class="SectionTitle__Title-sc-mayt3a-0 esERWX">By the way</span>
561<p class="ByTheWay__Description-sc-1mdikp9-1 bMTaWD">We also do classic dev consulting. Need help building or scaling your app? Let's talk.</p><a class="Button__ButtonGatsbyLink-sc-xxhl33-2 eoieIP" href="/contact/">Fill out the contact form</a></div></div></div></div><div class="BookCall__BookCallWrapper-sc-kdkop6-0 erXvyi"><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 BookCall__BookCallContainer-sc-kdkop6-2 cFpblv isQwiP"><div class="BookCall__LeftCol-sc-kdkop6-1 ddFRte"><h3 class="H3-sc-1emy8q1-0 BookCall__StyledH3-sc-kdkop6-4 jrMOUV dgrNdx">Whatever the challenge, we can help!</h3><p class="BookCall__Description-sc-kdkop6-5 kxZfzU">Schedule a free, 30-minute call to discuss what ShakaCode can do for your project. Or email us at<!-- --> <a href="/cdn-cgi/l/email-protection#660509081207051226150e070d07050902034805090b"><span class="__cf_email__" data-cfemail="15767a7b6174766155667d747e74767a71703b767a78">[email protected]</span></a> <!-- -->with your ideas, challenges, or questions. We'll get back to you within two business days.</p><div class="BookCall__ClutchWidgetSlot-sc-kdkop6-6 dTBEkE clutch-widget" data-url="https://widget.clutch.co" data-widget-type="1" data-height="50" data-darkbg="1" data-clutchcompany-id="884966"></div></div><div class="BookCall__RightCol-sc-kdkop6-3 vJVYI"><a href="https://meetings.hubspot.com/justingordon/30-minute-consultation" target="_blank" rel="noopener noreferrer" class="Button__ButtonLink-sc-xxhl33-1 bHoJxm">Book a free call</a></div></div></div></div></main><footer><div style="box-sizing:border-box;position:relative;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;max-width:1156px" class="Container__ContainerWrapper-sc-azyjet-0 cFpblv"><div class="Footer__FooterRow-sc-12ia8lp-0 bZPpoQ"><div class="Footer__InfoCol-sc-12ia8lp-4 tHzLz"><a aria-current="page" class="" href="/"><svg class="IconShakacode__FooterIconShakacode-sc-1df0ktu-1 kmesXN" viewBox="0 0 206 47" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-add-photo-_R_ioq_"><title id="svg-add-photo-_R_ioq_">Add Photo</title><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="b-shaka"><stop stop-color="#F32B05" offset="0%"></stop><stop stop-color="#B00012" offset="100%"></stop></linearGradient><linearGradient x1="50%" y1="24.608%" x2="50%" y2="72.622%" id="c-shaka"><stop stop-color="#FF6956" offset=".792%"></stop><stop stop-color="#FF6956" stop-opacity=".01" offset="96.579%"></stop></linearGradient><path d="M11.207 10h41.586a2 2 0 011.77 1.069l8.702 16.534a2 2 0 01-.453 2.437L33.317 55.848a2 2 0 01-2.634 0L1.188 30.04a2 2 0 01-.453-2.437l8.703-16.534A2 2 0 0111.208 10z" id="a-shaka"></path></defs><g fill="none" fill-rule="evenodd"><text font-family="'Montserrat Bold', Montserrat, 'Open Sans', Arial, sans-serif" font-size="20" font-weight="bold" fill="#333738" transform="translate(0 -10)"><tspan x="80" y="41">ShakaCode</tspan></text><g transform="translate(0 -10)"><path d="M0 0h64v64H0z"></path><mask id="d-shaka" fill="#fff"><use xlink:href="#a-shaka"></use></mask><use fill="url(#b-shaka)" xlink:href="#a-shaka"></use><path d="M7 43c22.118-2.144 33.57-6.578 34.354-13.303 1.178-10.088-17.4-1.454-20.927-1 9.658-7.17 22.018-11.721 37.08-13.652H66V57H7V43z" fill="url(#c-shaka)" mask="url(#d-s
561haka)"></path></g></g></svg></a><div class="Footer__CompanyDetails-sc-12ia8lp-5 ZjBBa">ShakaCode, LLC<div class="Footer__CompanyNote-sc-12ia8lp-6 bbDMAr">Consulting since 2011</div><address class="Footer__Address-sc-12ia8lp-7 hjcyZu">141 Makahiki Street<br/>Paia, HI 96779</address></div><a href="tel:808-281-7272" class="Footer__Phone-sc-12ia8lp-8 ktsrTa">808-281-7272</a></div><div class="Footer__MenuCol-sc-12ia8lp-9 jqtrRj"><h6 class="H6-sc-1fqdyt3-0 Footer__ColumnHeader-sc-12ia8lp-3 dIDHqE koKcya"><a class="Footer__StyledLink-sc-12ia8lp-13 cKuXgv" href="/about/">About</a></h6><ul class="Footer__List-sc-12ia8lp-11 gkRlql"><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/about/#why">Why us</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/about/#our-values">Our values</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/about/#team">Meet the team</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/career/">Join the team</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/contact/">Contact</a></li></ul></div><div class="Footer__MenuCol-sc-12ia8lp-9 jqtrRj"><h6 class="H6-sc-1fqdyt3-0 Footer__ColumnHeader-sc-12ia8lp-3 dIDHqE koKcya"><a class="Footer__StyledLink-sc-12ia8lp-13 cKuXgv" href="/services/">Services</a></h6><ul class="Footer__List-sc-12ia8lp-11 gkRlql"><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/services/#what-we-do">What we do</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/services/ai-consulting/">AI Automation</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/design/">Design</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/react-on-rails-pro/">React on Rails Pro</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/shakaperf/">ShakaPerf</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/services/web-scraping-and-data-analysis/">Web Scraping & Data Analysis</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/open-source-projects/">Open source projects</a></li></ul></div><div class="Footer__MenuCol-sc-12ia8lp-9 jqtrRj"><h6 class="H6-sc-1fqdyt3-0 Footer__ColumnHeader-sc-12ia8lp-3 dIDHqE koKcya">Portfolio</h6><ul class="Footer__List-sc-12ia8lp-11 gkRlql"><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/recent-work/">Recent work</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/hichee/">HiChee.com</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/shakaflow/">ShakaFlow</a></li></ul></div><div class="Footer__MenuCol-sc-12ia8lp-9 jqtrRj"><h6 class="H6-sc-1fqdyt3-0 Footer__ColumnHeader-sc-12ia8lp-3 dIDHqE koKcya">Insights</h6><ul class="Footer__List-sc-12ia8lp-11 gkRlql"><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/blog/">Blog</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="https://forum.shakacode.com" target="_blank" rel="noopener noreferrer">Forum</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/talks/">Talks</a></li></ul></div><div class="Footer__MenuCol-sc-12ia8lp-9 jqtrRj"><h6 class="H6-sc-1fqdyt3-0 Footer__ColumnHeader-sc-12ia8lp-3 dIDHqE koKcya">Docs</h6><ul class="Footer__List-sc-12ia8lp-11 gkRlql"><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="https://reactonrails.com/docs/" target="_blank" rel="noopener noreferrer">React on Rails</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="https://reactonrails.com/docs/pro/" target="_blank" rel="noopener noreferrer">React on Rails Pro</a></li><li class="Footer__Item-sc-12ia8lp-12 hJkTqS"><a href="/control-plane-flow/docs/">Control Plane Flow</a></li></ul></div></div><div class="Footer__CopyrightSocialRow-sc-12ia8lp-1 eYKAGK"><div class="Footer__FooterMeta-sc-12ia8lp-2 ldfdIq"><div>Copyright <!-- -->2026<!-- --> ShakaCode</div><a class="Footer__FooterMetaLink-sc-12ia8lp-14 fGCfCH" href="/privacy/">Privacy & Cookies</a><button type="button" class="Footer__CookieSettingsButton-sc-12ia8lp-15 eihjKf">Cookie Settings</button></div><div class="Footer__SocialCol-sc-12ia8lp-10 fpKXnI"><a href="https://invite.reactrails.com" target="_blank" rel="noopener noreferrer" class="Button__ButtonOutlinedLink-sc-xxhl33-4 GoToButton__GoToButtonStyled-sc-1abjbqg-0 hwslQr Idquw Footer__StyledGoToButton-sc-12ia8lp-17 goWloY"><svg class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI Footer__StyledIconSlack-sc-12ia8lp-16 hOnBbQ GoToButton__StyledIcon-sc-1abjbqg-2" color="darkerRed" viewB
561ox="0 0 40 40" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-slack-_R_2d8q_"><title id="svg-slack-_R_2d8q_">Slack</title><g id="Slack" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect id="Rectangle-Slack" x="0" y="0" width="40" height="40"></rect><path d="M8.98355217,25.0128609 C8.98355217,27.2099217 7.18871304,29.0047609 4.99181739,29.0047609 C2.79500435,29.0047609 1.00024783,27.2098391 1.00024783,25.0128609 C1.00024783,22.8161304 2.79508696,21.0213739 4.99181739,21.0213739 L8.98355217,21.0213739 L8.98355217,25.0128609 Z" id="Path-1" fill="#E01E5A" fill-rule="nonzero"></path><path d="M10.9953217,25.0128609 C10.9953217,22.8161304 12.7902435,21.0213739 14.9870565,21.0213739 C17.1838696,21.0213739 18.9787087,22.816213 18.9787087,25.0128609 L18.9787087,35.0083478 C18.9787087,37.2050783 17.183787,38.9999174 14.9870565,38.9999174 C12.7901609,38.9999174 10.9953217,37.2049957 10.9953217,35.0083478 L10.9953217,25.0128609 Z" id="Path-2" fill="#E01E5A" fill-rule="nonzero"></path><path d="M14.9870565,8.98355217 C12.7901609,8.98355217 10.9953217,7.18863043 10.9953217,4.99181739 C10.9953217,2.79500435 12.7902435,1.00016522 14.9870565,1.00016522 C17.1838696,1.00016522 18.9787087,2.79508696 18.9787087,4.99181739 L18.9787087,8.98355217 L14.9870565,8.98355217 L14.9870565,8.98355217 Z" id="Path-3" fill="#36C5F0" fill-rule="nonzero"></path><path d="M14.9870565,10.9954043 C17.1838696,10.9954043 18.9787087,12.7902435 18.9787087,14.9871391 C18.9787087,17.1839522 17.183787,18.9786261 14.9870565,18.9786261 L4.99173478,18.9786261 C2.79492174,18.9786261 1.00016522,17.1838696 1.00016522,14.9871391 C1.00016522,12.7901609 2.79500435,10.9954043 4.99173478,10.9954043 L14.9870565,10.9954043 L14.9870565,10.9954043 Z" id="Path-4" fill="#36C5F0" fill-rule="nonzero"></path><path d="M31.016613,14.9871391 C31.016613,12.7901609 32.811287,10.9954043 35.0082652,10.9954043 C37.2050783,10.9954043 38.9997522,12.7902435 38.9997522,14.9871391 C38.9997522,17.1839522 37.2049957,18.9786261 35.0082652,18.9786261 L31.016613,18.9786261 L31.016613,14.9871391 L31.016613,14.9871391 Z" id="Path-5" fill="#2EB67D" fill-rule="nonzero"></path><path d="M29.0046783,14.9871391 C29.0046783,17.1839522 27.2097565,18.9786261 25.0129435,18.9786261 C22.8161304,18.9786261 21.0212913,17.1838696 21.0212913,14.9871391 L21.0212913,4.99173478 C2
5611.0212913,2.79492174 22.816213,1.00008261 25.0129435,1.00008261 C27.2098391,1.00008261 29.0046783,2.79500435 29.0046783,4.99173478 L29.0046783,14.9871391 L29.0046783,14.9871391 Z" id="Path-6" fill="#2EB67D" fill-rule="nonzero"></path><path d="M25.0129435,31.0165304 C27.2098391,31.0165304 29.0046783,32.8113696 29.0046783,35.0082652 C29.0046783,37.2049957 27.2097565,38.9998348 25.0129435,38.9998348 C22.8161304,38.9998348 21.0212913,37.204913 21.0212913,35.0082652 L21.0212913,31.0165304 L25.0129435,31.0165304 L25.0129435,31.0165304 Z" id="Path-7" fill="#ECB22E" fill-rule="nonzero"></path><path d="M25.0129435,29.0047609 C22.8161304,29.0047609 21.0212913,27.2098391 21.0212913,25.0128609 C21.0212913,22.8161304 22.816213,21.0213739 25.0129435,21.0213739 L35.0083478,21.0213739 C37.2051609,21.0213739 38.9998348,22.816213 38.9998348,25.0128609 C38.9998348,27.2099217 37.2050783,29.0047609 35.0083478,29.0047609 L25.0129435,29.0047609 Z" id="Path-8" fill="#ECB22E" fill-rule="nonzero"></path></g></svg><span>Join our Slack</span></a><a href="https://github.com/shakacode" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-github-_R_l8q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-github-_R_l8q_">Github</title><path d="M16 32a16 16 0 110-32 16 16 0 010 32zm2.8-14.5a1 1 0 00-.8.5c-.3.3-.4.6-.4 1 0 .5.1.9.4 1.2.2.3.5.4.8.4.3 0 .5-.1.8-.4.2-.3.3-.7.3-1.1 0-.5-.1-.8-.3-1.1-.3-.3-.5-.5-.8-.5zm4-4v-1.3c-.1-.9-.3-1.7-.6-2.4h-.5l-1.4.6-2.1 1.2c-.5-.2-1.2-.3-2.2-.3-1 0-1.7.1-2.2.3a9.4 9.4 0 00-4-1.8c-.3.7-.5 1.5-.5 2.4v1.3c-.9 1-1.3 2-1.3 3.4 0 .8.1 1.6.3 2.2l.7 1.7c.3.4.7.8 1.2 1a5.6 5.6 0 002.4 1.1 10.4 10.4 0 002.5.2 20.4 20.4 0 005.5-.5 5.7 5.7 0 002.4-1.8l.7-1.7A8 8 0 0024 17c0-1.3-.4-2.4-1.3-3.4zM16 22.3c-2 0-3.4-.2-4.4-.7-1-.4-1.4-1.3-1.4-2.8 0-.8.3-1.5.9-2 .2-.2.5-.4 1-.5l1-.1a45.2 45.2 0 013 .1h3.7c.4 0 .8.2 1.1.5.7.5 1 1.2 1 2 0 1.5-.5 2.4-1.5 2.8-1 .5-2.4.7-4.4.7zm-2.7-4.8a1 1 0 00-.9.5c-.2.3-.3.6-.3 1 0 .5.1.9.3 1.2.3.3.5.4.9.4.3 0 .5-.1.7-.4.3-.3.4-.7.4-1.1 0-.5-.1-.8-.4-1.1-.2-.3-.4-.5-.7-.5z" fill="#242A2D" fill-rule="evenodd"></path></svg></a><a href="https://linkedin.com/company/shakacode" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-linkedin-_R_t8q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-linkedin-_R_t8q_">Linkedin</title><path d="M16 32a16 16 0 110-32 16 16 0 010 32zm8-10v-5.8c0-3.1-1.7-4.6-4-4.6-1.8 0-2.6 1-3 1.7V12h-3.5V22H17v-5.7-.8c.3-.6.9-1.2 1.8-1.2 1.3 0 1.8 1 1.8 2.3V22H24zM10 10.5c1.1 0 1.9-.8 1.9-1.8S11 7 9.9 7C8.8 7 8 7.8 8 8.7c0 1 .7 1.8 1.9 1.8zM11.5 22V11.9H8.2V22h3.4z" fill="#0077B5" fill-rule="evenodd"></path></svg></a><a href="https://twitter.com/shakacode" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" aria-labelledby="svg-twitter-_R_158q_" class="SvgIcon__StyledSvgIcon-sc-pvlift-0 ijOdlI"><title id="svg-twitter-_R_158q_">Twitter</title><path d="M16 32a16 16 0 110-32 16 16 0 010 32zm8-20.5c-.6.3-1.2.5-1.9.6.7-.5 1.2-1 1.5-1.9-.7.4-1.4.7-2.1.8a3.3 3.3 0 00-5.6 3A9.3 9.3 0 019 10.6a3.3 3.3 0 001 4.4c-.5 0-1-.2-1.5-.4 0 1.6 1.2 3 2.7 3.2a3.3 3.3 0 01-1.5 0 3.3 3.3 0 003 2.4A6.6 6.6 0 018 21.5a9.3 9.3 0 0014.4-8.3c.6-.4 1.2-1 1.6-1.7z" fill="#1EA1F2" fill-rule="evenodd"></path></svg></a></div></div></div></footer></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div>
vendor: 108 bytes, line 561
561<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
561<script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script>
561<!-- slice-start id="_gatsby-scripts-1" --> 562
562<script 563 id="gatsby-chunk-mapping" 564 > 565 window.___chunkMapping="{\"app\":[\"/app-830fa17965a199005046.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-55c0f3992fe239090859.js\"],\"component---src-pages-about-tsx\":[\"/component---src-pages-about-tsx-031aa30c88ef1cdbfde7.js\"],\"component---src-pages-career-tsx\":[\"/component---src-pages-career-tsx-911d4b54a9d9cdfd34da.js\"],\"component---src-pages-contact-tsx\":[\"/component---src-pages-contact-tsx-94ee018bf82fd4842bee.js\"],\"component---src-pages-design-tsx\":[\"/component---src-pages-design-tsx-5d7a0a58880c1cad4c89.js\"],\"component---src-pages-hichee-tsx\":[\"/component---src-pages-hichee-tsx-3d2e9662e55d72a2d032.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-af84030dd314df6a53b7.js\"],\"component---src-pages-open-source-projects-tsx\":[\"/component---src-pages-open-source-projects-tsx-f8605d4376c54d1e6176.js\"],\"component---src-pages-privacy-tsx\":[\"/component---src-pages-privacy-tsx-4b0c9361250201b21e62.js\"],\"component---src-pages-react-on-rails-pro-tsx\":[\"/component---src-pages-react-on-rails-pro-tsx-e985b8c12f0afd9884bf.js\"],\"component---src-pages-recent-work-bmdi-tsx\":[\"/component---src-pages-recent-work-bmdi-tsx-865eb70fb7b0a4ae6be4.js\"],\"component---src-pages-recent-work-brivity-tsx\":[\"/component---src-pages-recent-work-brivity-tsx-24f2e68f13c68efd6a2a.js\"],\"component---src-pages-recent-work-datacenters-tsx\":[\"/component---src-pages-recent-work-datacenters-tsx-51fe3840bdb49bce69d2.js\"],\"component---src-pages-recent-work-gget-tsx\":[\"/component---src-pages-recent-work-gget-tsx-4bf61ed5baa3adbd8fa3.js\"],\"component---src-pages-recent-work-ivacation-online-tsx\":[\"/component---src-pages-recent-work-ivacation-online-tsx-84d41fd140fc0bd6aef2.js\"],\"component---src-pages-recent-work-popmenu-integrations-tsx\":[\"/component---src-pages-recent-work-popmenu-integrations-tsx-95808ec7c4820a21eb17.js\"],\"component---src-pages-recent-work-popmenu-tsx\":[\"/component---src-pages-recent-work-popmenu-tsx-2606a1145b225e21d31a.js\"],\"component---src-pages-recent-work-printivity-tsx\":[\"/component---src-pages-recent-work-printivity-tsx-458a1b562b5ec2e8ce9d.js\"],\"component---src-pages-recent-work-snorkel-tsx\":[\"/component---src-pages-recent-work-snorkel-tsx-48fba2f356e22715fcf4.js\"],\"component---src-pages-recent-work-tsx\":[\"/component---src-pages-recent-work-tsx-f457435ed9204f832c22.js\"],\"component---src-pages-services-ai-consulting-index-tsx\":[\"/component---src-pages-services-ai-consulting-index-tsx-61db0183541f7ff91185.js\"],\"component---src-pages-services-it-infrastructure-optimization-tsx\":[\"/component---src-pages-services-it-infrastructure-optimization-tsx-5965eb8310cd387f554e.js\"],\"component---src-pages-services-performance-optimization-tsx\":[\"/component---src-pages-services-performance-optimization-tsx-31c4a06b797cda629ea8.js\"],\"component---src-pages-services-ts
565x\":[\"/component---src-pages-services-tsx-2ea2e22291f9fe4184ec.js\"],\"component---src-pages-services-web-scraping-and-data-analysis-index-tsx\":[\"/component---src-pages-services-web-scraping-and-data-analysis-index-tsx-d399b82ece155e927e1c.js\"],\"component---src-pages-services-web-scraping-and-data-analysis-thank-you-for-booking-tsx\":[\"/component---src-pages-services-web-scraping-and-data-analysis-thank-you-for-booking-tsx-feb7d297d7928f185763.js\"],\"component---src-pages-shakaflow-tsx\":[\"/component---src-pages-shakaflow-tsx-8766f83adffdb4e0c925.js\"],\"component---src-pages-shakaperf-tsx\":[\"/component---src-pages-shakaperf-tsx-16dc667de74ff72d6749.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-dfafc15df5b5d2d0f5b3.js\"],\"component---src-pages-technologies-cypress-on-rails-tsx\":[\"/component---src-pages-technologies-cypress-on-rails-tsx-f2c79753f2f0f7e451ed.js\"],\"component---src-pages-technologies-domo-tsx\":[\"/component---src-pages-technologies-domo-tsx-c8faa6fd0d4e21322960.js\"],\"component---src-pages-technologies-gatsby-tsx\":[\"/component---src-pages-technologies-gatsby-tsx-9d78e572093f23c18dcc.js\"],\"component---src-pages-technologies-graphql-pro-tsx\":[\"/component---src-pages-technologies-graphql-pro-tsx-a597e50b3adcfe892383.js\"],\"component---src-pages-technologies-next-js-tsx\":[\"/component---src-pages-technologies-next-js-tsx-ba49f1c63c73948f9864.js\"],\"component---src-pages-technologies-react-native-tsx\":[\"/component---src-pages-technologies-react-native-tsx-f4ca39d7d96d3d5fc595.js\"],\"component---src-pages-technologies-react-on-rails-tsx\":[\"/component---src-pages-technologies-react-on-rails-tsx-365542f088f89cc75425.js\"],\"component---src-pages-technologies-react-tsx\":[\"/component---src-pages-technologies-react-tsx-10a96100d8cdd54ff54b.js\"],\"component---src-pages-technologies-rescript-tsx\":[\"/component---src-pages-technologies-rescript-tsx-3f952a713abdd28926fe.js\"],\"component---src-pages-technologies-ruby-on-rails-tsx\":[\"/component---src-pages-technologies-ruby-on-rails-tsx-a4f30cabfed89c0e4ae1.js\"],\"component---src-pages-technologies-rust-tsx\":[\"/component---src-pages-technologies-rust-tsx-7e05e1fd9dae2c7fe19e.js\"],\"component---src-pages-technologies-shakapacker-tsx\":[\"/component---src-pages-technologies-shakapacker-tsx-bb53601721b438406c3d.js\"],\"component---src-pages-technologies-typescript-tsx\":[\"/component---src-pages-technologies-typescript-tsx-8d69678e8c81ddd9a337.js\"],\"component---src-pages-technologies-wordpress-tsx\":[\"/component---src-pages-technologies-wordpress-tsx-7f2d8c4dc5c71f969d02.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-2014-golden-gate-ruby-conference-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-2014-golden-gate-ruby-conference-index-mdx-7f82f80b43dfd016176d.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-a-definite-guide-to-e-2-e-ci-setup-react-native-using-cavy-cli-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-a-definite-guide-to-e-2-e-ci-setup-react-native-using-cavy-cli-index-mdx-bd9fc1dd98785eaac3b4.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-a-year-of-development-with-redux-part-1-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-a-year-of-development-with-redux-part-1-index-mdx-0758434c9c4c95b2a659.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-a-year-of-development-with-redux-part-2-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-a-year-of-development-with-redux-part-2-index-mdx-e0ba4faa175309a65ca4.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-a-year-of-development-with-redux-part-3-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-a-year-of-development-with-redux-part-3-index-mdx-3e4ee8af4e25f6a70a4c.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-adding-a-js-library-when-u
565sing-webpack-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-adding-a-js-library-when-using-webpack-index-mdx-e49676b61e5a3e176898.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-ai-assisted-migrations-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-ai-assisted-migrations-index-mdx-75b5ba4797be489da646.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-alfred-tips-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-alfred-tips-index-mdx-7576b4060f120f43b186.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-an-attitude-of-gratitude-for-open-source-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-an-attitude-of-gratitude-for-open-source-index-mdx-7ce87c514801239e5cbc.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-an-introduction-to-test-suite-optimization-in-ruby-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-an-introduction-to-test-suite-optimization-in-ruby-index-mdx-78e18781405cb67d39e9.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-audit-30-ai-assisted-commits-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-audit-30-ai-assisted-commits-index-mdx-2a0e1434a016c721b1ac.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-bulletproof-enums-using-immutable-records-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-bulletproof-enums-using-immutable-records-index-mdx-52c9a8dc2c383e8d9ea1.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-buying-apple-products-with-amex-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-buying-apple-products-with-amex-index-mdx-1eb8dc3f859046178485.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-can-shakacode-help-you-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-can-shakacode-help-you-index-mdx-cfd6614c1452719a8d60.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-capybara-phantomjs-poltergeist-rspec-tips-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-capybara-phantomjs-poltergeist-rspec-tips-index-mdx-551314a4b39063da8dce.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-choosing-between-kamal-control-plane-shakacode-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-choosing-between-kamal-control-plane-shakacode-index-mdx-424f646696611045f4b1.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-client-engagement-model-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-client-engagement-model-index-mdx-2b20dc384d14890f7a18.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-cloudinary-to-self-hosted-image-pipeline-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-cloudinary-to-self-hosted-image-pipeline-index-mdx-07435d5ccd322ad805f4.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-code-coverage-cannot-see-a-cookie-banner-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-code-coverage-cannot-see-a-cookie-banner-index-mdx-952f99cdf31edfd046a7.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-coffeescript-chrome-extensions-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-coffeescript-chrome-extensions-index-mdx-f37a0ac5c50151e9b96b.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-comprehensive-guide-to-simplecov-gem-in-rails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-comprehensive-guide-to-simplecov-gem-in-rails-index-mdx-6a4214d60cdb1fee9a28.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-consulting-vs-full-time-hires-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-consulting-vs-full-time-hires-index-mdx-a5b52ad20cfdf1cc7731.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-cool
565-things-you-can-do-with-first-class-modules-in-rescript-react-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-cool-things-you-can-do-with-first-class-modules-in-rescript-react-index-mdx-af5009b327603f74e660.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-cut-demo-hosting-costs-with-scale-to-zero-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-cut-demo-hosting-costs-with-scale-to-zero-index-mdx-867403260410c1f72c2a.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-debugging-made-easy-with-pry-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-debugging-made-easy-with-pry-index-mdx-e194dfb9635dcb9d3b01.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-defer-unique-constraints-in-postgresql-with-rails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-defer-unique-constraints-in-postgresql-with-rails-index-mdx-794a0d73fb8518ea5a7c.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-easy-react-server-rendering-with-webpacker-v-4-and-react-on-rails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-easy-react-server-rendering-with-webpacker-v-4-and-react-on-rails-index-mdx-e2624f79af9c91795eeb.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-eliminate-n-1-queries-with-bullet-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-eliminate-n-1-queries-with-bullet-index-mdx-fd8e4549e8d07a546e17.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-eliminating-illegal-state-in-rescript-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-eliminating-illegal-state-in-rescript-index-mdx-9f9096ff0645db3ba44a.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-ember-dot-js-hello-world-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-ember-dot-js-hello-world-index-mdx-10854cc34cf0367c8c2f.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-emberjs-rails-4-tutorial-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-emberjs-rails-4-tutorial-index-mdx-d8b4dd78fb6fa5cfd8fb.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-empower-your-rails-application-with-cancancan-gem-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-empower-your-rails-application-with-cancancan-gem-index-mdx-3effebd6c2ad8549f06c.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-enums-and-queries-in-rails-4-dot-1-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-enums-and-queries-in-rails-4-dot-1-index-mdx-b1d7f6ab9c56fddb0b82.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-exploring-the-ffaker-gem-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-exploring-the-ffaker-gem-index-mdx-24de68a7b3fdd16702e0.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-fast-tests-comparing-zeus-with-spring-on-rails-4-dot-1-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-fast-tests-comparing-zeus-with-spring-on-rails-4-dot-1-index-mdx-dea24b3d8a82fad7a2ec.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-flaky-visual-regression-tests-and-what-to-do-about-them-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-flaky-visual-regression-tests-and-what-to-do-about-them-index-mdx-6da82eed684d9eb7fc1d.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-front-end-sadness-to-happiness-the-react-on-rails-story-at-goruco-2017-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-front-end-sadness-to-happiness-the-react-on-rails-story-at-goruco-201
5657-index-mdx-06202e8a3da2cf74781a.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-general-troubleshooting-and-getting-started-with-react-on-rails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-general-troubleshooting-and-getting-started-with-react-on-rails-index-mdx-62cc85f28107f5e3d197.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-getting-started-with-discourse-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-getting-started-with-discourse-index-mdx-2a8afd1bfad6cef7955d.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-github-stacked-prs-visual-regression-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-github-stacked-prs-visual-regression-index-mdx-251e444d14bbfcbb77ee.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-gogaruco-2013-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-gogaruco-2013-index-mdx-86eec9ebd72028cd6328.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-gogaruco-pictures-2014-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-gogaruco-pictures-2014-index-mdx-f72f33e4ffa7de169647.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-graphql-in-ruby-on-rails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-graphql-in-ruby-on-rails-index-mdx-39dbace667eb797440fe.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-headless-chrome-automation-in-rails-using-ferrum-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-headless-chrome-automation-in-rails-using-ferrum-index-mdx-e85e30918fde61bfa8a8.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-how-i-almost-fell-for-phishing-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-how-i-almost-fell-for-phishing-index-mdx-46523fb8e0588ac91f35.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-how-much-client-side-javascript-in-rails-4-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-how-much-client-side-javascript-in-rails-4-index-mdx-f04d1baafa0c1bd233c2.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-how-to-use-different-versions-of-a-file-for-client-and-server-rendering-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-how-to-use-different-versions-of-a-file-for-client-and-server-rendering-index-mdx-39f2b090680588f631c5.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-hvmns-90-reduction-in-server-response-time-from-react-on-rails-pro-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-hvmns-90-reduction-in-server-response-time-from-react-on-rails-pro-index-mdx-3987f7199411a00ea69f.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-identify-unused-routes-in-rails-7-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-identify-unused-routes-in-rails-7-index-mdx-ff98cecb21903eb4e1d7.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-influencing-webpacker-rather-than-forking-to-support-webpacker-in-react-on-rails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-influencing-webpacker-rather-than-forking-to-support-webpacker-in-react-on-rails-index-mdx-e9d8f969f5069f93a29b.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-integrating-webpack-and-the-es-6-transpiler-into-an-existing-rails-project-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-integrating-webpack-and-the-es-6-transpiler-into-an-existing-rails-project-index-mdx-37d3abb6f2e6cf8c3215.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-introducing-playwright-support-in-cypress-on-rails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-introducing-playwright-support-in-cypress-on-rails-index-mdx-ba6c8d7515cb230c173b.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-introducing-react-on-rails-v-9-with-webpacker-support-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-introducing-react-on-rails-v-9-with-webpacker-support-index-mdx-e29455e842b726ffa987.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-introduction-to-cypress-on-rails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-introduction-to-cypress-on-rails-index-mdx-0779100d86a97cdce3bf.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-isomorphic-react-with-rails-part-1-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-isomorphic-react-with-rails-part-1-index-mdx-48432f59394cd89dc4f6.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-isomorphic-react-with-rails-part-2-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-isomorphic-react-with-rails-part-2-index-mdx-7692c4fcd33692463f38.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-isomorphic-react-with-rails-part-3-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-isomorphic-react-with-rails-part-3-index-mdx-2d77dd46adf29d008c3c.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-isomorphic-react-with-rails-part-4-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-isomorphic-react-with-rails-part-4-index-mdx-f985395de7ee20abe9f9.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-keeping-your-database-migrations-strong-with-strong-migrations-gem-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-keeping-your-database-migrations-strong-with-strong-migrations-gem-index-mdx-b2b1f0b9abbfe36d627d.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-level-up-your-ruby-code
565-with-draper-decorators-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-level-up-your-ruby-code-with-draper-decorators-index-mdx-e702b50cded03f7d8074.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-manage-rails-app-business-logic-using-active-interaction-gem-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-manage-rails-app-business-logic-using-active-interaction-gem-index-mdx-5701ddf36a68483b2909.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-managing-external-data-sources-in-e-2-e-testing-for-cross-platform-react-native-application-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-managing-external-data-sources-in-e-2-e-testing-for-cross-platform-react-native-application-index-mdx-2bb065b1cc719e35771f.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-masking-pii-with-ruby-gsub-with-regular-expression-named-match-groups-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-masking-pii-with-ruby-gsub-with-regular-expression-named-match-groups-index-mdx-13b4a1582c9057e28b40.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-mastering-authorization-in-rails-with-pundit-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-mastering-authorization-in-rails-with-pundit-index-mdx-64d05fcd4a998693fe17.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-maximizing-code-quality-with-rails-pre-commit-and-pre-push-hooks-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-maximizing-code-quality-with-rails-pre-commit-and-pre-push-hooks-index-mdx-d38a063e07af6e61d669.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-metaprogramming-in-ruby-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-metaprogramming-in-ruby-index-mdx-a2270879d3c9f208a576.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-migrating-from-angular-to-react-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-migrating-from-angular-to-react-index-mdx-646033e5a4c51718d343.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-migrating-from-bash-to-zsh-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-migrating-from-bash-to-zsh-index-mdx-18d84596cc2b675cfc95.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-migrating-from-capybara-webkit-to-poltergeist-phantomjs-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-migrating-from-capybara-webkit-to-poltergeist-phantomjs-index-mdx-3935fcef72b8a93c6138.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-migration-to-webpack-2-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-migration-to-webpack-2-index-mdx-23f41e4ea21dd8db434d.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-migrations-on-sequelize-cli-for-beginners-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-migrations-on-sequelize-cli-for-beginners-index-mdx-f569b0a590bdc4cc1af1.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-my-react-on-rails-talk-at-the-la-ruby-rails-meetup-november-10-2016-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-my-react-on-rails-talk-at-the-la-ruby-rails-meetup-november-10-2016-index-mdx-7d6028e0a9cd877720ab.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-octopress-setup-with-github-and-org-mode-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-octopress-setup-with-github-and-org-mode-index-mdx-28a21c16cff8a7462c7d.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-octopress-setup-with-github-and-org-mode-v-2-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-octopress-setup-with-github-and-org-mode-v-2-index-mdx-34ea38cb508b63c610f6.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-optimized-parallelized-circleci-configuration-for-reactonrails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-optimized-parallelized-circleci-configuration-for-reactonrails-index-mdx-85c10e4da56fafdc6406.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-optimizing-google-fonts-on-gatsby-sites-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-optimizing-google-fonts-on-gatsby-sites-index-mdx-87cf345e49be2fcc8ca9.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-optimizing-js-bundle-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-optimizing-js-bundle-index-mdx-8a75a45ff27bbe4b3f56.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-pry-ruby-and-fun-with-the-hash-constructor-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-pry-ruby-and-fun-with-the-hash-constructor-index-mdx-8df790bc24f3b0a58b9e.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-pry-ruby-array-zip-csv-and-the-hash-constructor-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-pry-ruby-array-zip-csv-and-the-hash-constructor-index-mdx-014d49401e0954a05a10.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-pull-requests-creating-and-review-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-pull-requests-creating-and-review-index-mdx-f85f0106b4452aa05556.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-active-record-api-for-general-async-queries-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-active-record-api-for-general-async-queries-index-mdx-ffa852d4e09ae7cf80b4.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-activestorage-transform-job-preprocess-previewable-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-activestorage-transform-job-preprocess-previewable-index-mdx-b1ffce12284cf678b26a.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-activerecord-regroup-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-activerecord-regroup-index-mdx-7116fff41ceb8019d555.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-default-dockerfiles-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-default-dockerfiles-index-mdx-f215e6c2f82bc3bdfb52.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-message-pack-as-message-serializer-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-message-pack-as-message-serializer-index-mdx-8053aeb6160162001207.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-object-with-method-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-object-with-method-index-mdx-a86160eeb36f416b4bb3.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-option-to-extract-audio-sample-rate-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-option-to-extract-audio-sample-rate-index-mdx-4757c89b87abcc5b69f9.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-path-params-options-to-url-for-helper-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-path-params-options-to-url-for-helper-index-mdx-d3b50fe4e0377a757564.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-support-for-infinite-range-for-length-validators-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-support-for-infinite-range-for-length-validators-index-mdx-5d04651ea721e13e5b47.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-support-for-intersect-to-activerecord-relation-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-support-for-intersect-to-activerecord-relation-index-mdx-488155fc0cd72372abe0.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-support-for-multi-column-ordering-in-activerecord-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-support-for-multi-column-ordering-in-activerecord-index-mdx-f14b2b86676cbe6b7b6b.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-support-to-run-test-for-given-line-range-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-support-to-run-test-for-given-line-range-index-mdx-a0a4161f90fcbd5
565d8976.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-the-option-to-disable-activerecord-enum-methods-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-the-option-to-disable-activerecord-enum-methods-index-mdx-2f7fe219a1effc3b23a2.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-validation-to-enums-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-adds-validation-to-enums-index-mdx-a7eb6d2b04638d4b73fe.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allow-error-reporter-to-handle-several-error-classes-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allow-error-reporter-to-handle-several-error-classes-index-mdx-71a717bff05aa228deac.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-activerecord-reselect-to-accept-hash-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-activerecord-reselect-to-accept-hash-index-mdx-56062da7481f9f3f7d57.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-attaching-file-or-pathname-to-has-one-attached-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-attaching-file-or-pathname-to-has-one-attached-index-mdx-7a40a0878fc37ea91bb8.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-matching-exception-messages-to-assert-raises-assertion-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-matching-exception-messages-to-assert-raises-assertion-index-mdx-80bcc9e238191eb9e7c5.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-passing-options-to-activerecord-explain-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-passing-options-to-activerecord-explain-index-mdx-8f40425f797afb1fd1cc.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-resetting-singular-associations-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-resetting-singular-associations-index-mdx-284393a6c89209acc6d2.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-templates-to-define-accepted-locals-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-templates-to-define-accepted-locals-index-mdx-23a45d19c80fa4712256.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-using-aliased-attributes-in-insert-all-upsert-all-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-allows-using-aliased-attributes-in-insert-all-upsert-all-index-mdx-b5b893b14b2a24ad1e70.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-increment-decrement-counter-accepts-a-by-argument-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-increment-decrement-counter-accepts-a-by-argument-index-mdx-1f13bf8b8d9a6adc53e6.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-introduces-active-record-generates-token-for-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-introduces-active-record-generates-token-for-index-mdx-9403ef2f5ffad81a8ec1.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-introduces-config-autoload-lib-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-introduces-config-autoload-lib-index-mdx-bc7f0c01fdc7f4381cbc.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-limits-max-length-of-auto-generated-index-names-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-limits-max-length-of-auto-generated-index-names-index-mdx-960ebfd404d791fa60db.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-raises-error-on-generating-model-attributes-with-dangerous-name-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-raises-error-on-generating-model-attributes-with-dangerous-name-index-mdx-3f6e8982b5e635115650.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-removes-secret-setup-command-and-deprecates-secret-show-edit-commands-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-1-removes-secret-setup-command-and-deprecates-secret-show-edit-commands-index-mdx-3240fa8fd18c62169ac0.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-enhances-postgresql-enum-functionality-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-7-enhances-postgresql-enum-functionality-index-mdx-8d94bbf1a529f6193afd.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-allow-browser-to-set-minimum-version-for-apps-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-allow-browser-to-set-minimum-version-for-apps-index-mdx-7701206633e3b0ee5517.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-brakeman-by-default-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-brakeman-by-default-index-mdx-acf09371db7556ca4aeb.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-github-ci-files-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-github-ci-files-index-mdx-9e817fa67a9ac23e5537.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-rate-limiting-to-action-controller-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-rate-limiting-to-action-controller-index-mdx-0d76791ffde9a7ce4f46.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-rubocop-by-default-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-adds-rubocop-by-default-index-mdx-de9f7140738ff1622298.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-extends-explain-support-to-activerecord-relations-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-8-extends-explain-support-to-activerecord-relations-index-mdx-aaf8760baddbcc755f3b.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-add-deliver-callbacks-to-action-mailer-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-add-deliver-callbacks-to-action-mailer-index-mdx-f886a73d6aa52b83b0f1.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-add-expires-at-option-to-active-storage-blob-signed-id-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-add-expires-at-option-to-active-storage-blob-signed-id-index-mdx-d5d527985cdac829646d.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-add-normalize-to-activerecord-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-add-normalize-to-activerecord-index-mdx-e82ece9db5ebdac3f226.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-add-picture-tag-helper-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-add-picture-tag-helper-index-mdx-322eed2e5ee0c994bfb8.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-adds-ability-to-raise-error-on-missing-callback-actions-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-adds-ability-to-raise-error-on-missing-callback-actions-index-mdx-269880b8aa18613df888.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-adds-errorreporter-unexpected-for-error-reporting-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-adds-errorreporter-unexpected-for-error-reporting-index-mdx-b9b76da4078cac0d9dfc.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-adds-parent-option-to-controller-generator-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-adds-parent-option-to-controller-generator-index-mdx-35de84a9f320ade1036b.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-adds-perform-all-later-to-activejob-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-adds-perform-all-later-to-activejob-index-mdx-b4e69ca03704e6a4f784.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-concerns-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-concerns-index-mdx-63d408bbf701978792da.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rails-make-active-records-query-cache-an-lru-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rails-make-active-records-query-cache-an-lru-index-mdx-276a75b39ce185ad254e.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-railsconf-2014-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-railsconf-2014-index-mdx-abf6da750525647ac45b.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-railsconf-2020-webpacker-it-just-works-but-how-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-railsconf-2020-webpacker-it-just-works-but-how-index-mdx-49450db2bb33fb7ae9ca.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-railsconf-2021-implicit-to-explicit-decoding-rubys-magical-syntax-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-railsconf-2021-implicit-to-explicit-decoding-rubys-magical-syntax-index-mdx-d61cbc541e465bfbfb9e.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-react-on-rails-2000-stars-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-react-on-rails-2000-stars-index-mdx-d96bef1d6371550b6fe1.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-react-on-rails-file-system-based-automated-bundle-generation-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-react-on-rails-file-system-based-automated-bundle-generation-index-mdx-809b16cb1364b8c92156.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-react-purecomponent-pitfalls-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-react-purecomponent-pitfalls-index-mdx-02f6fbb7661a484ae5ae.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-react-svgs-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-react-svgs-index-mdx-53857a10c88eac392496.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-redux-tree-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-redux-tree-index-mdx-d2df2a91e318790c55de.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-remote-pair-programming-tips-using-screenhero-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-remote-pair-programming-tips-using-screenhero-index-mdx-d2870139e82adfb4616a.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-renaming-redating-blog-posts-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-renaming-redating-blog-posts-index-mdx-627524cfc83dae33bcb5.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rescript-feedback-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rescript-feedback-index-mdx-9fa5ad97740b21caa20c.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rescript-modules-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rescript-modules-index-mdx-ebdd21776981f10b6333.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-rocking-with-tmux-tmuxinator-and-iterm-2-for-rails-development-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-rocking-with-tmux-tmuxinator-and-iterm-2-for-rails-development-index-mdx-8819bc64e18f18d4c4d8.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-ruby-3-2-adds-a-new-data-class-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-ruby-3-2-adds-a-new-data-class-index-mdx-fd244f978fb4834e6da3.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-ruby-3-3
565-0-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-ruby-3-3-0-index-mdx-d9427b3ab04c96d665f6.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-ruby-3-3-introduces-range-overlap-method-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-ruby-3-3-introduces-range-overlap-method-index-mdx-8c34682e7cee0770b7ee.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-ruby-on-rails-javascript-with-es-6-or-coffeescript-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-ruby-on-rails-javascript-with-es-6-or-coffeescript-index-mdx-1c8617712cf370947de4.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-safe-identifiers-in-rescript-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-safe-identifiers-in-rescript-index-mdx-3bef7553faccc79d1361.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-safe-routing-in-rescript-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-safe-routing-in-rescript-index-mdx-104f7eb060ee08463c02.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-sending-bytes-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-sending-bytes-index-mdx-fd20fb4838fd30a47cb4.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-shakapacker-7-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-shakapacker-7-index-mdx-c2e5980d1be5db04768f.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-shortcut-jira-trello-github-toggl-time-and-task-tracking-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-shortcut-jira-trello-github-toggl-time-and-task-tracking-index-mdx-5814e301007907b6a8d0.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-simple-form-and-disable-processing-by-default-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-simple-form-and-disable-processing-by-default-index-mdx-18863804b76aa9cd3763.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-simplify-your-ruby-application-configuration-with-figaro-gem-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-simplify-your-ruby-application-configuration-with-figaro-gem-index-mdx-0271edb4b4a2f4ac68eb.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-specific-issues-upgrading-gems-to-rails-4-dot-1-and-rspec-3-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-specific-issues-upgrading-gems-to-rails-4-dot-1-and-rspec-3-index-mdx-14306655ee87ecdd6f00.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-storing-or-excluding-node-modules-in-rails-git-repositories-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-storing-or-excluding-node-modules-in-rails-git-repositories-index-mdx-0641c1189ac2ad08a11b.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-strategies-for-rails-logging-and-error-handling-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-strategies-for-rails-logging-and-error-handling-index-mdx-cfd26506eac0f8784a80.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-streaming-explained-restaurant-analogy-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-streaming-explained-restaurant-analogy-index-mdx-0b7acc9b308226e5a848.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-streamlined-syntax-unveiling-the-power-of-slim-template-language-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-streamlined-syntax-unveiling-the-power-of-slim-template-language-index-mdx-aa438b206cf3d38ae684.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-success-the-shakacode-way-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-success-the-shakacode-way-index-mdx-9b422b5472c44078edc5.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-supercharge-your-rails-app-with-active-admin-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-supercharge-your-rails-app-with-active-admin-index-mdx-4115f01680ce76cfa774.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-tanstack-with-react-on-rails-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-tanstack-with-react-on-rails-index-mdx-99e675e7c86e9a7593f4.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-teach-me-with-analogies-ai-prompt-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-teach-me-with-analogies-ai-prompt-index-mdx-1d07e785d47d60ae6925.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-telecommuting-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-telecommuting-index-mdx-6447ebe3c8b854c93a15.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-testing-error-handling-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-testing-error-handling-index-mdx-dd71cc602ba1b911318c.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-the-react-on-rails-doctrine-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-the-react-on-rails-doctrine-index-mdx-0aaa38b940f53acf4905.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-things-i-wish-i-knew-before-using-terraform-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-things-i-wish-i-knew-before-using-terraform-index-mdx-62e531e5c036fe634a99.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-thiserror-anyhow-or-how-i-handle-errors-in-rust-apps-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-thiserror-anyhow-or-how-i-handle-errors-in-rust-apps-index-mdx-fa0c03de43dbb6871574.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-timescaledb-to-postgres-jsonb-packing-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-timescaledb-to-postgres-jsonb-packing-index-mdx-2a946a4270b8047692dd.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-unlocking-seo-friendly-urls-with-friendlyid-gem-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-unlocking-seo-friendly-urls-with-friendlyid-gem-index-mdx-15853c2403ad2f8497fa.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-update-to-emberjs-hello-world-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-update-to-emberjs-hello-world-index-mdx-9281385d0a957858fe83.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-updating-to-jekyll-2-and-discourse-for-comments-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-updating-to-jekyll-2-and-discourse-for-comments-index-mdx-39d97005222e6620a28a.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-upgrade-rails-5-2-to-6-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-upgrade-rails-5-2-to-6-index-mdx-d026bfe31f0013478f15.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-upgrade-rails-6-1-to-7-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-upgrade-rails-6-1-to-7-index-mdx-c5eae0affe3ab1229445.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-upgrading-octopress-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-upgrading-octopress-index-mdx-053e0180f32505ca0093.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-upgrading-to-rails-4-and-rspec-3-with-capybara-and-resque-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-upgrading-to-rails-4-and-rspec-3-with-capybara-and-resque-index-mdx-d5c5f3b29bddf8dcf071.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-using-rubymine-slash-intellij-regexp-search-slash-replace-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-using-rubymine-slash-intellij-regexp-search-slash-replace-index-mdx-8b30180e73586f910692.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-webpacker-lite-why-fork-webpacker-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-webpacker-lite-why-fork-webpacker-index-mdx-c96e18d3f6d7dcacbd12.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-were-super-inclusive-at-shakacode-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-were-super-inclusive-at-shakacode-index-mdx-9cbd6078fea94984976d.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-who-is-shakacode-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-who-is-shakacode-index-mdx-a9479d26ab93395df665.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-why-stay-versus-move-away-from-heroku-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-why-stay-versus-move-away-from-heroku-index-mdx-31959812d93977d31ce6.js\"],\"component---src-template-blog-article-tsx-content-file-path-src-posts-yak-shaving-failing-integration-tests-with-react-index-mdx\":[\"/component---src-template-blog-article-tsx-content-file-path-src-posts-yak-shaving-failing-integration-tests-with-react-index-mdx-37ebac5656cfb433afd1.js\"],\"component---src-template-blog-category-all-topics-tsx\":[\"/component---src-template-blog-category-all-topics-tsx-8c17099e5c0ca72f3a2f.js\"],\"component---src-template-blog-category-tsx\":[\"/component---src-template-blog-category-tsx-31aa09385a83c7a9ed2a.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-ai-github-flow-prompt-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-ai-github-flow-prompt-md-2efc70002c8a33534199.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-ci-automation-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-ci-automation-md-3d6681b2b7a99871ea2e.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-commands-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-commands-md-a952d4e7d62b7076a587.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-dns-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-dns-md-210befb00c7861ed4677.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-grafana-opentelemetry-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-grafana-opentelemetry-md-2094d12e5c1d4192ba05.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-migrating-heroku-to-control-plane-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-migrating-heroku-to-control-plane-md-eaf5d08a4bd9aa5627b8.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-postgres-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-postgres-md-d8b7bd8245f2d10b2147.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-rds-private-networking-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-rds-private-networking-md-bc56871548ba3666b30e.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-redis-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-redis-md-482be45d5d1acae6a8f6.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-releasing-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-releasing-md-13571ba7e3c57445720a.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-secrets-and-env-values-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-secrets-and-env-values-md-b20f054f6b444396d609.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-application-instrumentation-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-application-instrumentation-md-74ff86934da5b09a3111.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-collector-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-collector-md-2ac04dc27d9fcab8a5b9.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-index-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-index-md-f2b5deaa9dd6b8b0cbb3.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-pipelines-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-pipelines-md-f0105d51acd439171c84.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-review-apps-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-review-apps-md-9bc916721c0b608086d6.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-troubleshooting-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-telemetry-troubleshooting-md-e8c3c20
565dd29510c36303.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-terraform-details-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-terraform-details-md-274f8883a5bab1715a9c.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-terraform-overview-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-terraform-overview-md-7e5a6546d2d889ddb56b.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-thruster-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-thruster-md-6325bb0115edf9f07a34.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-tips-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-tips-md-b0d7ad2505d2886c38d1.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-troubleshooting-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-docs-troubleshooting-md-bfe7e9e85454dffa601d.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-readme-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-control-plane-flow-readme-md-94ef44ac6bffb7769446.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-llms-full-preamble-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-llms-full-preamble-md-d209fe14012699671b6f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-doctor-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-doctor-md-74797d50a9545e9dbefd.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-generator-details-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-generator-details-md-ee62789bc0e0c43eee16.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-javascript-api-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-javascript-api-md-fa63633e9fffe14eb151.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-rails-view-rendering-from-inline-javascript-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-rails-view-rendering-from-inline-javascript-md-103fb83173afad0ee551.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-redux-store-api-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-redux-store-api-md-50c2fa82ec13b77e7e90.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-ruby-api-pro-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-ruby-api-pro-md-b1f349cb756baa56cec7.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-view-helpers-api-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-api-reference-view-helpers-api-md-2433abd95614b613a3a2.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-accessibility-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-accessibility-md-6a57120a9834a3e67322.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-bundle-caching-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-bundle-caching-md-191acc3df66f64945f08.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-caching-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-caching-md-69c95335673724baa35e.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-client-side-routing-instant-navigation-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-client-side-routing-instant-navigation-md-c137c2cc28587d855df2.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-code-splitting-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-code-splitting-md-8f4a1502c6bd48719d4f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-debugging-hydration-mismatches-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-debugging-hydration-mismatches-md-6b8ba3d4d595eb86dc27.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-debugging-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-debugging-md-b92fe89d8cea6d3e5322.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-dev-server-and-testing-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-dev-server-and-testing-md-2a7da96e000176ada784.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-extensible-precompile-pattern-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-extensible-precompile-pattern-md-efedfcd5d2e19560808a.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-fast-images-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-fast-images-md-78d5082805da1d30157e.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-fonts-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-fonts-md-8d1c8fd6f0b1242f1e80.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-forms-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-forms-md-1c94b72a7ee47566daf5.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-generated-rails-response-types-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-generated-rails-response-types-md-a681c03f39b9f5ca4d18.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-hmr-and-hot-reloading-with-the-webpack-dev-server-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-hmr-and-hot-reloading-with-the-webpack-dev-server-md-213958bc68645c098900.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-how-to-conditionally-server-render-based-on-device-type-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-how-to-conditionally-server-render-based-on-device-type-md-525173a7b7dc02c05f81.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-how-to-use-different-files-for-client-and-server-rendering-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-how-to-use-different-files-for-client-and-server-rendering-md-45def0d89e10c8f79ebf.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-hydration-scheduling-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-hydration-scheduling-md-8253da866509704c1b52.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-i-18-n-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-i-18-n-md-ae0d1100486c5fa3942f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-images-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-images-md-9d83657456088da0c922.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-mutations-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-mutations-md-369d8cd4dc1866d67af4.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-basics-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-basics-md-a7d654abd2414c940c92.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-container-deployment-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-container-deployment-md-bde309b9a186e5c0bfbb.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-debugging-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-debugging-md-f96ce85507f6778a3f06.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-error-reporting-and-tracing-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-error-reporting-and-tracing-md-31fbe10e919025ea710d.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-health-checks-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-health-checks-md-38baab86fc5fe80026dd.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-heroku-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-heroku-md-abedef8eecba669598c5.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-js-configuration-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-js-configuration-md-22243a43854d255b0bb8.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-troubleshooting-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-node-renderer-troubleshooting-md-cd755a466cb96f4b7e2a.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-performance-tracks-and-profiling-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-performance-tracks-and-profiling-md-e8727b903f86643c0735.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-process-managers-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-process-managers-md-74c75ffc55af5948b816.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-rails-engine-integration-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-rails-engine-integration-md-50c099322e57f562502f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-rails-webpacker-react-integration-options-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-rails-webpacker-react-integration-options-md-5921168d53b5fa50bcbd.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-19-activity-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-19-activity-md-fea112d69af760ab3c40.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-19-native-metadata-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-19-native-metadata-md-2582971ee3aa97293e9b.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-and-redux-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-and-redux-md-405f1fa318803644245a.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-compiler-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-fe
565atures-react-compiler-md-114a9913c6a6da77804b.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-helmet-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-helmet-md-9112560f1c5c4176b245.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-router-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-react-router-md-aeef97f1b13bb876a704.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-streaming-server-rendering-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-streaming-server-rendering-md-c954ee970439eb636782.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-styling-with-tailwind-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-styling-with-tailwind-md-d91d4f9a8aa488e18a8c.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-tanstack-query-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-tanstack-query-md-da9a02cd8acd34e6c2c3.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-tanstack-router-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-tanstack-router-md-f6c5178b939a207796bd.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-testing-configuration-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-testing-configuration-md-8178ec5bc2337ec60cb0.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-turbolinks-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-turbolinks-md-a5cb79de7453368ba285.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-view-transitions-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-view-transitions-md-8c4f398b8f64fcd37b9d.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-web-components-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-web-components-md-7a07aff8264ccbd7f3c8.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-web-vitals-and-rum-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-building-features-web-vitals-and-rum-md-5cc79cd0bbac1757f971.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-configuration-configuration-deprecated-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-configuration-configuration-deprecated-md-e282deac7cf1cda8452b.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-configuration-configuration-pro-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-configuration-configuration-pro-md-2978ece1fb28103a6631.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-configuration-readme-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-configuration-readme-md-538bae4fad8b5c566ec7.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-auto-bundling-file-system-based-automated-bundle-generation-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-auto-bundling-file-system-based-automated-bundle-generation-md-d4692f32a5f3a28d796c.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-client-vs-server-rendering-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-client-vs-server-rendering-md-959395c2b9aacebdd763.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-execjs-limitations-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-execjs-limitations-md-3ab2c85c00977b5ea5a4.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-how-react-on-rails-works-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-how-react-on-rails-works-md-702cf5e089b25c7be12d.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-performance-benchmarks-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-performance-benchmarks-md-62aeae342e68d54998e7.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-react-server-rendering-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-react-server-rendering-md-1a9c3fb468263d036b0b.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-render-functions-and-railscontext-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-render-functions-and-railscontext-md-bedcaed4a68c87fcf01b.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-render-functions-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-render-functions-md-a3afb27dcaf239d7a4b4.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-webpack-configuration-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-core-concepts-webpack-configuration-md-35e9d44d1936af73ef55.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-docker-deployment-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-docker-deployment-md-38828098d757bd1bc9c0.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-heroku-deployment-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-heroku-deployment-md-6f29977e0c0b225dee4d.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-readme-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-readme-md-eb92cc02cdf52369ddf6.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-review-app-security-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-review-app-security-md-80e71eb3d4aae8534005.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-security-model-and-hardening-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-security-model-and-hardening-md-ebbaf2324afea6c4f7b8.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-server-rendering-tips-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-server-rendering-tips-md-37beb226085321df8cdc.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-troubleshooting-build-errors-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-troubleshooting-build-errors-md-0d7c66d0252c4236b14d.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-troubleshooting-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-troubleshooting-md-726fcb521f156ffd9cf7.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-troubleshooting-when-using-shakapacker-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-troubleshooting-when-using-shakapacker-md-8b4bd4539616cd51d629.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-troubleshooting-when-using-webpacker-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-deployment-troubleshooting-when-using-webpacker-md-c2e5e5f6bd29d468bccf.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-common-issues-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-common-issues-md-86a7aeb3e11321d85193.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-comparing-react-on-rails-to-alternatives-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-comparing-react-on-rails-to-alternatives-md-49c7fe7bf8eae228f902.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-comparison-with-alternatives-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-comparison-with-alternatives-md-8ec3a077f5f03d2a1460.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-consuming-an-unreleased-build-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-consuming-an-unreleased-build-md-5536e26e6dbd29f57678.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-create-react-on-rails-app-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-create-react-on-rails-app-md-00aaf8ad516fd6083524.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-examples-and-references-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-examples-and-references-md-151cf9447a2e3116d320.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-installation-into-an-existing-rails-app-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-installation-into-an-existing-rails-app-md-541c0f856b0fdb074e2a.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-nextjs-with-separate-rails-backend-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-nextjs-with-separate-rails-backend-md-2b9fe9d61f186ec319dc.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-oss-vs-pro-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-oss-vs-pro-md-c3ef0514ccc3d07b50d4.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-pro-quick-start-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-pro-quick-start-md-d5c5ec680dd5325a7ac3.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-project-structure-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-project-structure-md-43e0ea38282fc5c4e332.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-quick-start-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-quick-start-md-a51cc87a01d56dc06702.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-tutorial-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-tutorial-md-2b7664f33ad65e744527.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-using-react-on-rails-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-using-react-on-rails-md-4afa0f433e6b32930f9a.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-why-rspack-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-getting-started-why-rspack-md-933dc04c39471edf03a0.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-introduction-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-introduction-md-b24b9828bf827b8c01f0.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-angular-js-integration-migration-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-ra
565ils-docs-oss-migrating-angular-js-integration-migration-md-6b3c6c328900a21b4993.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-babel-to-swc-migration-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-babel-to-swc-migration-md-189648c536dab3a88508.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-convert-rails-5-api-only-app-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-convert-rails-5-api-only-app-md-c4b882b4852a2874a00c.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-example-migrations-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-example-migrations-md-bf952e09afde0605325b.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-inertia-rails-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-inertia-rails-md-e1e35528629e7571ff18.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-nextjs-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-nextjs-md-19069128cc47191abb5e.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-react-rails-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-react-rails-md-24f7c9147050fe841169.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-vite-rails-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-vite-rails-md-0cbbe6d859243afc1175.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-webpack-to-rspack-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-from-webpack-to-rspack-md-015fe0b8733e572f59d7.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-to-rsc-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-migrating-to-rsc-md-39b74b57d03be2bcf380.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-component-patterns-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-component-patterns-md-9b5c101590dbccd1ccea.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-context-and-state-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-context-and-state-md-4b7d5df415b4093482e4.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-data-fetching-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-data-fetching-md-7fd567997b2b60fdfe3c.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-flight-payload-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-flight-payload-md-79a70a347b6368af086f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-http-response-patterns-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-http-response-patterns-md-f1dcc15fb1cbfdd5dc7f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-performance-validation-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-performance-validation-md-70648cba9186e3d6d1e2.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-preparing-app-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-preparing-app-md-7e12cfa9aa07eae4630a.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-static-shell-sidecar-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-static-shell-sidecar-md-d56a21a6f37f2d00dd82.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-third-party-libs-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-third-party-libs-md-4fc1219cd2d0affd2674.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-troubleshooting-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-migrating-rsc-troubleshooting-md-1f4c0d10523b683e84c8.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-articles-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-articles-md-3cf65056e3d3b06f79fe.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-asset-pipeline-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-asset-pipeline-md-768ade7eec24998adf29.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-credits-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-credits-md-79ac848f73acae069743.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-doctrine-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-doctrine-md-68b0a4d66ff4a022fe38.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-style-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-style-md-cd1659528e123027801d.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-tips-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-tips-md-838a15a24704b5f004a8.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-updating-dependencies-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-misc-updating-dependencies-md-9e699909aec06f9bd39c.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-reference-error-reference-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-reference-error-reference-md-7d7ea41dec6b0e9d62cc.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-15-0-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-15-0-0-md-b60e03cae866edbdb1f8.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-0-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-0-0-md-8b409faea833bc7043a0.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-1-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-1-0-md-143746656600c6c2aa2b.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-2-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-2-0-md-1e1332d1527f15a8def3.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-3-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-3-0-md-ef05cdef8815390e00b5.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-4-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-4-0-md-5e20377d9ba8d1fcc016.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-5-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-5-0-md-70b5ca4a784ac4f21282.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-5-1-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-5-1-md-65de80fc72414ebaf2a1.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-6-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-16-6-0-md-cae0a51945b5a0c4a3ed.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-17-0-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-17-0-0-md-2c96085baf96c643f05f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-17-0-1-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-17-0-1-md-581432eceb5a6eaccfeb.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-17-1-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-17-1-0-md-eef5ea8e369847c714a0.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-index-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-release-notes-index-md-132ed7a0aaf62341edbe.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-upgrading-react-on-rails-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-oss-upgrading-upgrading-react-on-rails-md-40b925ec359c8708a2ac.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-async-props-database-queries-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-async-props-database-queries-md-51ef8bfbce041e94f2e3.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-deployment-review-app-security-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-deployment-review-app-security-md-6c52e527e4a320812739.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-fragment-caching-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-fragment-caching-md-7340254f282c63b5aab6.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-home-pro-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-home-pro-md-90bde8e89ada279e2816.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-installation-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-installation-md-1ed0b7281af690116c85.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-js-memory-leaks-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-js-memory-leaks-md-ff8e0e33652f2ba949df.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-license-ci-integration-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-license-ci-integration-md-d9c3e930914256ef5ac4.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-major-performance-breakthroughs-upgrade-guide-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-major-performance-breakthroughs-upgrade-guide-md-9c8b1c6b0d4e6fc40879.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-node-renderer-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-node-renderer-md-c504d453ae5929d8405e.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-profiling-server-side-rendering-code-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-profiling-server-side-rendering-code-md-21bdefbec40f7a5f7afd.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-on-rails-pro-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-on-rails-pro-md-ba0f87a52a054ca4eb72.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-s
565erver-components-activity-inside-rsc-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-activity-inside-rsc-md-97cc7132f4eea43c9e0f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-add-streaming-and-interactivity-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-add-streaming-and-interactivity-md-c714b91714a52e686be9.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-client-reference-diagnostics-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-client-reference-diagnostics-md-5de9c38ff7821fc100e9.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-create-without-ssr-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-create-without-ssr-md-55f48a661644898c245c.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-critical-resource-hints-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-critical-resource-hints-md-3882483c3232adf3a48c.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-css-and-styling-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-css-and-styling-md-5d22a28da0f15270ce67.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-flight-protocol-syntax-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-flight-protocol-syntax-md-21695bcce38f856fdd2e.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-glossary-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-glossary-md-1ac3452a900d2ba6b691.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-how-react-server-components-work-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-how-react-server-components-work-md-1f77db26ee60670c84a9.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-index-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-index-md-f8593c5ea4b03bd1d7b1.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-inside-client-components-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-inside-client-components-md-76fbc5e84a7560351494.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-nextjs-comparison-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-nextjs-comparison-md-47b3086549f91f10de95.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-per-request-data-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-per-request-data-md-1bcd5c9629140b4d5ddb.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-purpose-and-benefits-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-purpose-and-benefits-md-e3ce93f9ee10e5fbabaf.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-rendering-flow-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-rendering-flow-md-33cadacc86b5d1e2a8a3.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-rsc-payload-route-data-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-rsc-payload-route-data-md-a34ec6b7ac5da5fa1936.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-rspack-compatibility-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-rspack-compatibility-md-65c134b552608596e44f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-selective-hydration-in-streamed-components-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-selective-hydration-in-streamed-components-md-89152c98829300442aac.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-server-side-rendering-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-server-side-rendering-md-0de1512a7bd8408a44ee.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-static-shell-global-js-opt-out-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-static-shell-global-js-opt-out-md-d9f5afcb203a4197807f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-success-stories-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-success-stories-md-5d1ba58a0f7c9a326d8d.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-system-spec-streaming-rsc-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-system-spec-streaming-rsc-md-4aee6414f7c64aff6092.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-tanstack-start-comparison-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-tanstack-start-comparison-md-ad60eb120ce383398397.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-tutorial-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-tutorial-md-58009b256119020fe893.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-unstable-cache-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-unstable-cache-md-8e5430ca461
5657346f5a01.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-upgrading-existing-pro-app-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-react-server-components-upgrading-existing-pro-app-md-47f3633707a4b8f7f460.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-release-notes-4-0-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-release-notes-4-0-md-be630a686d51e816bdd4.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-release-notes-index-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-release-notes-index-md-0d162206897803f82a84.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-release-notes-v-4-react-server-components-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-release-notes-v-4-react-server-components-md-8173c131290061e58f8d.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-rolling-deploy-adapters-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-rolling-deploy-adapters-md-75a99df77713e414bf0c.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-rolling-deploy-custom-adapters-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-rolling-deploy-custom-adapters-md-d0fdf18f4e0245158824.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-streaming-ssr-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-streaming-ssr-md-835dc751da4fe1c8b14f.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-strict-csp-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-strict-csp-md-7027f560ec6c320a0d12.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-troubleshooting-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-troubleshooting-md-e578bda239f77ad89dd9.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-updating-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-updating-md-6e9d2aa968f0f70bcecb.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-upgrading-to-pro-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-docs-pro-upgrading-to-pro-md-15d73d620dd71c1a7853.js\"],\"component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-pro-react-on-rails-pro-docs-adr-0001-boot-seed-rolling-deploy-bundles-md\":[\"/component---src-template-doc-article-tsx-content-file-path-cache-gatsby-source-git-react-on-rails-pro-react-on-rails-pro-docs-adr-0001-boot-seed-rolling-deploy-bundles-md-eff0a742d63ef4ef20c3.js\"]}"; 566 </script>
566 567
567<script>window.___webpackCompilationHash="9bdf90f6c595c1aab37a";</script>
567<script src="/webpack-runtime-492c7e49a3546dd1de25.js" async></script>
567<script src="/framework-e742fdd0ea3278bbf1dc.js" async></script>
567<script src="/aaa5778d-6b3595f7639cb377a61b.js" async></script>
567<script src="/app-830fa17965a199005046.js" async></script>
567<!-- slice-end id="_gatsby-scripts-1" -->
567<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"b83ff145507d4ad9a5f26185497e996c","r":1,"spa":2}' crossorigin="anonymous"></script>
567 568</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.