# Craft 4 Plugin Changes ## Composer Requirements #### Before ```json "require": { "craftcms/cms": "^3.0.0" }, ``` #### After ```json "require": { "craftcms/cms": "^4.0.0-alpha" }, ``` ## Method Return Types #### Before ```php public method init() ``` #### After ```php public method init(): void ``` ## Registering User Permissions #### Before ```php $event->permissions['Blitz'] = [ 'blitz:clear' => [ 'label' => Craft::t('blitz', 'Clear cache') ], ]; ``` #### After ```php $event->permissions[] = [ 'heading' => 'Blitz', 'permissions' => [ 'blitz:clear' => [ 'label' => Craft::t('blitz', 'Clear cache') ], ], ]; ``` ## Editable Table Fields ### Before ```twig {{ forms.editableTableField({ label: "Included URI Patterns"|t('blitz'), name: 'settings[includedUriPatterns]', id: 'includedUriPatterns', cols: cols, rows: settings.includedUriPatterns, addRowLabel: "Add a URI pattern"|t('blitz'), }) }} ``` ### After ```twig {{ forms.editableTableField({ label: "Included URI Patterns"|t('blitz'), name: 'settings[includedUriPatterns]', id: 'includedUriPatterns', cols: cols, rows: settings.includedUriPatterns, addRowLabel: "Add a URI pattern"|t('blitz'), allowAdd: true, allowDelete: true, allowReorder: true, }) }} ```