Development/Extension Development

From The Document Foundation Wiki
Jump to navigation Jump to search


LibreOffice has 3 kinds of extensions.

  • If you are an extension developer, you can use several languages to develop LibreOffice extensions. Supported programming languages are Basic, Python, JavaScript, Java and BeanShell. For the higher level of integrity and possibilities you can use C++, Python and Java languages to develop UNO complements based extensions. They are bundled as .oxt files and can be shared on
Extensions are the preferred way for sysadmins to modify default settings. A guide for developing configuration extensions is available in PDF or ODT format. A sample OXT configuration extension accompanies the guide.
  • There are also special Calc extensions known as Add-Ins that add spreadsheet functions to Calc. As a UNO components you can provide new implementations of existing functionality or specialized components like Calc Add-Ins, Add-Ons, DataPilots, Chart Add-Ins, or linguistic components: Spellchecker, Hyphenator or Thesaurus (see Add-Ins documentation).


In an effort to not duplicate information, you can refer to OpenOffice's documentation. They are still largely compatible, but extra check should be performed since LibreOffice is moving forwards rapidly (see Compatibility notes below).

Current resources are currently being consolidated on the LibreOffice help pages.

Before you can start, you need to install the SDK.

Languages tutorials


To jump-start development, you can take a look at the source of existing extensions on GitHub and SourceForge.


The LibreOffice source code also has a collection of SDK examples.

Eclipse Plugin

TDF offers the Eclipse Plugin "LOEclipse" which helps with developing LibreOffice extensions/components in Java.

You can find it on the Eclipse Marketplace. There is also a Starter Extension which should help getting up to speed.

Python extensions

Compatibility notes

The LibreOffice developers are conservative when it comes to changes to the public (UNO) API and thus, most extensions written for or Apache OpenOffice will still work with LibreOffice. If changes happen, they are noted in the ReleaseNotes (API changes in 4.2, 4.1 and 4.0).

  • The dependency states that an extension works in the specified versions as well as in LibreOffice versions that correspond to at least the specified reference version. All LibreOffice versions up to 4.2.3 report that they correspond to reference version 3.4, while LibreOffice versions since 4.2.4 report that they correspond to reference version 4.1. Using this dependency, the extension declares that it only uses features found in the specified reference version (and that it consequently works across all the products, not only for itself).
  • If an extension is intended for a specific version of LibreOffice, starting with LibreOffice 7.0 it can specify a new dependency LibreOffice-maximal-version with namespace in addition to the dependency LibreOffice-minimal-version. This should be needed very rarely.