fastboot-app-server icon indicating copy to clipboard operation
fastboot-app-server copied to clipboard

Feature: Conditionally use fastbootMiddleware

Open betocantu93 opened this issue 6 years ago • 2 comments

In most of the use cases that I use Fastboot, its mainly because of the SEO and OG tags (consumed by bots), not for the actual render of something to the end user, while its nice and rehydratation make it even better, sometimes I prefer the instant loading feel (getting fastboot off of the crital path) with an appshell for loading screen, this can be accomplish by using fastboot middleware conditionally from reading user-agent string to detect if its a bot or a human. I got it working by adding this middleware in Worker.js for ExpressServer, since the code always expects a middleware, I condiotionally run the fastbootmiddleware or just an empty one, using express-conditional-middleware

app.use(
  conditional(
   (req, res, next) => { return this.isBot(req.get('user-agent')) }, 
   fastbootMiddleware, 
   (req, res, next) => { next() }
  ) 
)

I think this feature could be exposed as config as boolean, please let me know your thoughts

betocantu93 avatar Mar 06 '19 16:03 betocantu93

That does sound great, but I'm wondering if Google or other search bots wouldn't penalize such behavior. I remember that Google was detecting attempts of gaming the system, i.e. pages that were returning different content (usually injected with extra keywords) if user agent matched know crawlers.

In theory this case is different, because in the end (after everything is rendered) the output is the same. Yet, the raw html that is returned from the server is vastly different.

CvX avatar Apr 15 '19 16:04 CvX

Interesting, I'll investigate this further

betocantu93 avatar Apr 29 '19 15:04 betocantu93