Extensions are a tool for developers to integrate DApp functionality with Status in a native way.
With the building blocks provided, a developer can re-use Status features for their own purposes.
Extensions are not a programming language—they contain no traditional logic.
The best analogy is HTML: declarative, extensions offer a template for presenting information to a user.
Extensions are purely data-based and are defined using the EDN format.
Similar to JSON, edn is a system for the conveyence of values. It provides a syntax for creating “logic” and utilizing information in this declarative template.
This data format enables Status to dynamically inspect an extension and its requirements before installation by the user.
Because they are data-based, extensions can be easily consumed by any program.
Without any special effort by the developer, they run on both mobile and desktop.
Once deployed to a storage system like IPFS, an extension can be accessed by anyone, anywhere.
Status does not whitelist particular extensions, nor does it limit their creation or distribution in any way.
Although extensions are permissionless in nature and allow developers freedom to customize Status features, the available feature set is limited.
Status determines potential extension points via hooks, and these hooks provide a sandbox for developers to work within.
Before a user installs an extension, Status will present information about the data and permissions requested by the developer.
If an extension requires permission to access a user’s data—e.g. contact code or wallet address—it can execute an event(link) to request from the user.
Users maintain complete control over their data and are able to revoke permissions at any time.