Start with built-in plugins, then gradually create custom plugins for cross-cutting concerns like validation, debugging, animations, or custom UI enhancements.

validate: function() var errors = []; // validation logic return errors;

onBeforeSubmit: function(form, action) if (action.type === 'submit') var errors = this.validate(); if (errors.length) this.fireEvent('validationfailed', this, errors); return false; // cancel submit this.fireEvent('validationsuccess', this); return true; ,

); You can add methods directly to the host instance:

showDetail: function(row, record) var detailDiv = Ext.DomHelper.append(row.parentNode, tag: 'div', cls: 'x-row-expander-detail', html: '<div class="detail-content">Details for ' + record.get('name') + '</div>' , true); detailDiv.setWidth(row.offsetWidth); ,