Only the platform
- Last watered:
It’s been over two years since I worked on a website without heavy abstractions to guide me, so out of curiosity I opened my editor and created three files:
index.js. Pretty immediately I was annoyed by lack of HMR, so I reached for nodemon. Before running
npm i nodemon, though, I decided to take the experiment a step further and see what it would be like to build a website without any external dependencies whatsoever, literally.
I plan to deploy my sandbox site once I have a critical mass of browser API demos that I think others would find interesting. Open source is awesome, and I’ve missed many libraries while tinkering here, but it’s a lot of fun to #usetheplatform.
Browser APIs I’ve explored
So far I’ve played around with:
Service workers are the browser feature that I get most excited about. I find the every-website-should-have-a-service-worker argument very compelling. A sensible offline experience, for example, should be a given. I think about this whenever I’m on an airplane and a browser tab that I had already loaded 404s on refresh, especially for static sites. Full disclosure: I am the pot calling the kettle a website without a service worker here (i.e. I haven't implemented any service worker caching strategy in my garden just yet).
I’m also interested in what an abstraction would look like for SPAs.
next/offline exists and looks useful. An even simpler interface like a
useOffline React hook might be handy to cache recently visited or high-traffic pages.
Things I’ve missed
I’ve resisted the urge to
npm install so far, but I’ve missed a lot of libraries, namely nodemon / HMR, TypeScript, React, and Webpack.
nodemon / HMR
As mentioned up top, restarting my server manually is rather annoying. But it’s an interesting exercise to build automatic server restart from scratch. I’m using
fs.watch to listen for file events and trigger a server restart whenever a file changes. This quick and dirty approach isn’t perfect, though. It works well for HTML/CSS updates, I’ve found, but it’s more finicky with JS and occasionally crashes. The abriged version looks like this:
Browser APIs I'd like to explore
The collection of features that browsers ship out of the box is vast. There are a handful that I’m particularly keen to try out:
Where to learn about browser features
There are a lot of #usetheplatform advocates out there (read: Twitter). Syntax.fm has a couple fun, relevant episodes: