The most outstanding quality of Unless is that it can be implemented on any existing website. It is a "client-side" plugin, so it is agnostic when it comes to backend systems.

The rule of thumb is; if your website works in a browser, it works with Unless. 


Decoupled approach & delta

Unless is so easy to implement because it uses a decoupled approach ("coupling" is a term that describes the relationship between two entities in a software system). Meaning that it doesn't interfere with your code base as it is very loosely coupled with it.

It basically works like an additional layer of information that is sent to your website's visitors. This layer consists of one or more personalized changes that you made with respect to the original version of your web content. The difference between the personalized web page and the original one is described by a delta (or a diff). Every time you adjust content through Unless, a new delta is created.

When someone visits your website, Unless sends out the delta for all applicable personalizations and replaces the original content.


What happens if I change the original web page?

Technically speaking, a personalization is just a group of content changes on top of your original page. It is not a separate, new page. This is also why a personalized page executes the same scripts (e.g. Google Analytics) as the original one. 

In general, changing the original page will not "break" your personalizations. However, you might lose certain personalizations in the process since the delta does not apply anymore.
Let me give you an example; if you remove a paragraph in the original page, the delta describing a change for that paragraph will not apply anymore. The paragraph is gone - there is nowhere to "dock" for the delta. . 

This only applies when you change the structure of your original web page, not the content. So, updating text or images will have no effect on your personalizations, however, deleting elements, will mean losing the personalizations within those deleted elements. 

For a more developer-focused explanation of Unless, take a look at this article.

Did this answer your question?