Faster Load Times For Any Framework
What is it?
A web server that accelerates SPA page-load performance.
What is it not?
- An alternative to SSR for SEO
- A competitor to SSR frameworks like Next.js, Angular Universal, or DoneJS
Three ways to render SPAs
Server-side rendering
<!doctype html>
<html lang="en">
<head>
<title>Dog Things React</title>
<meta charset="utf-8">
<meta name="description" content="Accelerated server-side rendering for any framework by Bitovi">
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<link rel="stylesheet" href="css/site.css">
<script type="module" src="./app.js"></script>
<link rel="icon" type="image/png" href="images/favicon.png" />
</head>
<body>
<div class="main" role="main">
<header class="hero-home">
<img src="images/logo-velocirender.svg" class="site-logo" alt="Velocirender Logo"/>
<h1 class="visuallyhidden">Velocirender</h1>
<h2>Accelerated server-side rendering for any framework</h2>
</header>
<section class="demos">
<h3>Try it on:</h2>
<ul class="tabs">
<li class="selected"><button data-for="#example-react"><span class="icon icon-react" aria-hidden="true"></span> React</button></li>
<li><button data-for="#example-vue"><span class="icon icon-vue-dot-js" aria-hidden="true"></span> Vue</button></li>
<li><button data-for="#example-angular"><span class="icon icon-angular" aria-hidden="true"></span> Angular</button></li>
</ul>
<div class="examples" role="contentinfo">
<div class="selected-example">
<div class="example-demos">
<div class="example with-utility">
<h4>With Velocirender:</h4>
<iframe src="./loading.html" data-src="https://dog-things-react.herokuapp.com/"></iframe>
</div>
<div class="example without-utility">
<h4>Client-only:</h4>
<iframe src="./loading.html" data-src="https://dog-things-react.herokuapp.com/?_velocirender_static_"></iframe>
<button class="button__white" id="refresh"><span class="icon icon-refresh"></span> Refresh</button>
</div>
</div>
<div id="times"></div>
<section class="installation">
<h4>On your console:</h4>
<pre>
<code class="language-bash">npm install @bitovi/velocirender</code>
<code class="language-bash">node_modules/.bin/velocirender https://bitovi.github.io/dog-things-react/</code>
</pre>
<nav class="docs-links">
<a href="https://github.com/bitovi/velocirender" target="_blank">
<span class="icon icon-github" aria-hidden="true"></span>
GitHub Repo
</a>
<a href="https://github.com/bitovi/velocirender/blob/master/docs/getting-started.md" target="_blank">
<span class="icon icon-book-reference" aria-hidden="true"></span>
Getting Started Guide
</a>
<a href="https://github.com/bitovi/dog-things-react" target="_blank">
<span class="icon icon-react" aria-hidden="true"></span>
React Demo
</a>
<a href="https://bitovi-community.slack.com/messages/CFL3K9NHY/" target="_blank">
<span class="icon icon-slack" aria-hidden="true"></span>
Slack Channel
</a>
</nav>
<a class="button button__blueCTA" href="https://www.bitovi.com/streamable#hs_cos_wrapper_widget_1485893088244" target="_blank">Need help? Contact us!</a>
</section>
</div>
<template id="example-react">
<div class="example with-utility">
<h4>With Velocirender:</h4>
<iframe data-src="https://dog-things-react.herokuapp.com/" title="Dog Things React Demo with Velocirender"></iframe>
</div>
<div class="example without-utility">
<h4>Client-only:</h4>
<iframe data-src="https://dog-things-react.herokuapp.com/?_velocirender_static_" title="Dog Things React Demo Client-only"></iframe>
<button class="button__white" id="refresh"><span class="icon icon-refresh" aria-hidden="true"></span> Refresh</button>
</div>
</template>
<template id="example-vue">
<div class="example with-utility">
<h4>With Velocirender:</h4>
<iframe data-src="https://dog-things-vue.herokuapp.com/" title="Dog Things Vue Demo with Velocirender"></iframe>
</div>
<div class="example without-utility">
<h4>Client-only:</h4>
<iframe data-src="https://dog-things-vue.herokuapp.com/?_velocirender_static_" title="Dog Things Vue Demo Client-only"></iframe>
<button class="button__white" id="refresh"><span class="icon icon-refresh" aria-hidden="true"></span> Refresh</button>
</div>
</template>
<template id="example-angular">
<div class="example with-utility">
<h4>With Velocirender:</h4>
<iframe data-src="https://dog-things-angular.herokuapp.com/" title="Dog Things Angular Demo with Velocirender"></iframe>
</div>
<div class="example without-utility">
<h4>Client-only:</h4>
<iframe data-src="https://dog-things-angular.herokuapp.com/?_velocirender_static_" title="Dog Things Angular Demo with Client-only"></iframe>
<button class="button__white" id="refresh"><span class="icon icon-refresh" aria-hidden="true"></span> Refresh</button>
</div>
</template>
</div>
</section>
<section class="article" role="complementary">
<div class="article-content">
<img src="images/author_matthew.jpg" height="70" width="70" alt="Matthew Phillips Avatar" />
<a href="https://www.bitovi.com/blog/announcing-velocirender">
<h2 class="article-title">Faster Load Times For Any Framework</h2>
</a>
<h3 class="article-author">By Matthew Phillips</h3>
<p>
At <a href="https://www.bitovi.com/">Bitovi</a>, we’ve been working on utilizing HTTP streaming to speed up single-page application (SPA) load times for the last couple of years. We've developed a technique that accelerates page load times that we call <strong>incremental rendering</strong>, which went into DoneJS 3. Today we're happy to announce another project, Velocirender, which brings incremental rendering to any framework.
</p>
<p>
This article will:
<ul>
<li>Explain what incremental rendering is and how it improves page load times.</li>
<li>Explain how Velocirender makes it easy to get the benefits of incremental rendering with any framework.</li>
</ul>
</p>
<a href="https://www.bitovi.com/blog/announcing-velocirender" class="button">Read More</a>
</div>
</section>
<footer>
Made by
<a class="bitovi-link" href="https://www.bitovi.com/" target="_blank">Bitovi</a>
<nav class="footer-links">
<a href="http://github.com/bitovi" target="_blank">
<span class="icon icon-github" aria-hidden="true"></span>
<span class="visuallyhidden">GitHub</span>
</a>
<a href="http://twitter.com/bitovi" target="_blank">
<span class="icon icon-twitter" aria-hidden="true"></span>
<span class="visuallyhidden">Twitter</span>
</a>
<a href="https://www.linkedin.com/company/bitovi" target="_blank">
<span class="icon icon-linkedin" aria-hidden="true"></span>
<span class="visuallyhidden">LinkedIn</span>
</a>
<a href="https://bitovi-community.slack.com/" target="_blank">
<span class="icon icon-slack" aria-hidden="true"></span>
<span class="visuallyhidden">Slack</span>
</a>
</nav>
</footer>
</div>
</body>
</html>
Client-only
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="shortcut icon" href="./favicon.ico" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="theme-color" content="#000000" />
<link rel="manifest" href="./manifest.json" />
<title>Dog Things</title>
</head>
<body class="small">
<div id="root"></div>
</body>
</html>
Incremental
<!doctype html>
<html lang="en">
<head>
<title>Dog Things React</title>
<meta charset="utf-8">
<meta name="description" content="Accelerated server-side rendering for any framework by Bitovi">
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<link rel="stylesheet" href="css/site.css">
<script type="module" src="./app.js"></script>
<link rel="icon" type="image/png" href="images/favicon.png" />
</head>
<body>
<div class="main" role="main">
<header class="hero-home">
<img src="images/logo-velocirender.svg" class="site-logo" alt="Velocirender Logo"/>
<h1 class="visuallyhidden">Velocirender</h1>
<h2>Accelerated server-side rendering for any framework</h2>
</header>
<section class="demos">
<h3>Try it on:</h2>
<ul class="tabs">
<li class="selected"><button data-for="#example-react"><span class="icon icon-react" aria-hidden="true"></span> React</button></li>
<li><button data-for="#example-vue"><span class="icon icon-vue-dot-js" aria-hidden="true"></span> Vue</button></li>
<li><button data-for="#example-angular"><span class="icon icon-angular" aria-hidden="true"></span> Angular</button></li>
</ul>
<div class="examples" role="contentinfo">
<div class="selected-example">
<div class="example-demos">
<div class="example with-utility">
<h4>With Velocirender:</h4>
<iframe src="./loading.html" data-src="https://dog-things-react.herokuapp.com/"></iframe>
</div>
<div class="example without-utility">
<h4>Client-only:</h4>
<iframe src="./loading.html" data-src="https://dog-things-react.herokuapp.com/?_velocirender_static_"></iframe>
<button class="button__white" id="refresh"><span class="icon icon-refresh"></span> Refresh</button>
</div>
</div>
<div id="times"></div>
<section class="installation">
<h4>On your console:</h4>
<pre>
<code class="language-bash">npm install @bitovi/velocirender</code>
<code class="language-bash">node_modules/.bin/velocirender https://bitovi.github.io/dog-things-react/</code>
</pre>
<nav class="docs-links">
<a href="https://github.com/bitovi/velocirender" target="_blank">
<span class="icon icon-github" aria-hidden="true"></span>
GitHub Repo
</a>
<a href="https://github.com/bitovi/velocirender/blob/master/docs/getting-started.md" target="_blank">
<span class="icon icon-book-reference" aria-hidden="true"></span>
Getting Started Guide
</a>
<a href="https://github.com/bitovi/dog-things-react" target="_blank">
<span class="icon icon-react" aria-hidden="true"></span>
React Demo
</a>
<a href="https://bitovi-community.slack.com/messages/CFL3K9NHY/" target="_blank">
<span class="icon icon-slack" aria-hidden="true"></span>
Slack Channel
</a>
</nav>
<a class="button button__blueCTA" href="https://www.bitovi.com/streamable#hs_cos_wrapper_widget_1485893088244" target="_blank">Need help? Contact us!</a>
</section>
</div>
<template id="example-react">
<div class="example with-utility">
<h4>With Velocirender:</h4>
<iframe data-src="https://dog-things-react.herokuapp.com/" title="Dog Things React Demo with Velocirender"></iframe>
</div>
<div class="example without-utility">
<h4>Client-only:</h4>
<iframe data-src="https://dog-things-react.herokuapp.com/?_velocirender_static_" title="Dog Things React Demo Client-only"></iframe>
<button class="button__white" id="refresh"><span class="icon icon-refresh" aria-hidden="true"></span> Refresh</button>
</div>
</template>
<template id="example-vue">
<div class="example with-utility">
<h4>With Velocirender:</h4>
<iframe data-src="https://dog-things-vue.herokuapp.com/" title="Dog Things Vue Demo with Velocirender"></iframe>
</div>
<div class="example without-utility">
<h4>Client-only:</h4>
<iframe data-src="https://dog-things-vue.herokuapp.com/?_velocirender_static_" title="Dog Things Vue Demo Client-only"></iframe>
<button class="button__white" id="refresh"><span class="icon icon-refresh" aria-hidden="true"></span> Refresh</button>
</div>
</template>
<template id="example-angular">
<div class="example with-utility">
<h4>With Velocirender:</h4>
<iframe data-src="https://dog-things-angular.herokuapp.com/" title="Dog Things Angular Demo with Velocirender"></iframe>
</div>
<div class="example without-utility">
<h4>Client-only:</h4>
<iframe data-src="https://dog-things-angular.herokuapp.com/?_velocirender_static_" title="Dog Things Angular Demo with Client-only"></iframe>
<button class="button__white" id="refresh"><span class="icon icon-refresh" aria-hidden="true"></span> Refresh</button>
</div>
</template>
</div>
</section>
<section class="article" role="complementary">
<div class="article-content">
<img src="images/author_matthew.jpg" height="70" width="70" alt="Matthew Phillips Avatar" />
<a href="https://www.bitovi.com/blog/announcing-velocirender">
<h2 class="article-title">Faster Load Times For Any Framework</h2>
</a>
<h3 class="article-author">By Matthew Phillips</h3>
<p>
At <a href="https://www.bitovi.com/">Bitovi</a>, we’ve been working on utilizing HTTP streaming to speed up single-page application (SPA) load times for the last couple of years. We've developed a technique that accelerates page load times that we call <strong>incremental rendering</strong>, which went into DoneJS 3. Today we're happy to announce another project, Velocirender, which brings incremental rendering to any framework.
</p>
SSR | Client | Incremental |
---|---|---|
Pros | Pros | Pros |
Full content (SEO) | Starts request assets sooner | Starts request asset sooner |
Perceived perf | Easier deployment | Renders dynamic content sooner |
Cons | Cons | Faster to interactive |
Wait for DB reqs | No initial content | Cons |
Delays until assets are downloaded | Latency delays UI | No SEO |
Benefits more with H2 | ||
How it works
Faster Load Times For Any Framework
By Matthew Phillips
Faster Load Times For Any Framework
- 534