# Writing Craft Plugins with Extensible Components

DevFeed: [Writing Craft Plugins with Extensible Components](<https://devfeed.tech/articles/writing-craft-plugins-with-extensible-components-31322.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/writing-craft-plugins-with-extensible-components>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2018-12-26T22:19:00Z

Content type: tutorial

Language: en

Sources: [nystudio107 | Articles on modern web development.](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [Content Management System](<https://devfeed.tech/topics/cms.md>), [PHP](<https://devfeed.tech/topics/php.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [allows](<https://devfeed.tech/tags/allows.md>), [article](<https://devfeed.tech/tags/article.md>), [cms](<https://devfeed.tech/tags/cms.md>), [code](<https://devfeed.tech/tags/code.md>), [component-ized](<https://devfeed.tech/tags/component-ized.md>), [craft](<https://devfeed.tech/tags/craft.md>), [extend](<https://devfeed.tech/tags/extend.md>), [flexible](<https://devfeed.tech/tags/flexible.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [insights](<https://devfeed.tech/tags/insights.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [modular](<https://devfeed.tech/tags/modular.md>), [php](<https://devfeed.tech/tags/php.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [plugin-development](<https://devfeed.tech/tags/plugin-development.md>), [write](<https://devfeed.tech/tags/write.md>)

## AI overview

A tutorial on designing Craft CMS plugins with extensible components. It uses the ImageOptimize plugin as a practical example and explains how PHP interfaces can define an API that allows image transformation functionality to be replaced or extended by other services.

## Source excerpt

How to write a plugin for Craft CMS that allows others to extend it in a flexible, component-ized way