# registeredPackages

> Event raised after applying changes to the registered packages list.

## Definition

* **Type:** Event
* **Namespace:** [UnityEditor.PackageManager](/engine/6000.5/script-reference/unityeditor/packagemanager.md)
* **Assembly:** UnityEditor.CoreModule

```csharp
public static event Action<PackageRegistrationEventArgs> registeredPackages
```

### Remarks

This event triggers after the asset database refresh completes, which occurs after scripts compile and the domain reloads, if necessary. When you add, update, or remove a package that contains code, a [domain reload](/engine/6000.5/manual/scripting/compilation-and-code-reload/code-reloading-editor/domain-reloading.md) occurs, which resets registered event handlers. To ensure that your event handler is called, use [InitializeOnLoadAttribute](/engine/6000.5/script-reference/unityeditor/initializeonloadattribute.md) or [InitializeOnLoadMethodAttribute](/engine/6000.5/script-reference/unityeditor/initializeonloadmethodattribute.md) to register the event handler after the domain reload occurs but before the event triggers. **Note:** There is no guarantee that the [AssetPostprocessor](/engine/6000.5/script-reference/unityeditor/assetpostprocessor.md) will finish by the time this event is raised, so don't rely on the execution order for post-processing events.

```csharp
using UnityEngine;
using UnityEditor;
using UnityEditor.PackageManager;

[ExecuteInEditMode]
public class PackageRegistrationExample : MonoBehaviour
{
    static PackageRegistrationExample()
    {
        Events.registeredPackages += OnPackagesRegistered;
    }

    void Start()
    {
        Client.Add("com.unity.textmeshpro");
    }

    static void OnPackagesRegistered(PackageRegistrationEventArgs args)
    {
        // Report added packages
        if (args.added.Count > 0)
        {
            Debug.Log("Packages added:");
            foreach (var package in args.added)
            {
                Debug.Log($"- {package.name} ({package.version})");
            }
        }

        // Report removed packages
        if (args.removed.Count > 0)
        {
            Debug.Log("Packages removed:");
            foreach (var package in args.removed)
            {
                Debug.Log($"- {package.name}");
            }
        }

        // Report changed packages
        for (int i = 0; i < args.changedFrom.Count; i++)
        {
            var oldPackage = args.changedFrom[i];
            var newPackage = args.changedTo[i];
            Debug.Log($"Package updated: {oldPackage.name}" +
                $"\nFrom: {oldPackage.version}" +
                $"\nTo: {newPackage.version}");
        }
    }
}
```

**Related information**

* [Events.registeringPackages](/engine/6000.5/script-reference/unityeditor/packagemanager/events/registeringpackages.md)
* [PackageRegistrationEventArgs](/engine/6000.5/script-reference/unityeditor/packagemanager/packageregistrationeventargs.md)
* [Client.Add](/engine/6000.5/script-reference/unityeditor/packagemanager/client/add.md)
