Chapters
Chapters
< Ruby Console Hello Cube >
Frequently Asked Questions
Yes, you may use an external licensing system. However, if you do so, you are responsible for handling all sales and license issuance through your own infrastructure, using the Extension Warehouse primarily for distribution.
To ensure your extension passes our automated checks and developer review, make sure you avoid these frequent issues:
Incorrect RBZ File Structure: Your extension must have exactly one root .rb loader file and a support folder of the same name (e.g., my_extension.rb and a my_extension/ folder). Packing files incorrectly or putting extension logic directly into the root file will trigger a rejection.
Namespace Pollution (Lack of Wrapping Module): Because all SketchUp extensions run in a shared Ruby environment, your code must be entirely wrapped in its own unique, uniquely named module (usually a combination of your developer/company name and your extension name). Using global variables, global methods, or modifying SketchUp’s base classes directly will result in rejection.
Hardcoding File Extensions (Requiring Files): When using Sketchup.require to load files, do not hardcode .rb extensions. Extension Warehouse encrypts .rb files into .rbe or .rbs files upon publishing; hardcoding the file extension will cause immediate load errors.
Modifying the $LOAD_PATH: Altering Ruby’s global load path can cause other developer's extensions to load the wrong files.
For a complete checklist of code quality requirements, correct folder organization, and formatting examples, please refer directly to the official SketchUp Ruby API Extension Requirements Page.
We highly recommend reviewing this guide before every new release submission.
To report a bug or request a new API feature, please file an issue directly on our official SketchUp Ruby API Issues GitHub tracker.
For coding questions and community help, join the active developer community in the Developer Category on the official SketchUp Forums.
When you submit your extension to the Extension Warehouse, you have the option to encrypt your code. The Extension Warehouse automatically encrypts your standard Ruby (.rb) files into secure formats (.rbe or .rbs) during the publishing and signing process. This ensures your intellectual property is protected before it is distributed to users.
Signing your extension is a critical step in maintaining the security and integrity of your code. By signing and encrypting your extension, you obtain a security certificate that acts as a guarantee for your users.
Security & Protection: Signing helps protect your work and ensures that the extension has not been tampered with since it was signed.
User Trust: A signed extension provides peace of mind to SketchUp users, as it verifies that the extension comes from a trusted developer and meets security standards.
Compatibility: Signing and encrypting (using the .rbe format) is the standard for ensuring your extension remains secure and functional across modern versions of SketchUp (2016 and later).
The signing process is managed through the Extension Warehouse to ensure your files are properly encrypted and certified.
Access the Developer Portal: Log in to the SketchUp Extension Warehouse signing page.
Follow the Submission Process: You will be guided through the steps to sign and encrypt your extension files.
To prevent delays or immediate denial during the validation process, you must provide the review team with a functional way to test your extension. When submitting your extension for review, use the Developer Notes field to provide a test license key, premium access credentials, or clear instructions on how the reviewer can bypass the paywall during their evaluation window.
While we encourage developers to protect their intellectual property, our validation system requires the structural integrity of your .rbz package to remain unencrypted during the initial automated file scan. Individual Ruby files inside your package can (and should) be encrypted as .rbe or .rbs files using our official signing tool, but the outer archive itself must be a standard zip format renamed to .rbz.
Trimble Modus is our unified, company-wide UI framework and design language.
While it is not an absolute, hard requirement for basic extension approval, we highly recommend designing any custom HTML dialog boxes or web wrappers using Modus elements.
Aligning your tool buttons, typography, and menus with Modus gives your extension a seamless, native feel that users instantly recognize as safe and professional.
If you are looking for sample code, starter templates, or open-source libraries to help you build your SketchUp extensions, we keep all of our public repositories hosted over on GitHub.
You can find our main organization page on this link:
https://github.com/orgs/SketchUp/repositories
This is a really great resource whether you are just getting started or if you want to see how we handle certain API integrations. We have a variety of repositories available there, including official Ruby examples, UI utilities, and templates to help jumpstart your development.
If you are developing SketchUp extensions in Ruby, you want to make sure your code is as clean, secure, and compatible as possible. RuboCop is a static code analyzer (often called a "linter") that automatically reviews your Ruby files.
We have created a tailored version specifically for our developers called rubocop-sketchup. You can find the repository and setup instructions on GitHub:
Why should I use it?
Catch SketchUp-Specific Issues: This tool goes beyond basic Ruby style. It is custom-built with rules ("cops") that check your code against SketchUp API guidelines, flagging deprecations, common performance bottlenecks, and potential stability bugs before they impact your users.
Speed Up Extension Warehouse Approval: When you submit an extension to the Extension Warehouse, our review team uses these exact same rules to evaluate your code. Running the linter locally first allows you to fix warnings early, dramatically reducing back-and-forth communication and getting your extension approved much faster.
Cleaner, Industry-Standard Code: It keeps your code consistent and easy to read, making it much simpler to maintain or collaborate with other developers down the line.

