# bigskysoftware/intercooler-js

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/bigskysoftware-intercooler-js).**

4,787 stars · 235 forks · HTML · MIT

## Links

- GitHub: https://github.com/bigskysoftware/intercooler-js
- Homepage: http://intercoolerjs.org
- awesome-repositories: https://awesome-repositories.com/repository/bigskysoftware-intercooler-js.md

## Topics

`front-end` `html` `javascript` `jquery` `web-app`

## Description

Intercooler-js is a declarative AJAX framework and server-driven UI library. It functions as a hypermedia web framework that enables the creation of single-page experiences by replacing specific DOM elements with HTML fragments delivered from a server.

The library distinguishes itself by using HTML attributes to map DOM elements to server endpoints, allowing for asynchronous HTTP requests and DOM updates without manual scripting. It supports a hypermedia-driven architecture where the server controls the client state through response headers and the delivery of annotated HTML fragments.

The project covers a broad range of capabilities, including real-time UI updates via Server-Sent Events, browser history and state synchronization, and automated content polling. It also provides resource dependency management to coordinate updates between related UI elements, remote error logging for monitoring network failures, and client-side DOM manipulation for managing element lifecycles and CSS transitions.

## Tags

### Web Development

- [Declarative DOM Frameworks](https://awesome-repositories.com/f/web-development/declarative-dom-frameworks.md) — Provides a framework for managing DOM updates and HTTP requests using declarative HTML attributes.
- [Hypermedia-Driven Development](https://awesome-repositories.com/f/web-development/hypermedia-driven-development.md) — Implements a server-controlled architecture where the server delivers HTML fragments to update the client state.
- [Hypermedia Swapping](https://awesome-repositories.com/f/web-development/hypermedia-swapping.md) — Updates document fragments using server-rendered HTML fragments annotated with network actions. ([source](http://intercoolerjs.org/2016/01/18/rescuing-rest))
- [AJAX Content Swapping](https://awesome-repositories.com/f/web-development/ajax-content-swapping.md) — Replaces specific DOM elements with asynchronous server responses to create seamless single-page experiences.
- [AJAX Request Triggers](https://awesome-repositories.com/f/web-development/ajax-request-triggers.md) — Initiates asynchronous HTTP requests using HTML attributes to specify the trigger event and destination. ([source](https://cdn.jsdelivr.net/gh/bigskysoftware/intercooler-js@master/README.md))
- [Declarative Request Enhancements](https://awesome-repositories.com/f/web-development/ajax-request-triggers/declarative-request-enhancements.md) — Transforms standard anchor and form tags into asynchronous requests to prevent full page reloads. ([source](http://intercoolerjs.org/attributes/ic-enhance))
- [Attribute-Based Request Mapping](https://awesome-repositories.com/f/web-development/attribute-based-request-mapping.md) — Binds DOM elements to server endpoints using HTML attributes to trigger asynchronous requests without writing JavaScript.
- [Client-Side State Management](https://awesome-repositories.com/f/web-development/client-side-state-management.md) — Manages application state within the browser to enable dynamic UI updates and history support without full page reloads.
- [Server-Action Bindings](https://awesome-repositories.com/f/web-development/dom-element-data-binding/server-action-bindings.md) — Binds HTML elements to server actions to send requests and replace element content with the server response. ([source](http://intercoolerjs.org/reference))
- [Hypermedia-Driven Rendering](https://awesome-repositories.com/f/web-development/hypermedia-driven-rendering.md) — Implements a system where the server delivers HTML fragments to update the client DOM.
- [Real-Time DOM Updates](https://awesome-repositories.com/f/web-development/server-side-rendering/real-time-dom-updates.md) — Updates the user interface in real-time by listening for asynchronous events pushed from the server. ([source](http://intercoolerjs.org/blog))
- [SSE-Driven DOM Patching](https://awesome-repositories.com/f/web-development/sse-driven-dom-patching.md) — Establishes a unidirectional connection to push server content as HTML fragments directly into the DOM via SSE. ([source](http://intercoolerjs.org/docs))
- [Dynamic Parameter Serialization](https://awesome-repositories.com/f/web-development/ajax-request-execution/dynamic-parameter-serialization.md) — Serializes parent forms, DOM elements, or local storage variables to include as parameters in outgoing requests. ([source](http://intercoolerjs.org/docs.html))
- [DOM Event Triggers](https://awesome-repositories.com/f/web-development/ajax-request-triggers/dom-event-triggers.md) — Executes asynchronous requests based on natural element events, custom DOM events, or value changes. ([source](http://intercoolerjs.org/docs.html))
- [Automated Content Polling](https://awesome-repositories.com/f/web-development/automated-content-polling.md) — Enables periodic server polling to keep page elements up-to-date while pausing requests when elements are not visible. ([source](http://intercoolerjs.org/reference))
- [Client-Behavior Headers](https://awesome-repositories.com/f/web-development/backend-development/request-response-handling/http-response-handling/response-metadata-accessors/response-header-modifiers/client-behavior-headers.md) — Executes client-side redirects, triggers JavaScript events, or modifies page titles using custom HTTP response headers. ([source](http://intercoolerjs.org/docs.html))
- [Browser History Management](https://awesome-repositories.com/f/web-development/browser-history-management.md) — Synchronizes application state with the browser's history to enable seamless backward and forward navigation. ([source](http://intercoolerjs.org/docs.html))
- [Content Transition Effects](https://awesome-repositories.com/f/web-development/content-transition-effects.md) — Applies CSS transitions to elements during the process of replacing content with server responses. ([source](http://intercoolerjs.org/docs))
- [Declarative DOM Manipulation](https://awesome-repositories.com/f/web-development/declarative-dom-manipulation.md) — Performs DOM manipulations like class toggling or element removal through attributes instead of imperative code.
- [Declarative Event-to-Action Mappings](https://awesome-repositories.com/f/web-development/declarative-event-to-action-mappings.md) — Triggers custom HTTP requests based on user events using declarative attributes to define the action. ([source](http://intercoolerjs.org/2016/01/18/rescuing-rest))
- [DOM Element Manipulators](https://awesome-repositories.com/f/web-development/dom-element-manipulators.md) — Modifies the document via element removal or class addition without requiring a server round-trip. ([source](http://intercoolerjs.org/reference))
- [Element Lifecycle Management](https://awesome-repositories.com/f/web-development/element-lifecycle-management.md) — Controls the temporal addition and removal of CSS classes and DOM elements. ([source](http://intercoolerjs.org/docs))
- [Browser History API Updates](https://awesome-repositories.com/f/web-development/event-interception-frameworks/url-change-interceptors/browser-history-api-updates.md) — Updates the browser's address bar during asynchronous requests to maintain a consistent URL state. ([source](http://intercoolerjs.org/attributes/ic-push-url))
- [AJAX Request Lifecycle Hooks](https://awesome-repositories.com/f/web-development/lifecycle-events/ajax-request-lifecycle-hooks.md) — Provides programmatic listeners to execute recovery actions when asynchronous network calls fail. ([source](http://intercoolerjs.org/attributes/ic-on-error))
- [Asynchronous Polling Timers](https://awesome-repositories.com/f/web-development/real-time-web-architectures/asynchronous-polling-timers.md) — Provides non-blocking timers to fetch data at configurable intervals and update the UI without page reloads.
- [Resource Dependency Management](https://awesome-repositories.com/f/web-development/resource-dependency-management.md) — Coordinates the loading and updating of page elements based on a defined resource dependency model. ([source](https://cdn.jsdelivr.net/gh/bigskysoftware/intercooler-js@master/README.md))

### Networking & Communication

- [SSE Element Bindings](https://awesome-repositories.com/f/networking-communication/server-sent-events/sse-sources/sse-element-bindings.md) — Binds an HTML element to a server event source to swap content when messages are received. ([source](http://intercoolerjs.org/attributes/ic-sse-src))
- [Server-Sent Events](https://awesome-repositories.com/f/networking-communication/server-sent-events.md) — Establishes a unidirectional connection to push real-time server updates and HTML fragments directly into the DOM.
- [DOM Binding Integrations](https://awesome-repositories.com/f/networking-communication/server-sent-events/sse-consumers/dom-binding-integrations.md) — Binds HTML elements to Server-Sent Events to enable real-time unidirectional content streaming from the server.

### User Interface & Experience

- [Server-Driven UI Rendering](https://awesome-repositories.com/f/user-interface-experience/remote-ui-commands/server-driven-ui-rendering.md) — Treats the server as the primary controller to synchronize browser state and user interface rendering.
- [Server-Driven Class Management](https://awesome-repositories.com/f/user-interface-experience/css-class-utilities/server-driven-class-management.md) — Updates CSS classes on elements after a server response to change visual states without replacing the elements. ([source](http://intercoolerjs.org/attributes/ic-switch-class))
- [UI Element Dependency Coordination](https://awesome-repositories.com/f/user-interface-experience/modal-management/action-modal-managers/shell-element-coordination/ui-element-dependency-coordination.md) — Refreshes multiple related page elements when a specific dependency path is updated by a server response. ([source](http://intercoolerjs.org/reference))

### Development Tools & Productivity

- [Browser History State Caching](https://awesome-repositories.com/f/development-tools-productivity/change-tracking/state-tracking-utilities/state-history-buffers/browser-history-state-caching.md) — Captures and restores DOM element states using the browser's history API to ensure consistent back and forward navigation.

### Mobile Development

- [Data-View Synchronizers](https://awesome-repositories.com/f/mobile-development/distribution-updates/over-the-air-updates/data-view-synchronizers.md) — Automatically refreshes specific UI elements whenever changes are detected in a designated data path. ([source](http://intercoolerjs.org/attributes/ic-deps))

### Programming Languages & Runtimes

- [DOM](https://awesome-repositories.com/f/programming-languages-runtimes/global-state-management/state-snapshots/dom.md) — Snapshots element state and pushes URLs to the location bar to support functional browser back-button behavior. ([source](http://intercoolerjs.org/docs))

### Software Engineering & Architecture

- [UI Resource Synchronization](https://awesome-repositories.com/f/software-engineering-architecture/dependency-tracking/ui-resource-synchronization.md) — Coordinates the automatic refreshing of multiple related UI elements when a shared data resource is updated.
- [Ajax Request Lifecycle Hooks](https://awesome-repositories.com/f/software-engineering-architecture/lifecycle-event-hooks/ajax-request-lifecycle-hooks.md) — Executes custom scripts at predefined stages of the network request including before sending and upon completion.
