De nombreuses applications Mac OS X sont scriptables, tant des applications fournies par Apple que celles de tiers. Le Finder, Safari, iPhoto et iTunes d'Apple ; Illustrator, Photoshop et InDesign d'Adobe ; Word et Excel de Microsoft ; QuarkXPress, pour ne citer que quelques exemples parmi les plus connus.
Avant le Système 7, le moteur d'exécution d'application Mac OS avait une programmation événementielle rudimentaire ne pouvant produire qu'un nombre limité d'évènements de bas niveau tel que "touche enfoncée" ou "souris cliquée". Chaque application était responsable du décodage de ces évènements de bas niveau en actions utilisateur significative de haut niveau tel que "sélectionner l'article Couper du menu Édition". Dans de nombreux cas, le code gérant la lecture de l'évènement et celui gérant son décodage ont été fusionnés. Par exemple, le code gérant le "clic souris" pouvait lui-même le décoder comme "sélectionner l'article Quitter du menu "Fichier", puis quitter l'application immédiatement.
L'auteur qui veut rendre scriptable son application par AppleScript doit séparer le décodage et l'exécution des commandes, une tâche qu'Apple référence comme refactorisation (… de l'application). Les développeurs furent encouragés à écrire à deux "piles" complètes de gestion d'évènement. L'une pour gérer les évènements de bas niveau (clics, etc.) l'autre pour les évènements de haut niveau (AppleEvents). […]
Dans Mac OS X, AppleScript est plus simple à mettre en œuvre par les développeurs, particulièrement pour les applications développée en Cocoa. Contrairement à Mac OS où les évènements sont traités par les applications, dans Cocoa, les évènements sont décodés en commande de haut niveau par l'objet NSApplication
, et les messages adressés directement au bon objet. Chaque application Cocoa est "refactorisée" par défaut, le développeur n'ayant (normalement) plus à écrire le code de gestion des évènements mais seulement les "méthodes" qui seront appelées par ces évènements.
Un autre grand avantage est que les objets Cocoa se présentent aux autres applications et même machines, sous un format standardisé que chacun peut étudier directement. Sous Cocoa, AppleScript est plus "mince". Le moteur de script décode le script, traduit les noms d'objet depuis leur forme compréhensible pour l'humain vers leur format interne, puis appelle directement les méthodes de l'application ciblé.