CLI tool
shobhit99/SuperIsland avatar
shobhit99/SuperIsland

SuperIsland turns the Mac notch into a JavaScript-extensible status island

Dynamic Island for MacOS — with Extensions

675 stars58 forksSwiftLicense varies

At a glance

What is it?
SuperIsland is a Swift application for macOS 14 Sonoma and later that puts a live island in the notch, with built-in modules for Now Playing, battery, weather, calendar, notifications and a file shelf, plus an extension host that runs JavaScript packages in a sandboxed JavaScriptCore context. The build path is XcodeGen driven, and the repository ships no licence file.
Who is it for?
Mac users who want their notch to show now playing, calendar and battery information, and developers who want to extend that surface with small JavaScript packages, will find the ExtensionHost and the sandboxed context a workable design. It is the wrong choice for anyone who needs a signed, notarised binary today, since the build scripts expect credentials you supply yourself, and for anyone who needs clear licensing terms, since the repository root lists no licence file.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 40 days ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A macOS 14 app that lives in the notch

SuperIsland is a native Swift application whose entire premise is the display cutout on a Mac laptop. The project describes the result as turning the notch into a live, interactive island, and the built-in surface covers Now Playing, battery, weather, calendar, notifications and extensions. The requirements are specific: macOS 14 Sonoma or later, Xcode 15 or newer, XcodeGen for project generation, and Node.js 18 or newer, but only if you intend to work on the extensions. The application is built as a normal Xcode project rather than a packaged binary you download, and the source layout makes the architecture legible at a glance. The `App/` directory holds the AppDelegate and AppState, `Views/` holds CompactView, ExpandedView and IslandWindow, `Modules/` holds the built-in modules, `Utilities/` holds UpdateChecker and AutoUpdater, and `ExtensionHost/` is where the JavaScript runtime, extension manager and bridge live.

Extensions are JavaScript packages in a sandboxed JavaScriptCore context

The extension system is the part that distinguishes SuperIsland from a menu bar utility. Extensions are JavaScript packages, and they run inside a sandboxed JavaScriptCore context rather than being native code, which means an extension author writes JavaScript rather than Swift and the host keeps it away from the rest of the process. The repository bundles sample extensions, listed as pomodoro and whatsapp-web among others, and there are several extension documents at the root: EXTENSIONS.md, EXTENSIONS-API.md and SUPER-ISLAND-EXTENSION-API.md, with the full guide also published at dynamicisland.app/docs. The Notifications module exposes source-level controls for SuperIsland extensions, the bundled WhatsApp integration and compatible public app broadcasts, which tells you that an extension can present its own notifications and that the host arbitrates between sources. The two requirements combine into a clear division of labour: Xcode for the shell, Node.js only when the work touches extension code.

The setup path goes through XcodeGen

Building from source is four commands, and the project definition lives in `project.yml` rather than in a checked-in `.xcodeproj`:

bash
git clone https://github.com/shobhit99/superisland.git
cd superisland
xcodegen generate
open SuperIsland.xcodeproj

XcodeGen reads the `project.yml` and produces the Xcode project, so the generated project file is not something you review and commit by hand. The documentation then says to select the `SuperIsland` scheme, choose your Mac as the destination and run. On first launch the application asks for Accessibility, Calendar and Location permissions, and the documentation states that these are required for the relevant modules to work. That last point is worth reading carefully on a work machine: Accessibility permission in particular is a broad grant, and a status bar style application asking for it is the kind of thing a security review will look at. The website, the docs site and the releases page are all linked from the top of the repository.

Two scripts cover unsigned local builds and signed releases

Packaging is split into a quick path and a proper one. For a local, unsigned build there is a single script, `./scripts/build-dmg.sh`. For a signed release you need a Developer ID certificate and notarization credentials, and the credentials come from a `.env` file created by copying `.env.template`:

bash
[email protected]
APP_SPECIFIC_PASSWORD=xxxx-xxxx-xxxx-xxxx
TEAM_ID=XXXXXXXXXX
SIGNING_IDENTITY=Developer ID Application: Your Name (TEAMID)

With those in place, `./scripts/build-and-release.sh` archives a universal app, bundles a universal runtime, notarizes the DMG and produces `build/SuperIsland.dmg`. There is also `./scripts/verify-universal-build.sh build/SuperIsland.app --skip-signature` for checking a built bundle, and the release and Homebrew packaging notes live in `docs/RELEASE.md` with a Cask template at `packaging/homebrew/superisland.rb`. The practical consequence for a team is that distribution is your problem: the project gives you the tooling, but the signing identity and notarization credentials have to come from your own Apple Developer account.

Energy modes trade background refresh for responsiveness

The Settings window has a General section with a Power page offering three modes: Normal, Smart and Low Power. Smart reduces background refresh while the island is collapsed, and Low Power slows non-essential work and pauses inactive extension timers. The documentation points at `docs/ENERGY.md` for profiling notes and scheduler behaviour, which suggests the scheduling is deliberate rather than incidental. For a tool that sits in the notch and reacts to media sessions, battery and calendar changes all day, the refresh policy is the difference between a resident app and a noticeable one. The same Settings area handles appearance: home slots, compact island size, animation intensity and reduced motion. Both sections are documented in separate files under `docs/`, so behaviour for a given mode is described in more depth than the README gives.

Now Playing, Calendar and Shelf are the modules with real depth

Three of the built-in modules are described in enough detail to judge their scope. Now Playing supports system media, Apple Music, Spotify, and opt-in browser media detection for supported Chromium browsers, so it is not limited to the system's own media session. The Calendar module supports account and source selection, holiday and birthday filters, duplicate collapse and meeting-link actions. The built-in Shelf module can stage local files, folders, URLs, text snippets and images from the island, which turns the notch into a small clipboard and launcher rather than a display only. Each of these has its own document, `docs/NOW_PLAYING.md`, `docs/CALENDAR.md` and `docs/SHELF.md`, alongside `docs/NOTIFICATIONS.md`, `docs/APPEARANCE.md` and `docs/ENERGY.md`. The bundled extension list, pomodoro and whatsapp-web, sits in `Extensions/` next to the host that runs it.

No licence file, and a release line that has paused

Two things about the repository deserve a second look before you build on it. The first is licensing: the repository root listing contains no LICENSE file, and the project metadata does not record a licence, so there is no stated permission set for reuse, modification or redistribution. For a personal utility that is a non-issue, and for anything shipped inside a company it is a question to raise with the author rather than to assume. The second is timing. The tagged releases are 1.0.8 on 2026-05-21, 1.0.9 on 2026-06-04 and 1.0.10 on 2026-06-12, and the last push to the repository was on 2026-09-13, with the repository not archived. The application also checks for updates on launch and offers an in-app update dialog, so an installed copy tracks the published releases rather than the working tree.

Editorial conclusion

Mac users who want their notch to show now playing, calendar and battery information, and developers who want to extend that surface with small JavaScript packages, will find the ExtensionHost and the sandboxed context a workable design. It is the wrong choice for anyone who needs a signed, notarised binary today, since the build scripts expect credentials you supply yourself, and for anyone who needs clear licensing terms, since the repository root lists no licence file. Before adopting it, read EXTENSIONS.md and the docs/ folder, and confirm that the three permissions requested on first launch, Accessibility, Calendar and Location, are ones your organisation allows this app to hold.

Frequently asked questions

What are the requirements to build SuperIsland?

You need macOS 14 Sonoma or later, Xcode 15 or newer and XcodeGen, which the documentation installs with `brew install xcodegen`. Node.js 18 or newer is needed only if you plan to work on the extensions.

How do extensions work in SuperIsland?

Extensions are JavaScript packages that run inside a sandboxed JavaScriptCore context hosted by the ExtensionHost. The full guide is in EXTENSIONS.md and on the docs site, and the repository bundles examples such as pomodoro and whatsapp-web.

What permissions does SuperIsland ask for?

On first launch the app asks for Accessibility, Calendar and Location permissions, which the documentation says are required for the relevant modules to work. The Calendar module for instance supports account and source selection, and the notifications work depends on system sources.

How do I produce a signed and notarised SuperIsland build?

Copy `.env.template` to `.env` and fill in APPLE_ID, APP_SPECIFIC_PASSWORD, TEAM_ID and SIGNING_IDENTITY with your own Developer ID details, then run `./scripts/build-and-release.sh`, which archives a universal app, bundles a universal runtime, notarizes the DMG and produces `build/SuperIsland.dmg`. For a quick unsigned local build, `./scripts/build-dmg.sh` is enough.

Official sources

  1. Issues
  2. Project website
  3. README
  4. Releases
  5. shobhit99/SuperIsland on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/shobhit99-superisland.svg)](https://hysenlabs.com/projects/shobhit99-superisland)

Was this useful?