# Elements API

The Elements language is a simple, yet powerful **templating language** for RapidWeaver Elements, it's often referred to as the Elements API.

The Elements language allows third-party developers to create custom Elements that can be used within the RapidWeaver Elements layout engine. Element Dev Packs (.elementsdevpack) are a bundle of files, usually a mixture of HTML, JS, CSS, JSON, and images.

The only thing you need to start building your own custom Elements is a copy of RapidWeaver Elements. Previous web development experience is recommend, but not required.

### Open Source Components 🛠️&#x20;

The Core Components built into Elements are now open source 🎉 You can learn more about our [Open Source Core Components that power Elements here](/elements-docs/elements-language/dev-resources/open-source-components.md). You may also want to take a look at the associated [Build Tools](/elements-docs/elements-language/dev-resources/build-tools.md).

We also offer a simpler collection of [example Element Components](https://github.com/realmacsoftware/RWElementDevPacks/tree/main) to help you get started. These simple component packs provide ready-to-use Components and configuration files you can explore, modify, and build upon to create your own custom Components for Elements.It’s the best place to learn by example and understand how a complete Dev Pack is structured.

### What's Required?

The following is a list of suggested tools to make developing Elements easier.

* A copy of [RapidWeaver Elements](https://realmacsoftware.com/rapidweaver/) (Required).
* Text editor, we recommend [Visual Studio Code](https://code.visualstudio.com).
* Our [Elements Syntax Highlighter](/elements-docs/elements-language/dev-resources/syntax-highlighting.md) for Visual Studio.
* [SF Symbol app](https://developer.apple.com/sf-symbols/) for icon name reference.

### Distributing Elements Packs

Dev Packs (.devpack) are for development only. They’re uncompiled and unencrypted, allowing live editing and real-time updates during development.

**⚠️ Do not share or sell Dev Packs:** They’re not optimised for distribution and can cause performance issues if misused.

✅ If you want to share or monitise your Dev Packs, they **must be compiled into Element Packs** (.elementpack) via the Elements Platform.&#x20;

[Learn more about distributing Element Packs](https://docs.realmacsoftware.com/elements-docs/store/creators/addon-distribution).

### Developer Community

We have a [Component Development area](https://forums.realmacsoftware.com/c/rapidweaver-elements/custom-components/56) on the [Elements Forum](https://forums.realmacsoftware.com/c/rapidweaver-elements/developer/58). It's open to anyone interested in using or building addons for the RapidWeaver Elements ecosystem.

We're always around to offer help with getting started or if you just need a hand while developing your next great addon for Elements. Come join us, we're a friendly bunch ☺️

**Got questions?** email <support@realmacsoftware.com>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.realmacsoftware.com/elements-docs/elements-language/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
