--- title: Functions weight: 100 description: "Functions extend Crossplane with new ways to configure composition" --- Functions extend Crossplane with new ways to configure [composition]({{}}). You can use different _composition functions_ to configure what Crossplane does when someone creates or updates a [composite resource (XR)]({{}}). {{}} This page is a work in progress. Functions are packages, like [Providers]({{}}) and [Configurations]({{}}). Their APIs are similar. You install and configure them the same way as a provider. Read the [composition]({{}}) documentation to learn how to use functions in a composition. {{}} ## Install a Function Install a Function with a Crossplane {{}}Function{{}} object setting the {{}}spec.package{{}} value to the location of the function package. {{< hint "important" >}} Beginning with Crossplane version 1.20.0 Crossplane uses the [crossplane-contrib](https://github.com/orgs/crossplane-contrib/packages) GitHub Container Registry at `xpkg.crossplane.io` by default for downloading and installing packages. Specify the full domain name with the `package` or change the default Crossplane registry with the `--registry` flag on the [Crossplane pod]({{}}) {{< /hint >}} For example, to install the [patch and transform function](https://github.com/crossplane-contrib/function-patch-and-transform), ```yaml {label="install"} apiVersion: pkg.crossplane.io/v1 kind: Function metadata: name: crossplane-contrib-function-patch-and-transform spec: package: xpkg.crossplane.io/crossplane-contrib/function-patch-and-transform:v0.8.2 ``` By default, the Function pod installs in the same namespace as Crossplane (`crossplane-system`). {{}} Functions are part of the {{}}pkg.crossplane.io{{}} group. The {{}}meta.pkg.crossplane.io{{}} group is for creating Function packages. Instructions on building Functions are outside of the scope of this document. Read the Crossplane contributing [Function Development Guide](https://github.com/crossplane/crossplane/blob/main/contributing/guide-provider-development.md) for more information. For information on the specification of Function packages read the [Crossplane Function Package specification](https://github.com/crossplane/crossplane/blob/main/contributing/specifications/xpkg.md#provider-package-requirements). ```yaml {label="meta-pkg"} apiVersion: meta.pkg.crossplane.io/v1 kind: Function metadata: name: provider-aws spec: # Removed for brevity ``` {{}}