Data Libraries in [meta] are an important layer in making the whole stack unified. The goal of this layer is to make everything as functional as possible. For example FeatherScript is a great example of a Data Library, it takes the usual features provided by feathers.js and converts them to ClojureScript functions.

It is also responsible of sanitizing data types used in lower levels. Which means the [meta] framework only ever deals with ClojureScript data. Interacting with JavaScript objects/types breaks the abstraction between the application, it’s language and the host. Unless you are intending to interop with the Host directly, your application should constrain itself to ClojureScript data only.

Interop Libraries are used to communicate externally within the JavaScript ecosystem. Often [meta] relies on CLJSJS packages for this layer, which provides access to libraries and externs.

These layers are used together to abstract the [meta] framework from external systems and keep the application logic within ClojureScript.