Rootless

Automate iOS, iPadOS, and macOS using plain JavaScript. Build custom widgets and interact directly with native APIs.

Download on the App Store
Rootless app interface

Plain JavaScript

Supports ES6. Scripts are stored as plain .js files on your disk.

Native APIs & Documentation

Integrate directly with iOS native APIs. Fully documented, available offline.

Siri Shortcuts

Trigger scripts via Siri. Present tables, websites, and custom HTML natively.

System Integration

Run from the Share Sheet, process inputs, and manage local files via Files.app.

x-callback-url

Communicate seamlessly and trigger workflows with other apps on your device.

Customizable & Ready

Tailor the code editor to your liking. Includes several example scripts to start immediately.

Documentation

Also inside the app, or as rootless.json.

XML

Parse XML and news feeds

XML.parse returns a tree of plain objects. XML.feed flattens RSS and Atom to one shape, so a script does not need to know which it fetched. Most APIs return JSON and res.json covers those; feeds do not.

Methods

XML.parse(text)Any

Parses XML into plain objects.

  • text String required

returns A tree of { name, attributes, text, children }.

XML.feed(text)Any

Parses RSS or Atom into one shape, whichever it was.

  • text String required

returns { title, link, description, items }, where each item is { title, link, summary, author, published, id }.

Examples

Latest headlines

var res = Http.get("https://example.com/feed.xml", { cache: Duration.minutes(30) });
var feed = XML.feed(res.text);

Column({ children: feed.items.slice(0, 3).map(function (item) {
  return Text(item.title, { font: Font.FOOTNOTE, maxLines: 2 });
}) })