Meteor, Apollo Client, React, PWA Static Apps


#1

My team was evaluating Meteor and Apollo Client in relation to our desire to create static React PWA (Progressive Web Apps) which would need to be offline-first, etc. and hosted as a static app on a server but tie back to an Apollo Server which is “just a database” for the app.

  1. Can Meteor (with any plugins) produce a static React app from build?
  2. Will Apollo support all the features needed for PWA (such as offline capabilities)?
  3. And, slightly deviating, Is Redux still needed when using Apollo Client?

#2

What does progressive web app mean to you?


#3

Having the features listed here:
https://developers.google.com/web/progressive-web-apps
With a decent Lighthouse score…


#4

I think the decision to use Apollo and Meteor should be made independently. In this case, Meteor will function as a build and deployment platform, and Apollo as the data loading stack.

I think Apollo will work fine with any of these requirements.

Meteor has a lot of different features, and it should be easy to get home screen, push notifications, speed, https, and responsiveness. I’m not really sure about service workers to do background loading since we don’t do that in our apps.


#5

I was thinking of Meteor supporting that work flow with it’s building
capabilities (specifically building React/Apollo static apps) rather than
the current build process only. It seems a good fit with Apollo Client
being on a static app and Apollo Server being an end-point for everything
else. Basically a deploy without the server aspect for the app only. Meteor
has always been a good all-in-one build tool and development environment
but would not work this way currently.


#6

You can easily get just the client part of a Meteor build.

One thing that would be nice is code splitting and async loading, that would fit within the PWA philosophy.


#7

Local development would have Apollo client and server while you develop
your React PWA, then you could build a your static client app and host it
somewhere like https://surge.sh or https://www.netlify.com for that part
but then use Galaxy or similar for an Apollo/GraphQL back-end to your
static app. This is the way we’re leaning for our main app and future
sub-apps but didn’t want to leave Meteor as we like it for the development
environment.


#8

Is there any plans or ways now (or in the next 3 months) to make client-builds of a React App that are code splitting, async, lazy loading, etc. to make static (JAM stack) app for hosting? This static client app or front-end would then communicate purely with an Apollo server for backend needs.

Developing in Meteor would be ideal in some ways but if this is not possible then using NPM and create-react-app with npm install react-hot-loader style-loader is the next best thing.


#9

I assume Apollo will work with any of the tools designed for that. Meteor isn’t optimized for stuff like code splitting, so I wouldn’t expect that to work well right now.