PageSourceSearch

https://shakacode.com/component---src-template-doc-article-tsx-con…act-on-rails-pro-md-ba0f87a52a054ca4eb72.js

js shakacode.com collected 2026-10-04 00:25:44 UTC 19,771 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunkgatsby_starter_default=self.webpackChunkgatsby_starter_default||[]).push([[1344],{29606:function(e,t,n){n.r(t),n.d(t,{Head:function(){return f},default:function(){return p}});var a=n(28453),r=n(96540);function l(e){const t=Object.assign({h1:"h1",a:"a",span:"span",p:"p",blockquote:"blockquote",strong:"strong",div:"div",svg:"svg",path:"path",h2:"h2",ul:"ul",li:"li",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td"},(0,a.R)(),e.components);return r.createElement(r.Fragment,null,r.createElement(t.h1,{id:"react-on-rails-pro",style:{position:"relative"}},r.createElement(t.a,{href:"#react-on-rails-pro","aria-label":"react on rails pro permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" height="20" version="1.1" viewBox="0 0 16 16" width="20"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"React on Rails Pro"),"\n",r.createElement(t.p,null,"React on Rails Pro is the advanced rendering and performance tier for React on Rails. Start with the open-source integration, then add Pro when you need higher SSR throughput, React Server Components, streaming SSR, fragment caching, or dedicated Node renderer tooling."),"\n",r.createElement(t.blockquote,null,"\n",r.createElement(t.p,null,r.createElement(t.strong,null,"Stable GA:")," React Server Components are supported in React on Rails Pro 17. The stable RSC stack uses React and React DOM 19.2.x (patch 19.2.7 or newer) with ",r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<code class="language-text">react-on-rails-rsc</code>'}})," 19.2.x (patch 19.2.1 or newer)."),"\n"),"\n",r.createElement(t.div,{className:"markdown-alert markdown-alert-note",dir:"auto"},"\n",r.createElement(t.p,{className:"markdown-alert-title",dir:"auto"},r.createElement(t.svg,{className:"octicon",viewBox:"0 0 16 16",width:"16",height:"16","aria-hidden":"true"},r.createElement(t.path,{d:"M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"})),"NOTE"),"\n",r.createElement(t.p,null,r.createElement(t.strong,null,"Summary for AI agents:")," This is the canonical Pro hub after the docs IA cleanup. Use it for installation, upgrades, streaming SSR, Node renderer, fragment caching, profiling, and troubleshooting. Route RSC-specific requests to the nested ",r.createElement(t.a,{href:"/linked-assets/67be9e982a0c13953bd3d4e91f6d08f8/index.md"},"React Server Components index"),"."),"\n"),"\n",r.createElement(t.h2,{id:"start-here",style:{position:"relative"}},r.createElement(t.a,{href:"#start-here","aria-label":"start here permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" height="20" version="1.1" viewBox="0 0 16 16" width="20"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Start Here"),"\n",r.createElement(t.ul,null,"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"https://reactonrails.com/pricing/"},"Pricing")," and ",r.createElement(t.a,{href:"https://pro.reactonrails.com/"},"sign up"),": Current Pro subscription"),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/8e8b2e98443244ad088956838458a361/installation.md"},"Installation")," - Fresh install or manual setup"),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/178cee18ad3302a36139f1f741b8c2b9/upgrading-to-
1pro.md"},"Upgrade from OSS to Pro")," - Three-step upgrade path"),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/7873219d8f48720bacc081e7288a970b/configuration-pro.md"},"Configuration")," - Pro-specific runtime settings"),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/295f571fbe8dff635fd9d8fc09d415e1/license-ci-integration.md"},"License CI Integration")," - Optionally monitor a subscription key"),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/bff7fa9ab5d0bc476ddcccdf870579bf/review-app-security.md"},"Pro Review App Security")," - Safe review-app defaults for public repositories"),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/d4a3213be664811b0c60740018fa7d48/troubleshooting.md"},"Troubleshooting")," - Common setup and runtime issues"),"\n"),"\n",r.createElement(t.h2,{id:"route-map",style:{position:"relative"}},r.createElement(t.a,{href:"#route-map","aria-label":"route map permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" height="20" version="1.1" viewBox="0 0 16 16" width="20"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Route Map"),"\n",r.createElement(t.table,null,r.createElement(t.thead,null,r.createElement(t.tr,null,r.createElement(t.th,null,"Need"),r.createElement(t.th,null,"Start here"),r.createElement(t.th,null,"Then read"))),r.createElement(t.tbody,null,r.createElement(t.tr,null,r.createElement(t.td,null,"Compare OSS and Pro"),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/0f5411ae9a04472945df8ca7fd255e66/oss-vs-pro.md"},"OSS vs Pro comparison")),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/178cee18ad3302a36139f1f741b8c2b9/upgrading-to-pro.md"},"Upgrade to Pro"))),r.createElement(t.tr,null,r.createElement(t.td,null,"Dedicated Node.js SSR"),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/5cfa7d251cd1b302804a29407c20001d/node-renderer.md"},"Node Renderer")),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/b6490192988c8a036f273ba296fd689e/basics.md"},"Node Renderer technical docs"))),r.createElement(t.tr,null,r.createElement(t.td,null,"Progressive SSR"),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/10232e106e5fc0ce4f959061f43f1b3e/streaming-ssr.md"},"Streaming SSR")),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/36f649125c45c80a71092e7283f882be/streaming-server-rendering.md"},"Streaming SSR guide"))),r.createElement(t.tr,null,r.createElement(t.td,null,"Cache rendered output"),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/a9345a5a3f8e7820d37c590d5c1688bc/fragment-caching.md"},"Fragment Caching")),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/89f8149b6e4cb4f30723a2af5ce2cc27/caching.md"},"SSR caching guide"))),r.createElement(t.tr,null,r.createElement(t.td,null,"React Server Components"),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/67be9e982a0c13953bd3d4e91f6d08f8/index.md"},"RSC overview")),r.createElement(t.td,null,r.createElement(t.a,{href:"/linked-assets/37d1c89f8266fd0f03818d68f8999302/tutorial.md"},"RSC tutorial"))))),"\n",r.createElement(t.h2,{id:"what-pro-adds",style:{position:"relative"}},r.createElement(t.a,{href:"#what-pro-adds","aria-label":"what pro adds permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" height="20" version="1.1" viewBox="0 0 16 16" width="20"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"What Pro Adds"),"\n",r.createElement(t.ul,null,"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/37d1c89f8266fd0f03818d68f8999302/tutorial.md"},"React Server Components")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/10232e106e5fc0ce4f959061f43f1b3e/streaming-ssr.md"},"Streaming SSR")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/a9345a5a3f8e7820d37c590d5c1688bc/fragment-caching.md"},"Fragment caching")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/5cfa7d251cd1b302804a29407c20001d/node-renderer.md"},"Node renderer")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/f63a6ea5a4d60d9e6a089f3fb5262827/code-splitting.md"},"Code splitting and bundle caching")),"\n"),"\n",r.createElement(t.h2,{id:"shakacode-trust-based-commercial-licensing",style:{position:"relative"}}
1,r.createElement(t.a,{href:"#shakacode-trust-based-commercial-licensing","aria-label":"shakacode trust based commercial licensing permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" height="20" version="1.1" viewBox="0 0 16 16" width="20"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"ShakaCode Trust-Based Commercial Licensing"),"\n",r.createElement(t.p,null,"React on Rails (the ",r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<code class="language-text">react_on_rails</code>'}})," gem and the ",r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<code class="language-text">react-on-rails</code>'}})," package) is\nopen source under the MIT License, the same license as Inertia Rails."),"\n",r.createElement(t.p,null,"React on Rails Pro adds React Server Components, streaming SSR, fragment\ncaching, and the dedicated Node renderer, under The React on Rails Pro License,\na trust-based commercial license:"),"\n",r.createElement(t.ul,null,"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"Free for everyone, at any organization size:")," development, test, CI,\nstaging, preview and review apps (no license key needed), education, personal\nprojects, open-source projects, and a 45-day production evaluation."),"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"Free in production for small organizations:")," under 10 people, under US $1M\nrevenue in the last twelve months, and under US $1M raised, counted with\naffiliates. Charities, educational institutions, and hospitals are free at\nany size."),"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"Everyone else subscribes for production use:")," $1,800 per year per\norganization, covering every application, environment, and developer, with\nupdates and maintainer support. Subscribe at\n",r.createElement(t.a,{href:"https://pro.reactonrails.com/"},"pro.reactonrails.com"),"."),"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"No license key is required to run anything,")," nothing phones home, and\nnothing breaks: a missing key only changes one HTML comment from ",r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<code class="language-text">Licensed</code>'}}),"\nto ",r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<code class="language-text">UNLICENSED</code>'}}),". If a subscription lapses, production stays licensed for 30\ndays."),"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"Terms are per version:")," once a release ships under these terms, they never\ntighten on that release."),"\n"),"\n",r.createElement(t.p,null,"Full text:\n",r.createElement(t.a,{href:"https://github.com/shakacode/react_on_rails/blob/main/REACT-ON-RAILS-PRO-LICENSE.md"},"REACT-ON-RAILS-PRO-LICENSE.md"),".\nQuestions: ",r.createElement(t.a,{href:"mailto:[email protected]"},"[email protected]"),"."),"\n",r.createElement(t.p,null,"See ",r.createElement(t.a,{href:"./upgrading-to-pro.md#try-pro-risk-free"},"Upgrading to Pro")," for the current licensing and upgrade details."),"\n",r.createElement(t.h2,{id:"explore-the-dummy-app",style:{position:"relative"}},r.createElement(t.a,{href:"#explore-the-dummy-app","aria-label":"explore the dummy app permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" height="20" version="1.1" viewBox="0 0 16 16" width="20"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Explore the Dummy App"),"\n",r.createElement(t.p,null,"The fastest way to understand how the Pro feature set fits together is to inspect the example app in this repo:"),"\n",r.createElement(t.ul,null,"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"https://github.com/shakacode/react_on_rails/blob/main/react_on_rails_pro/spec/dummy/README.md"},"react_on_rails_pro/spec/dummy")),"\n"),"\n",r.createElement(t.p,null,"It demonstrates the Node renderer, caching, and SSR-oriented workflows in a real Rails app."),"\n",r.createElement(t.h2,{id:"explore-the-marketplace-demo",style:{position:"relative"}}
1,r.createElement(t.a,{href:"#explore-the-marketplace-demo","aria-label":"explore the marketplace demo permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" height="20" version="1.1" viewBox="0 0 16 16" width="20"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"Explore the Marketplace demo"),"\n",r.createElement(t.p,null,"Use the public Marketplace demo when you want an inspectable React on Rails Pro + RSC marketplace surface. The\n",r.createElement(t.a,{href:"./react-server-components/index.md#live-demo-and-evidence"},"React Server Components index")," keeps the demo, evidence\ndashboard, Lighthouse artifacts, and source repository links in one place."),"\n",r.createElement(t.h2,{id:"references",style:{position:"relative"}},r.createElement(t.a,{href:"#references","aria-label":"references permalink",className:"anchor before"},r.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<svg aria-hidden="true" height="20" version="1.1" viewBox="0 0 16 16" width="20"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>'}})),"References"),"\n",r.createElement(t.ul,null,"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/8e8b2e98443244ad088956838458a361/installation.md"},"Installation")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/295f571fbe8dff635fd9d8fc09d415e1/license-ci-integration.md"},"License CI Integration")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/bff7fa9ab5d0bc476ddcccdf870579bf/review-app-security.md"},"Pro Review App Security")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/178cee18ad3302a36139f1f741b8c2b9/upgrading-to-pro.md"},"Upgrade from OSS to Pro")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"https://reactonrails.com/pricing/"},"Pricing")," and ",r.createElement(t.a,{href:"https://pro.reactonrails.com/"},"sign up")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/5cfa7d251cd1b302804a29407c20001d/node-renderer.md"},"Node Renderer")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/10232e106e5fc0ce4f959061f43f1b3e/streaming-ssr.md"},"Streaming SSR")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/a9345a5a3f8e7820d37c590d5c1688bc/fragment-caching.md"},"Fragment Caching")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/67be9e982a0c13953bd3d4e91f6d08f8/index.md"},"React Server Components")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"/linked-assets/7873219d8f48720bacc081e7288a970b/configuration-pro.md"},"Pro configuration")),"\n",r.createElement(t.li,null,r.createElement(t.a,{href:"mailto:[email protected]"},"ShakaCode consulting")),"\n"))}var c=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,a.R)(),e.components);return t?r.createElement(t,e,r.createElement(l,e)):l(e)},i=n(63679),s=n(95197),o=n(47388),d=n(23690),m=n(14487);const h=i.default.p.withConfig({displayName:"doc-article__RedirectFallback",componentId:"sc-tic2w5-0"})(["padding:2rem;"]),u=e=>{let{data:t,location:n,children:a}=e;const{headings:l}=t.article.childMdx,c=(0,s.X9)(n.pathname),[i,d]=r.useState(null),u=n.pathname.split("/"),p=u.indexOf("docs"),f=-1===p?n.pathname.length:u.slice(0,p+1).join("/").length,g=n.pathname.slice(0,f),E=n.pathname.slice(f+1).replace(/\/$/,"").split("/").filter((e=>""!==e)),v=E.length>1?E.slice(0,-1).join("/"):"";r.useEffect((()=>
1{if(!c)return;const{hash:e}=window.location;d(e);const t=""+c+e;window.location.href!==t&&window.location.replace(t)}),[c]);const S=null===c||null===i?null:""+c+i;return r.createElement(r.Fragment,null,null!==S?r.createElement(h,{role:"status","aria-live":"polite"},"Redirecting..."," ",r.createElement("a",{href:S,target:"_blank",rel:"noopener noreferrer"},"Click here if not redirected.")):r.createElement(o.A,{main:r.createElement(m.A,{body:a,headings:l,transformUrl:e=>{if(e.startsWith("http")||e.startsWith("#"))return e;const t=e.replace(/\.md$/,"/");if(t.startsWith("./"))return g+(""===v?"":"/"+v)+t.slice(1);if(t.startsWith("../")){if(""===v)return""+g+t.slice(2);const e=v.split("/").slice(0,-1).join("/");return g+(""===e?"":"/"+e)+t.slice(2)}return g+"/"+(""===v?"":v+"/")+t}})}))};function p(e){return r.createElement(u,e,r.createElement(c,e))}const f=e=>{let{data:t,location:n,pageContext:a}=e;const{headings:l}=t.article.childMdx,{siteUrl:c}=t.site.siteMetadata,{repoDisplayName:i}=a,o=l.find((e=>1===e.depth)),m=(0,s.X9)(n.pathname)||""+c.replace(/\/+$/,"")+n.pathname;return r.createElement(d.A,{title:o?o.value:i,description:o?o.value:i+" documentation",isArticle:!0,canonical:m,pathname:n.pathname})}}}]);
2//# sourceMappingURL=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.map

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.