React PWA training

This course is taught 100% remote

Last updated on January 31, 2023, 04:04pm

First created during Fall 2012 and constantly upgraded, the React PWA training course is a very, very high value-added combo. Over 4 consecutive days, it lets you discover and practice, in a unified, cohesive context, a large array of skills and leading-edge technologies around JavaScript (and TypeScript, on request).

  • ES2015+ (incl. ES modules)
  • TypeScript variant available
  • React and its ecosystem
  • Redux and Redux Toolkit
  • Test-first development (TDD)
  • Offline-first
  • Client-side storage
  • Web Notifications
  • Build and static deployment


The React PWA (formerly Modern Web Apps) training aims to empower trainees to:

  • Use modern JS with ES2015+ (or TypeScript for in-house trainings, on request)
  • Internalize what makes a modern webapp and what it can do
  • Work with a test-first development cycle
  • Write module, decoupled code that is easy to test
  • Write their project code so that it keeps complexity in check when scaling in size
  • Setup an instant dev feedback loop
  • Favor mobile-first and offline-first UX patterns and best practices
  • Make their webapps installable, edging ever close to native apps experience

Intended audience

The React PWA training targets first and foremost front-end web developers that have to tackle writing large, feature-rich, optimized webapps that should behave well on a wide range of devices (desktops, smartphones, tablets, kiosks…).**

A decent knowledge of JavaScript is mandatory; any front web dev already using JavaScript on a daily basis, ideally beyond just jQuery-based stuff, is likely comfortable enough.

However, trainees might want to “study up” ahead of time to make learning all of this easier once attending the training proper. Future trainees will likely benefit from browsing this list of quality contents Christophe compiled.

As for other tech components of the front-end web dev world, a “standard” understanding of the client side is obviously expected: HTML and CSS, that is. No need to be an HTML5 or CSS3 master: even if we will use these, they’re not our core topic and therefore entail no particular requirement. In practice you should:

  • Know the fundamentals of HTML as described here
  • Know the fundamentals of JavaScript: variables, data types, loops, functions, the language's standard library at least as of ES3 (1999).
  • Use of JS in production on 10+ diverse scenarios.

Finally, it is not necessary to have prior familiarity with unit or integration testing systems, nor with in-code documentation systems. If you have already worked with such tools (JUnit, Test::Unit, RSpec, Cucumber, Capybara, Selenium, etc.) all the better, it’ll only make these subjects easier for you. But we will review all the relevant concepts as we put them to practice.

Unless otherwise specified, predefined-dates, multi-client sessions are held in French, so attendees should be reasonably fluent. You are naturally welcome to book custom dates for your company using the link above.

Not sure you’re a good fit?

Let’s check together (FR)


There is no pre-requisite for this training course (as in, verifiably acquired knowledge, through degrees, certifications, tests, etc.).


  1. Setting up

    • Tooling: coding, linting, transpiling, building, testing, debugging
    • Create React App
    • Setting up Hot Module Replacement
    • Presenting the app we're building
    • Presenting the starter kit we're building on
  2. Introducing React

    • Philosophy and core concepts
    • A first render
    • JSX ≠ HTML (or even XML)
    • First components
    • Actual DOM vs. Virtual DOM
    • React Dev Tools
  3. Creating a reusable component

    • Function componants
    • PropTypes (if TypeScript: state-of-the-art function component typing)
    • Props’ default values
  4. Testing components

    • Automated tests: concepts and ecosystem
    • Taking maximum advantage of Jest
    • Choosing a set of React test utilities
    • Test-first or test-after?
    • Thoughtful use of snapshots
  5. Lists and conditions with React

    • Using .map
    • Why do we need the key technical prop?
    • Using && and ?:
    • Ignored nodes in JSX
  6. Hooks

    • Hooks principles
    • Hooks vs. classes
  7. Local state with React

    • Principles
    • Actually grokking useState
    • Should we sync from props, and how to best go about it?
  8. Redux and Redux Tookit

    • Application state or local state?
    • Frequent issues when managing an application state
    • Philosophy and core concepts
    • Slice reducers vs. feature reducers
    • Writing slice reducers with a TDD / test-first approach
    • Composing slice reducers
    • Cleanly connecting the store to the React app
    • Redux Dev Tools and their incredible power
    • Time-travel debugging
  9. Events with React

    • How they differ from native DOM events
    • Performance and awesome DX: the best of both worlds
    • Various ways of defining an event handler
    • Avoiding superfluous re-renders
  10. Forms with React

    • Simplifying from HTML/DOM approaches, in a big way
    • Controlled vs. uncontrolled components
  11. Client-side routing

    • Principles
    • What router shall we use?
    • Defining the routes we need
    • Adding side-effects to routing using the useEffect hook
    • “Private” routes
  12. Offline-first

    • Being online should be a progressive enhancement
    • Persisting data client-side and hydrating back from them
    • AppCache vs. ServiceWorker
    • Webpack plugins
    • Offline resilience for our API calls
    • Being able to load the app itself when offline
  13. Static deployments

    • 100% client-side apps
    • Static hosting services
    • Example: deploying to Netlify
  14. Progressive Web Apps

    • What even is a PWA?
    • Technical telltales
    • W3C App Manifests
    • Target platforms (mobile, tablet and desktop)
    • How to trigger an installation offer
    • Going in: installation, shortcuts, using Web Share

Un p'tit document ?

Imprimer ou télécharger en PDF le programme et les infos


  • Every session is held synchronously, “live,” including remote sessions. This is not about pre-recorded videos.
  • We are currently not scheduling new multi-client in-room sessions.
  • Comprehensive course material is provided, acting as a common thread. It usually includes numerous slides and starter codebases or repositories for every exercise and lab.
  • Trainees can ask questions at any time.
  • Sessions always alternate between theory and hands-on labs, in short intervals (5 minutes to 1 hour).
  • Hands-on periods rely on real-world use-cases (which can be bootstrapped through starter codebases, Git repositories or online assignment labs).
  • Hands-on periods may be completed individually or as sub-groups that may vary from one period to the next, to foster pair programming and collaboration.
  • Remote sessions use a Zoom recurring meeting, accessible through a provided link using both the installed app and the pure-web, no-install client. They mostly use features such as video thumbnails, screensharing, chat, breakout rooms and possibly quizzes, annotations and whiteboards.
  • Sessions span 4 consecutive days, adding up to 28 hours of class.
  • The schedule typically runs from 09:45 to 12:45 and from 13:48 to 18:00.
  • For custom dates booked specifically by your company, the schedule can be adjusted to better suit your needs. In particular, we can use half-days locked on reasonable hours in your timezone, e.g. 9a-12:30p EST or 8a-11:30a PST.
  • Training sessions range from 3 to 10 trainees.

Deliverables & assessments

  • Every session half-day requires attendance signing (paper sheet or digital tool). For remote sessions, should a trainee fail to submit their entire attendance sheet in due time, Zoom participant logs will be considered authoritative.
  • At the beginning of every day's first period, we run a “debrief”: during about half an hour, we help collectively resurface skills and knowledge first tackled on the previous day. This helps put everyone back “in the zone,”, consolidate learning and boost group dynamics.
  • Throughout the course, assessment of skill acquisition is done through the successful completion of hands-on labs (exercises, mini-projects, labs, use cases, etc.). Interactive quizzes may supplement this. The trainer remains available for any question during hands-on periods.
  • Should a trainee exhibit significant difficulty, the trainer may opt to provide one-to-one mentoring for a while using the trainee's computer as a working base. This also applies to remote sessions using Zoom's dedicated features (e.g. one-to-one / individual assistance).
  • When the session ends, every trainee may request a completion certificate (or at least attendance certificate) and, for remote sessions financed by a French institutional entity, we issue a standardized completion certificate in order for financing to be able to proceed smoothly.
  • Once the training is over, every trainee receives a link to an online “hot” feedback survey, so they can express, among other things, whether they feel they achieved the stated goals of the training (or believe these will be achieved in the short term).

During the session, trainees receive at the start of every period access to:

  • all the related slides and supporting material in a web-based format, so they can easily follow along,
  • the starter repository for the common-theme app developed throughout the course.

Once the training is done, they also get:

  • an extremely content-rich debrief e-mail,
  • a reference archive with all related slides, finalized codebase with full documentation and tests, and various complementary resources.

Acquired skills are assessed throughout the session, looking for successful completion of the development steps of the common-theme app and the successful execution of automated tests (both trainee-written and provided ones).


Christophe Porteneuve

Christophe Porteneuve

Christophe has been doing professional web work since 1995. He co-created Europe’s first production JSP portal in 1999, moving to J2EE before going with Ruby, Rails and finally Node.js.

A best-selling author of“Bien développer pour le Web 2.0” (“Best practices for modern web development”) at Eyrolles, he also wrote the reference book “Prototype and” at Pragmatic Programmers, articles in various online magazines (most notably the widely-acclaimed A List Apart), and speaks at a number of conferences big and small.

In France, Christophe enjoys a solid reputation of expertise in the areas of front-end web dev (most notably JavaScript), Node.js, Git and Rails.

Christophe is the founder and CTO of Delicious Insights.

Maxime Bréhin

Maxime Bréhin

With a Masters of Computer Science scored in 2006, Maxime slogged for 5 years through the marshes of Java/Subversion in the FinTech consulting sector…

After a year in Australia in 2009, he turned to much more palatable techs: Ruby, Rails and Git. He started working with Christophe in 2010, joining his R&D engineering team to design and implement an e-commerce solution.

He succeeded Christophe as CTO there in 2012, to join him again 3 years later at DI.

Maxime is an R&D engineer at Delicious Insights.

Next sessions

(Unless otherwise stated, every session has 4+ seats still available, and is in French; you can naturally book custom dates for your company using the link further below.)


You registerPer trainee
1 to 2 trainees€1,800 net
3 to 5 trainees€1,620 net
6+ trainees€1,440 net

(Any ongoing discount or special offer is not reflected here, but will be automatically applied in the registration form.)

Need an in-house / custom training?

For a bespoke training, tailored to your needs, either at your office, some other place or remotely, please describe your context and needs using the following link.

Usually, the core training cost for doing this training in-house, which is a flat fee based on how many trainees you bring, starts at €8,000 net. For international sessions with fewer trainees, we can trim that down: talk to us!

Request my in-house / custom training

Hardware & software requirements

  • Use a computer of sufficient performance (and provide it for single-client, in-room sessions, so ideally a laptop)
  • Remote sessions: this computer must feature a webcam, mic and audio output.
  • Remote sessions: use an internet connection with sufficient bandwidth (1Mbps+, ideally 5Mbps+), both incoming and outgoing.
  • Remote sessions: be able to run Zoom, either as a desktop install or as the pure-web client. You can test the installed software's configuration here.

Registration & deadlines

Regardless of the modalities you're looking for (single- or multi-client, in-room or remote), your initial request (for quotation or contract) should be made online from the training’s web page. You can find further up contract request links for every available multi-client session, a proposal request button for a single-client session, and for any other enquiry can use the contact button further below. Please favor our online forms as they speed up processing by avoiding numerous e-mail back-and-forths in order for us to get all your necessary information.

For multi-client, fixed-date sessions, we reply to quotation or contract requests within at most 2 business days (and usually within minutes). For single-client, custom sessions, we usually get back to you within 3 business days to fine-tune your requirements and create a bespoke offer.

The e-mails we send to provide quotations or contracts, as well as our online training pages, provide a link to an online survey prospective trainees can use for fit-for-needs assessment; this information should get to us ASAP, ideally before contract signing, so we can verify our training offer is a good match for the audience.

Summons are sent by e-mail no later than 7 days prior to the session, at which time a potential cancellation decision (usually because two few trainees registered) is made. If the session is guaranteed ahead of that deadline, we can send your summons earlier at your request.

For multi-client sessions, you can register online (requesting a contract and sending it back signed by e-mail) until the day before the session starts, provided the required amount of seats remain free. If you finalize your registration after the usual summons-sending deadline, your summons are sent immediately by e-mail.

However, when French nationals contractualize with us in their personal capacity, French law mandates a withdrawal period (10 calendar days for in-room sessions, 14 calendar days for online sessions). In order to allow such clients to register later than this, they are provided an opt-in choice in their contract request online form to waive their withdrawal rights if the schedule requires it.

For French client entities applying for third-party financing (e.g. OPCOs, Pôle Emploi, Regions, EU), it is imperative that financing agreements be sent to Delicious Insights no later than the last day of the training session. Should financing be denied or only partially provisioned, the client is liable for payment of the balance of the fee.

You can find more information on the details of registration, cancelling and getting refunds in our Terms of Sale.


  • 906 trainees
  • 394 ratings
  • 88% trainee satisfaction en Teaching skills
  • 98% trainee satisfaction en Expertise
  • 85% trainee satisfaction en Logistics

Pôle Emploi sees a “correct” return-to-employment rate after that training course.

Disabilities & special needs

The French law dated September 5, 2018 for “freedom to choose one’s professional future” aims to facilitate accessing and retaining a job for people with disabilities or special needs.

Delicious Insights is very keen to help everyone, regardless of their particulars, move forward professionally.

We can often adapt the modalities of our trainings to fit your needs: let's just review your situation together.

Do feel free to get in touch with our point person for Disabilities, Christophe Porteneuve, by e-mail or phone.

Do feel free to get in touch with our point person for Disabilities, Christophe Porteneuve, by e-mail at or phone at +33 662 059 656.

A question, a concern?

Don’t fret, we’re sure to have answers to help put your mind at ease and get a clearer picture. So let’s talk!

Get in touch

Get in touch by e-mail at or call us at +33 662 059 656.


  • I was fortunate enough to attend the 360° JS training. These 4 intense days let us plow through both the core tenets of JavaScript and best practies for modern tooling.

    The trainer offers us so much more than a theoretical class, by adding his own hindsight and returns of experience in the mix, on projects that demonstrate the whole breadth of modern concerns in web development.

    Not only does the trainer run a high-quality course, he exhibits a ton of skill in teaching and knowledge passing, with passion and a great mood!

    I highly recommend training classes by Delicious Insights.

  • Excellent trainers in a comfy setting, great group dynamics, wealth of contents at a fairly intense pace. I would definitely recommend this class.

  • Top-notch training, I learnt a ton. Had loads of fun!

  • I do believe this is one of the most advanced trainings on this topic in the country.

  • Excellent technical and teaching skills.

  • The training’s quality was superlative […] I really enjoyed the content and the trainer’s teaching skills.

  • Really enjoyed the trainer’s experience and hindsight, as well as the overall environment and setting for this class.

  • I seldom attended a more riveting course than this. Christophe’s approachability, enthusiasm and energy are super stimulating! The training is intense, but for good reason: giving trainees as much content and pro tips as possible on everything related to frontend web development.

    Guillaume Salicis – Freelance
  • Excellent training course! Exceeded my expectations thanks to a professional, high-quality trainer. We learn a ton in a wonderful atmosphere. Recommending!

    Tristan Deloris – Companeo