#rules_prerender tries to go a step further with partial prerendering at build time (reducing rendering work on the server) and driving *bundling* by what gets rendered, not just how resources are loaded on the client. We can eagerly load all required JS and CSS up front.

https://github.com/dgp1130/rules_prerender/

GitHub - dgp1130/rules_prerender: A Bazel rule set for prerending HTML pages.

A Bazel rule set for prerending HTML pages. Contribute to dgp1130/rules_prerender development by creating an account on GitHub.

GitHub

Cool to see #MDN exploring a unique #frontend architecture which better meets their needs.

https://developer.mozilla.org/en-US/blog/mdn-front-end-deep-dive/

A lot of the core ideas here are stuff I've been trying to formalize in #HydroActive and #rules_prerender. Islands of reactivity on a mostly static page and driving resource loading by what gets rendered are both key features most FE systems lack.

#web #JavaScript

Under the hood of MDN's new frontend | MDN Blog

You may have spotted that MDN has a new frontend. There's plenty happening under the surface, so let's unpack the technologies we chose, the architectural decisions we made, and why we did a rebuild at all.

MDN Web Docs

#rules_prerender can actually do this and it's a very powerful feature, but using it in that ecosystem requires buying into a much larger toolchain not everyone will want.

https://github.com/dgp1130/rules_prerender/

I'm imagining a more flexible, standalone tool which could be effectively used in any web toolchain.

GitHub - dgp1130/rules_prerender: A Bazel rule set for prerending HTML pages.

A Bazel rule set for prerending HTML pages. Contribute to dgp1130/rules_prerender development by creating an account on GitHub.

GitHub

@passle The full repo is here with the relevant source code, explanation of how it works, and some notable caveats.

https://github.com/dgp1130/out-of-order-streaming/

It's a very cool idea to incorporate into any #SSR component model using shadow DOM. I'll have to consider it for #rules_prerender if and when we get to SSR support.

GitHub - dgp1130/out-of-order-streaming: Demos out of order streaming with declarative shadow DOM

Demos out of order streaming with declarative shadow DOM - GitHub - dgp1130/out-of-order-streaming: Demos out of order streaming with declarative shadow DOM

GitHub

@surma @jaffathecake Very cool stuff! I'm a big proponent of build systems and I've always been frustrated with how web devs seem to couple bundlers and build systems together into a single tool, when they are completely different concepts. Would love to see more build system usage in the web space!

On the #Bazel front, I happen to be working on #rules_prerender, a ruleset for doing static site generation in Bazel, built on top of #aspect_rules_js.

https://github.com/dgp1130/rules_prerender/

It's maybe 90% feature complete towards 1.0, but unfortunately not yet documented. I've been distracted and haven't had the time to builds the docs site (examples are more thorough if you can follow what they're doing).

https://github.com/dgp1130/rules_prerender/tree/d5c9ac48b2f221d64c9bf9bf9b026e859f29a56e/examples/

I don't know if that would be useful for you, but I figured it tied in with the web + build systems + Bazel theme so it might be interesting to you.

GitHub - dgp1130/rules_prerender: A Bazel rule set for prerending HTML pages.

A Bazel rule set for prerending HTML pages. Contribute to dgp1130/rules_prerender development by creating an account on GitHub.

GitHub

Are there any good #web conferences / meetups with an #RFP open in the #BayArea or virtual?

There are a few projects I've been working on which I'd love to give talks about and share with the community (not Angular related). Could be talking about any/all of:

1. #HydroActive - A different take on hydration in an HTML-first world. https://github.com/dgp1130/HydroActive/
2. #rules_prerender - A #Bazel ruleset serving as a fast and scalable #StaticSiteGenerator. https://github.com/dgp1130/rules_prerender/
3. #HTMLFragments - A no-tooling, web standard-based approach to HTML over the wire. https://blog.dwac.dev/posts/html-fragments/

Greatly appreciate boosts for reach!

GitHub - dgp1130/HydroActive: An experimental library for hydrating web components and adding "sprinkles of reactivity" to pre-rendered HTML.

An experimental library for hydrating web components and adding "sprinkles of reactivity" to pre-rendered HTML. - dgp1130/HydroActive

GitHub
This change also has a side benefit of giving you full control over the `ts_project` which compiles your prerendering logic. No more awkward wrapping in #rules_prerender, much cleaner!

Just landed a major update to #rules_prerender yesterday. I redesigned the core component API to better express dependencies between different "slices" of a component. For example, if you only depend on the client-side JavaScript, the bundler will still find the associated CSS styles.

https://github.com/dgp1130/rules_prerender/issues/40

Really excited about the direction here! Next step is the actual documentation site.

Client script and style-only dependencies drop related resources · Issue #40 · dgp1130/rules_prerender

On mobile, so I'll need to elaborate more later. But I'm pretty sure that when a prerender_component() depends on another prerender_component() but only uses client side scripts or styles (no prere...

GitHub

Speaking of not writing documentation: I also prototyped a very cool idea for how to greatly simplify the developer experience of #rules_prerender *and* make it understand even more complex dependency graphs.

Still more experimenting to be done, but I'm hopeful this is a viable strategy and will be a big improvement for developers! 😁

Released a new version of #rules_prerender with full #Preact support built-in.

https://github.com/dgp1130/rules_prerender/releases/tag/releases%2F0.0.27

Getting closer and closer to something I'd be willing to call a 1.0.0!

Biggest open issue is still actually writing all the documentation, though I keep getting distracted by other features.

Release 0.0.27 · dgp1130/rules_prerender

Installation Copy the following into your WORKSPACE.bazel file: load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "aspect_rules_js", sha256 = "3ad66...

GitHub