A simple React-based progressive web app that displays Accelerated Mobile Page (AMP) content. Built on create-react-app for minimal build configuration.
To see it in action, go to http://choumx.github.io/amp-pwa.
git clone git@github.com:choumx/amp-pwa.git
cd amp-pwa
npm install
npm startIn a separate terminal, start the development API server:
node server.jsThis project uses the same development workflow as create-react-app:
npm startruns the app in development mode.npm testruns the test watcher in an interactive mode.npm run buildbuilds the app for production to thebuildfolder.
See create-react-app's documentation for more detail.
The web server initiated by npm start only serves the app's static content. To serve the AMP content to be displayed by the app, there's a separate Express server in server.js.
For more information on how the web server and API server interact, check out Using create-react-app with a server and Proxying API Requests in Development.
This project adds modern web features to create-react-app:
- Accelerated mobile page (AMP) content: Displays fast-loading AMP documents within the app shell via Shadow DOM.
- Progressive web: A service worker enables progressive enhancement of AMP content with precaching, offline functionality and an app shell.
Compared to create-react-app, this project adds a small number of new dependencies:
sw-precachegenerates a production-ready service worker for precaching and other progressive enhancements.expressis used to run the development API server,server.js.bootstrapandreact-bootstrapcan be easily removed for your choice of UI framework.
amp-pwa/
content/
manifest.webmanifest
server.js
service-worker.tmpl
sw-precache-config.json
content/contains sample AMP documents displayed by the app.manifest.webmanifestcontains app metadata for native support in Chrome on Android.service-worker.tmplis a customized service worker template forsw-precache.sw-precache-config.jsoninstructssw-precachewhich assets to precache and which resources to cache at runtime.
- Service workers are not yet supported by all browsers.