Skip to main content

Preparing for release

Before distributing your plugin, verify that it is complete, stable, and ready for other users.

Required files

FileRequiredDescription
config.jsonYesPlugin configuration and metadata
index.htmlYesPlugin entry point
resources/light/icon.pngYesLight theme icon
resources/dark/icon.pngYesDark theme icon
resources/store/icons/For marketplaceStore listing icons

Additional: translations/ folder, additional HTML files, assets.

config.json checklist

{
"name": "My Plugin",
"guid": "asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}",
"version": "1.0.0",
"variations": [{
"description": "What the plugin does",
"url": "index.html",
"icons": "resources/%theme-type%(light|dark)/icon%scale%(default).%extension%(png)",
"isViewer": false,
"EditorsSupport": ["word"]
}]
}

guid - Must follow asc.{UUID} format. Generate at uuidgenerator.net.

Wrong
{ "guid": "my-plugin-guid" }
Correct
{ "guid": "asc.{FFE1F462-1EA2-4391-990D-4CC84940B754}" }

version - Semantic versioning (MAJOR.MINOR.PATCH). Start at 1.0.0.

variations[].EditorsSupport - Only list tested editors: "word", "cell", "slide", "pdf".

Optional recommended fields:

{ "minVersion": "7.0.0", "help": "https://example.com/plugin-help" }

Icon requirements

PropertyRequirement
FormatPNG (SVG also supported)
Locationresources/light/ and resources/dark/
Scale variantsicon.png, icon@1.25x.png, icon@1.5x.png, icon@1.75x.png, icon@2x.png
Store iconsresources/store/icons/
Wrong
{ "icons": ["icon.svg"] }
Correct
{ "icons": "resources/%theme-type%(light|dark)/icon%scale%(default).%extension%(png)" }

Code quality

Remove debug code

Wrong
window.Asc.plugin.init = function() {
debugger;
console.log('DEBUG: init called', arguments);
console.table(window.Asc.plugin);
};
Correct
window.Asc.plugin.init = function() {
loadData();
};

Plugin must close correctly

window.Asc.plugin.button = function(id) {
if (id === 0) {
window.Asc.plugin.callCommand(function() { /* apply changes */ });
} else {
window.Asc.plugin.executeCommand("close", "");
}
};

External resources

  • All external resources must be loaded over HTTPS
  • Avoid unreliable CDNs
  • Bundle critical dependencies locally when possible

Final folder structure

your-plugin-name/
├── config.json ✓ Required
├── index.html ✓ Required
├── scripts/ ✓ Required (plugin logic)
│ └── code.js
├── resources/ ✓ Required (icons and assets)
│ ├── light/
│ │ └── icon.png
│ ├── dark/
│ │ └── icon.png
│ └── store/ For marketplace submission
│ └── icons/
└── translations/ Optional
├── en.json
└── fr.json

Next steps

Additional resources