# Geode: a mod loader and SDK for Geometry Dash

> Geode is a Geometry Dash mod loader and modding SDK written in C++, aimed at developers who want mods to coexist instead of colliding. Its documentation lives at docs.geode-sdk.org, and the repository ships a loader, an installer and CMake build files.

**geode-sdk/geode** — The ultimate Geometry Dash modding framework

- Repository: https://github.com/geode-sdk/geode
- Website: https://geode-sdk.org/
- Stars: 2,867 · Forks: 563
- Language: C++
- License: BSL-1.0
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/geode-sdk-geode

## What Geode actually solves for Geometry Dash modders

Geometry Dash has no official mod API. Earlier loaders, as the README puts it, "merely inject the DLLs and let devs handle the rest". That leaves every mod author to hook the same game functions independently, and the README names the result directly: buttons getting misplaced and hooks mysteriously disappearing. Geode's stated goal is to solve mod incompatibility, so that mods work together. The audience is narrow and technical. You need C++ and enough patience to read a handbook before your first build. If you only want to install other people's mods, you are downstream of this project rather than its user.

## How the loader, the installer and the SDK fit together

The repository splits into two directories that matter: loader/ and installer/. The loader is the runtime piece that lives alongside the game and hosts mods; the installer is the separate program that puts it there. entry.cpp at the top level is the loader's entry point, and CMakeLists.txt plus the cmake/ directory define the build. Mods are compiled against the SDK and hook game classes through a macro. The README's Hello World example uses $modify(MenuLayer) and overrides onMoreGames, which shows the model: you name an existing game class and replace or wrap one of its methods rather than patching memory by hand. That is the mechanism behind the compatibility claim, because the loader can see which mod claims which hook. The README does not document what happens when two mods claim the same hook, so treat conflict resolution as something to test rather than assume.

## Installing Geode and writing a first mod

The README does not give install commands. It points to https://docs.geode-sdk.org for installation instructions, and the repository provides an installer/ directory and a flash.toml file that the documentation explains. Start with the documentation rather than the repository, because the loader has to match the game build you run. Once the SDK is set up, the README's own example is the shortest real test. This is the complete Hello World mod from the README:

```cpp
#include <Geode/Bindings.hpp>
#include <Geode/modify/MenuLayer.hpp>

using namespace geode::prelude;

class $modify(MenuLayer) {
	void onMoreGames(CCObject*) {
		FLAlertLayer::create(
			"Geode",
			"Hello World from my Custom Mod!",
			"OK"
		)->show();
	}
};
```

The include of Geode/modify/MenuLayer.hpp pulls in the class you are replacing, and $modify(MenuLayer) declares the replacement. Overriding onMoreGames means the More Games button on the home scene opens your alert instead of the original behaviour. To build it you invoke CMake against the project, since CMakeLists.txt is the top-level build definition. The README does not list a build command, so take the exact invocation from the handbook. If the popup appears, the loader found and loaded your mod.

## Where Geode stops being the right tool

Geode is a framework for people who write mods, not a storefront or a mod manager. The README's questions section sends users to a Discord server rather than describing a browsing interface, and no package index appears in the repository layout. If your goal is to play with other people's mods, the loader is a dependency you install once, not a product you configure. The other limit is version coupling. The repository carries a VERSION file and the release list shows a nightly build alongside tagged releases such as v5.10.1, which means the loader tracks Geometry Dash builds closely. A game update can leave a mod broken until it is rebuilt against the matching SDK. Nothing in the README promises backwards compatibility across game versions, and the README does not document rollback if a new loader build misbehaves.

## Geode against plain DLL injection

The obvious alternative is the older approach the README contrasts itself with: inject a DLL and manage everything yourself. The difference is where responsibility sits. With injection alone, each mod author writes their own hooks and their own UI placement, and two mods that touch the same function can silently overwrite each other. Geode centralises the hooking through the $modify macro and the loader, which is what lets it make a compatibility claim at all. The cost is a dependency on Geode's build system and its API surface. A mod written against raw injection does not need the SDK, does not need CMake integration and does not break when the framework changes its bindings. For a single small mod that touches one function, that trade may not be worth it. For anything that has to coexist with other mods, the framework is doing work you would otherwise repeat.

## Maintenance, upgrades and the two licence files

The last push to main was on 2026-09-23, and a nightly development release carries the same date, with v5.10.1 tagged on 2026-08-29. That is a project still moving, and the nightly channel means you can track changes before they are tagged. The practical upgrade cost is real: the SDK exposes game bindings, and bindings follow the game, so a Geometry Dash update can force a rebuild of every mod you maintain. Licensing needs attention rather than assumption. The repository states BSL-1.0 for the code, and the same top-level listing contains an EULA and a LICENSE.txt as separate files. Two licence documents with different names in one repository is a signal to read both before you ship anything built on Geode, and to check what the EULA says about distributing the loader. This is not legal advice; it is a reason to open the files.

## Conclusion

Adopt Geode if you write C++ mods for Geometry Dash and want a loader that takes on hook conflicts and UI placement for you; the $modify macro and the docs.geode-sdk.org handbook are the entry points. Do not adopt it if you are looking for a drag-and-drop mod manager, since the README points to documentation rather than a one-click flow, and the repository carries an EULA next to its BSL-1.0 LICENSE.txt. Before building anything, read both licence files and check whether the nightly release or v5.10.1 matches the game build you target.

## FAQ

### How do I use Geode with Geometry Dash?

You install the loader through the installer described in the documentation at docs.geode-sdk.org, then write or download mods built against the SDK. The README's Hello World example shows a mod overriding onMoreGames on MenuLayer to show a popup.

### How do I install Geode?

The README does not list install commands; it links to https://docs.geode-sdk.org for installation instructions, and the repository contains an installer/ directory and a flash.toml file used by that process.

### How do I use Geode mods?

Mods are C++ code compiled against the Geode SDK and loaded by the loader, using the $modify macro to hook game classes such as MenuLayer. The README points new modders to the tutorial book at docs.geode-sdk.org.

### How do I use Geode on iOS?

The README does not document iOS support and points to https://docs.geode-sdk.org for installation instructions. Check that documentation for the platforms the installer currently covers.

### How do I use Geode on mobile?

The README does not document mobile installation. It links to the documentation and a Discord server for questions, and the repository topics list cross-platform.

### How do I use Geode with Geometry Dash on mobile?

The README gives no mobile-specific steps and does not document a mobile installer. Installation instructions live at https://docs.geode-sdk.org, which is where the repository directs readers.

## Sources

- [geode-sdk/geode on GitHub](https://github.com/geode-sdk/geode)
- [License: BSL-1.0](https://github.com/geode-sdk/geode/blob/main/LICENSE)
- [Project website](https://geode-sdk.org/)
- [README](https://github.com/geode-sdk/geode/blob/main/README.md)
- [Releases](https://github.com/geode-sdk/geode/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/geode-sdk-geode
