Chrome extensions are software programs built on web technologies that customize the browser experience for a user.
Extensions are run in a sandboxed environment but can interact with web content, which makes them suitable for some education use cases like:
- Browser filtering and monitoring
- Inserting specialized characters such as mathematical symbols and equations
- Content enrichment, for example identifying spelling and grammatical errors
- Policy enforcement (e.g. limiting time on social media)
When building solutions for education use cases on Chromebooks, you can create an extension, a web app, or both. If you need to run your program in a cross-site context, then an extension is a good option to consider. Your extension can interact with web apps that you don’t own. For example, an extension may detect grammatical errors on a Google doc and provide comments and recommendations to fix them. Another extension may help students with note-taking by accumulating text the student highlights on any web page into one doc.
If your program does not need to run on other websites, then creating a web app might be a better option. If you have a web app, an accompanying extension can enhance your user’s experience by bringing functionality and APIs that may not be available on the web platform.
If you previously had a Chrome app, we strongly recommend migrating to web apps. Chrome apps are being deprecated, but will be supported until at least January 2025 for ChromeOS. During this transition period, some Chrome app features may not have a suitable web platform equivalent. For these, you may need to implement an extension along with your web app to achieve similar results via message passing. One specific example of this is if you want to utilize kiosk mode-specific APIs in your PWA kiosk application.
When developing extensions, there are a number of APIs to help you achieve the functionality you’re building.
Additionally, there are a few Chrome OS-only APIs to keep in mind as well:
fileBrowserHandler extends ChromeOS file browser
fileSystemProvider creates virtual file systems which can be accessible by ChromeOS file manager
input.ime implement custom IME for ChromeOS
idle.getAutoLockDelay returns the time (in seconds) it takes for the screen to automatically lock while idle.
When you’re done building your extension, you’ll want to publish it it can be installed and used. There are two officially supported distribution mechanisms: Chrome Web Store and self-hosting.
The Chrome Web Store lets you make your extension available to users everywhere. Since your extension will be hosted and signed by the Chrome Web Store, you will also need to comply with the store policies. One policy to keep in mind is the “single purpose” policy which requires extensions to have only a single purpose with respect to its subject matter or browser function. If you don’t want to make your extension available to the public, you also have the option to list your extension as private or unlisted. This lets you restrict access to users in your domain or a group of trusted testers you can set up.
Self-hosting extensions are more common in managed environments, like education, where system administrators can implement policies to control school-issued devices. When deciding whether to self-host your extension or not, consider the setup and security tradeoffs of hosting your extension on your own server. Once you’ve appropriately packaged and hosted your extension, you’ll need to share the URL to your self-hosted extension’s XML manifest file so that admins can add a policy to force install the extension on their managed devices.
Oftentimes, your extension may be used by students on managed devices. It’s important to understand the following management policies that administrators may put on student devices and how they can affect the functionality of your extension: