Start typing to search...
Docs
Guidelines and best practices
Template quality checklist
Search

Template requirements checklist

Before submitting your template to Koji, review this checklist to ensure it meets the requirements for a complete and compelling template.

Functionality

Remix experience and Visual Customization Controls (VCCs)

Requirement Status

Template uses the @withkoji/vcc package to expose the necessary VCC controls.

  • Verified

  • Needs revision

Users can create a remix in one minute or less.

  • Verified

  • Needs revision

Template shows live updates when values in VCCs are changed.

  • Verified

  • Needs revision

VCCs specify human-readable names and clear descriptions for the expected input, including any constraints (for example, character limits on text inputs).

  • Verified

  • Needs revision

Template displays VCCs only for values that are used in the template experience.

  • Verified

  • Needs revision

Template provides VCCs for values that users are most likely to customize. It does not allow customization of elements that a developer should define (for example, border width for pictures, speed of game actions).

  • Verified

  • Needs revision

Template uses common VCCs and provides choices that improve remix efficiency, where possible. For example, it uses a range VCC to specify font size, because it’s easier to use and can enforce sensible minimum and maximum values. It uses a select VCC instead of a text VCC, where appropriate, because it’s easier to choose from a list of predefined options than to type a response.

  • Verified

  • Needs revision

Template uses nested VCCs (arrays and composed objects) only if necessary to enable effective customization. VCCs are not nested excessively and do not create a difficult or confusing remix experience.

  • Verified

  • Needs revision

During remix, template exposes editable items with standard styles (see UI Elements). It uses buttons to trigger VCCs only when an editable element cannot be indicated effectively with the standard styles (for example, to change the entire layout).

  • Verified

  • Needs revision

For text input, values are not case sensitive and whitespace is trimmed from the beginning and end of the input.

  • Verified

  • Needs revision

Template uses states to break up the remixing experience into manageable and logical steps, where appropriate.

  • Verified

  • Needs revision

Performance

Requirement Status

Template preloads resources to ensure a smooth experience. For example, templates with multiple states load images in the background.

  • Verified

  • Needs revision

Frontend URL of published template was tested with Pingdom and has a performance grade of B or better. To access the frontend URL, go to the published template, inspect the element, and use the iframe source URL.

  • Verified

  • Needs revision

Template size (bundle and assets) is less than 2 MB.

  • Verified

  • Needs revision

Image optimization

Requirement Status

Image assets and backgrounds are sized at the correct aspect ratio to avoid distortion. The standard portrait aspect ratio is 9:16 (for example, 1080x1920).

  • Verified

  • Needs revision

Template uses the Fastly API to automatically size image assets.

  • Verified

  • Needs revision

Template uses Fastly image optimization to reduce the image size wherever possible.

  • Verified

  • Needs revision

Template sets a default background color to handle images with transparent backgrounds.

  • Verified

  • Needs revision

Device and browser support

Requirement Status

Template was tested on iPhone 6S / 6S Plus (iOS 9.0.1) or newer. Works in mobile Safari and Chrome browsers.

  • Verified

  • Needs revision

Template was tested on Android Oreo 8.0 or newer. Works in Chrome and Firefox browsers.

  • Verified

  • Needs revision

Template was tested on desktop. Works in Chrome, Firefox, and Safari browsers.

  • Verified

  • Needs revision

Template is responsive; presents same experience on desktop and mobile devices.

  • Verified

  • Needs revision

Background and image sizes, aspect ratios, and crops are consistent across device sizes.

  • Verified

  • Needs revision

Template displays content correctly, regardless of device orientation. It does not rely on the deviceorientation event to enforce a specific orientation, which can fail for embedded content in iframes.

  • Verified

  • Needs revision

Template uses a library that provides cross-browser support for audio features, if applicable. For example, howler.js.

  • Verified

  • Needs revision

Sharing and platform information

Requirement Status

The FeedEvents and InstantRemixing entitlements are enabled.

  • Verified

  • Needs revision

Template uses FeedSdk from the @withkoji/vcc package and calls the load event to ensure it is preloaded correctly in the Koji feed.

  • Verified

  • Needs revision

If the template has auto-playing content or audio, it plays and pauses in response to feed events. To test feed events, append ?feedDebug=true to the URL, which loads the template in the feed 10 times.

  • Verified

  • Needs revision

If the default view does not represent the functionality well, template renders a custom preview page with a responsive, square aspect ratio when visited with a query parameter of koji-screenshot=1. Koji uses a screenshot of this page as the preview image when users share their posts on social media.

  • Verified

  • Needs revision

If the template uses gestures, the gestures are implemented to work correctly when the template is in focus in the feed. That is, the template actions take precedence over the feed actions.

  • Verified

  • Needs revision

Template is published with an appropriate name and description for better sharing and discoverability on the platform.

  • Verified

  • Needs revision

Presentation and usability

UI elements

Requirement Status

During remix, editable elements are indicated with a semi-transparent, white rectangle and a rotating dashed line. See example in this project.

  • Verified

  • Needs revision

On-screen instructions use the mobile-first variant (for example, “Tap” instead of “Click”).

  • Verified

  • Needs revision

UI elements support touch gestures.

  • Verified

  • Needs revision

Primary content fits on the screen without zooming or horizontal scrolling.

  • Verified

  • Needs revision

Tappable elements measure at least 44x44 points.

  • Verified

  • Needs revision

Text is large enough to be legible at default size (at least 11 points).

  • Verified

  • Needs revision

Font size for user input elements is at least 16 px to prevent unintended page zooming on iOS.

  • Verified

  • Needs revision

Text and background colors or images have sufficient contrast to make text legible (contrast ratio of 4.5:1 or higher, for default values).

  • Verified

  • Needs revision

Template meets the design-guidelines.html.

  • Verified

  • Needs revision

Template was tested with different images (portrait, landscape, small, large).

  • Verified

  • Needs revision

Template uses standard web fonts (fonts.google.com) with a default font that matches the use case. For examples, see the design-guidelines.html#_fonts_are_appropriate_and_convey_information.

  • Verified

  • Needs revision

Loading indicator and experience

Requirement Status

Template uses the Koji standard loading indicator. See example in this package for React and this package for vanilla JavaScript.

  • Verified

  • Needs revision

When loading takes more than 2 seconds, loading indicator is displayed until all of the assets have loaded.

  • Verified

  • Needs revision

All content loads at the same time, providing a coordinated start for all images, sounds, and other content.

  • Verified

  • Needs revision

Template transitions gracefully from loading indicator to loaded content (for example, fade in from indicator to fully loaded image, rather than showing a black area and having the image flash in after it loads).

  • Verified

  • Needs revision

Code

Requirement Status

Code includes adequate error handling.

  • Verified

  • Needs revision

Code includes comments where appropriate.

  • Verified

  • Needs revision

Code is easily readable and accessible for other developers.

  • Verified

  • Needs revision

Project includes a readme file that documents the tech stack and any relevant information to aid someone working with the code.

  • Verified

  • Needs revision

Project does not contain unnecessary code.

  • Verified

  • Needs revision

Code is formatted correctly.

  • Verified

  • Needs revision

Large files are broken down into smaller chunks where appropriate.

  • Verified

  • Needs revision

If the template uses assets, any required attributions are included in the template.

  • Verified

  • Needs revision

Template implements appropriate security measures to prevent inappropriate use. For example, input validation and output encoding to prevent malicious script execution from text entry fields or links.

  • Verified

  • Needs revision

Template does not contain any malicious code.

  • Verified

  • Needs revision