refreshless
RefreshLess layers JavaScript-based navigation on top of Drupal's existing server-rendered HTML to provide the kind of smooth, fast, and responsive experience users expect. By fully embracing progressive enhancement, you don't need to choose between a web site/web app that continues to work if JavaScript breaks or something that feels like a single page app (SPA) user experience - you can have both.
Compared to an SPA:
- Provides much higher resiliency in unexpected or adverse network or runtime conditions where JavaScript fails to load or execute correctly. In such situations, your users still have a functioning site/app that falls back to traditional page loads. The browser is the most hostile runtime environment after all.
- Reuses Drupal's server-rendered HTML, saving you the development time and cost of re-implementing a whole new front-end, while making use of Drupal's Twig templates, asset library system, caching, security, and so on.
Compared to a plain server-rendered HTML site:
- Navigation feels faster and more fluid because the browser no longer needs to re-initialize all CSS and JavaScript on every page request.
- Page transitions (with or without the View Transitions API), morphing, and permanent/persistent elements (think media players, etc.) are now possible.
- Everyone thinks you're super cool.
🌐 See it in action 🌐
- Omnipedia
- ambientimpact.com
- Your site here perhaps? 🥹
📗 Documentation 📗
We have a documentation site that contains information on installing and using RefreshLess, integrating with it (events, behaviours, etc.), how to get involved with its development, and more.
📢 Get involved 📢
If you want to help out, please see our getting started documentation page. The current focus for 2.x is #3393105: Hotwire Turbo minimum viable implementation.
We also have a 💬 Matrix room if you'd like to drop by to help out, ask questions, and so on.
💸 Support this project financially 💸
The modern rewrite of this project has been a lot of work, with a good part of that unpaid. If you'd like to make it easier to continue developing this project, please see our Liberapay page.
⁉️ Questions and answers ⁉️
Have questions about RefreshLess? We might have answers.
Similar projects
- HTMX module
- Provides Drupal integration for the excellent htmx library; the module is a developer tool that doesn't (currently) aim to apply to the entire existing Drupal front-end but instead focuses on pre-defined blocks to progressively enhance; we would like to eventually support it as an implementation (see #3456344: htmx implementation) in the long term and implement #3480400: Turbo: Compatibility with the HTMX contrib module in the short term.