Yan Holtz logo ← All issues
Dataviz Universe

Should you really Shine?

Today's the final step in my How the Web Works series!

We started by exploring what HTML, CSS, and JavaScript are. Then we saw how to use these tools to create interactive graphs, even when working with R or Python. Finally, I showed how to host your work on GitHub Pages, turning it into a free mini-website.

Today, I want to tackle a tricky but crucial concept:

Static vs Dynamic websites

A static website is like the one we built last week.

You write a simple HTML file (manually, or using a tool like Quarto or Jupyter (Quarto is so much better, by the way)). Then you host it somewhere like GitHub and get a public URL.

1M ppl can access it in the same time using their browser. It's free. Like this report the students of my Productive R Workflow project learn to build.

It's called static because it just delivers a file. There's no logic, no computation by a server. Just content.

But sometimes you need to go further.

Dynamic = Powerful

A dynamic website can perform tasks on the server that initially provided the HTML file. It allows to handle things like:

All of that requires logic. It requires a server. That's what makes a site dynamic.

Static vs dynamic server calls diagram

Static = 1 call to the server, 1 response, done. Dynamic = call the server to perform an action, get a response, do it again, and so on.

Dynamic = Complicated

But with great power comes... overhead:

Cost — You'll have to pay for server hosting.

Maintenance — Servers need updates, monitoring, backups.

Scaling — If traffic spikes, you need more resources—and more money.

Performance issues — Communication between your computer and a server takes time!

Make the Right Call

This is an important conversation, especially for the R and Python communities.

Tools like Shiny and Streamlit are super popular & powerful. I've used Shiny a lot and it's actually what nudged me toward becoming a web engineer.

But I also see it used for the wrong reasons.

The list goes on.

You'd be surprised by what you can do without adding server-side logic.

Check out my list of Quarto Tips & Tricks to see what's possible!

Static Quarto website with tabs

This is a static website built with Quarto. See code.

Conclusion

The distinction between static and dynamic websites might seem subtle, but it's fundamental if you're into data visualization.

Sooner or later, you'll want to build a little app to explore data. When that day comes, ask yourself:

Does this really need a dynamic server?

If not, Quarto might save you time, money, and headaches.

I've been paying €20/month for years because I made the wrong call. Don't repeat my mistake.

That's it for the web series! Next week, we're back to full-on dataviz content.


PS: this post is even more true now that Pyodide and WebR exist. If you do not know what it is, drop me an email and I'll write about it!

PPS: interested in how to use Quarto properly and create stunning online reports for your data analysis? Check my Productive R Workflow project.
Yan

Enjoyed this?

Get one short, actionable dataviz tip every Saturday. Join 19,000+ data people.