October 6, 2025
Ditto Github Action - 1.0.2
Updates the Github Action to work with CLIv5.x, compatible with both new and legacy Ditto. After upgrading, the Github Action will fetch from new Ditto projects/components by default.
Legacy users will need to add pull-from-legacy: "true" to their workflow file to continue fetching legacy text.
If you wish to use this action for both new and legacy Ditto, simply create separate steps with different inputs. See the README for more details and examples.
Release notes:
Ditto CLI - 5.1.0
A small update to support the-m and --meta flags in commands. This is used internally for analytics and should not affect customer workflows.
See full release notes here.
October 1, 2025
Ditto CLI - 5.0.0
First official stable release that provides support for fetching project text and components from the new Ditto experience, including all features from the v5 Beta release (through 5.0.0-beta.8). This version maintains full support for fetching from legacy projects and components. Simply include the--legacy flag along with any command from v4.x. Users with both new and legacy projects may pull data from both places into the same codebase by maintaining two separate config files and output directories, and including the path to the right config file in your pull command.
See full release notes here.
September 29, 2025
API
Added fetch components (GET /v2/components) API endpoint for fetching components in the user’s workspace.
Ditto CLI - 5.0.0-beta.8
Added support for fetching components in addition to project text via the CLI. Includecomponents in your config file to fetch components from the specified folders. Include projects in your config file to fetch text from the specified projects.
Breaking change: If projects or components are omitted from the config file, will not fetch text from that area. Previously, if projects was omitted, it would fetch text from all projects.
See full release notes here.
September 11, 2025
API
Added the ability to create variants from update text items (PUT /v2/textItems) API endpoint with the forceVariantCreation parameter.
August 18, 2025
Ditto CLI - 5.0.0-beta.7
Added support for fetching and outputting rich text (HTML) content for Ditto text, by addingrichText: html to the config file.
At this time, this version is still in Beta, accessible via @dittowords/cli@beta.
See full release notes here.
July 24, 2025
API
Added create text items (POST /v2/textItems) API endpoint for creating new text items.
July 8, 2025
API
Added update text items (PUT /v2/textItems) API endpoint for editing existing text items.
April 30, 2025
Ditto CLI - 5.0.0-beta.6
Beta release of CLI for Ditto 2.0. This version supports fetching text from new, non-legacy Ditto projects. It requires a new format for the config file and supports returning json files formatted for i18next. This version is still in beta, and can be accessed via@dittowords/cli@beta. Supports all legacy features via --legacy flag.
Release notes:
March 28, 2025
API
- Added fetch project folders (
GET /v1/project-folders) API endpoint for fetching project folders in the user’s workspace. - Added fetch projects by project folder id (
GET /v1/project-folders/:folder_id/projects) API endpoint for fetching projects in the specified folder.
March 24, 2025
API
Added the first set of v2 endpoints to the API:- Added fetch projects (
GET /v2/projects) API endpoint for fetching projects in the user’s workspace. - Added fetch text items (
GET /v2/textItems) API endpoint for fetching text items in the user’s workspace. - Added fetch variables (
GET /v2/variables) API endpoint for fetching variables in the user’s workspace. - Added fetch variants (
GET /v2/variants) API endpoint for fetching variants in the user’s workspace.
February 3, 2025
API
The fetch component text (GET /v1/components) API endpoint now supports the includeTimeData query parameter.
When includeTimeData is set to true, the response will include the createdAt and updatedAt fields for each component. This feature is only available when the structured format is used.
November 11, 2024
Ditto React - 1.6.3
- Dependency upgrades
May 21, 2024
Ditto CLI - 4.5.2
- Fix to include header distinguishing Ditto CLI requests from direct API requests.
May 7, 2024
Ditto CLI - 4.5.1
- Fix issue with error logs not being flushed before exiting the CLI
May 3, 2024
Ditto Github Action - 0.3.0
- add optional name input parameter pr-title-prefix to distinguish prs with multi config setups
May 2, 2024
API / Web App
Pluralization is now supported for all JSON formats when importing components via the Ditto web app or the Fetch component text API endpoint. Example import data:April 16, 2024
CLI
v4.5.0 released to add support for a new option which disables the generation ofindex.js and index.d.ts files when working with JSON formats.
See the release notes here.
March 22, 2024
CLI
v4.4.1 released to fix periodic hanging from attempting to exit the CLI process using Ctrl + C. See full release notes here.March 15, 2024
Documentation
- Small fixes and wording clarifications on the SDKs page
March 13, 2024
Ditto React - 1.6.1
- Fix crash when rich text is enabled
February 29, 2024
Ditto CLI - 4.4.0
- Add
pull—sample-data flag for variants
February 27, 2024
Ditto API
/v1/variantsnow supports theshowSampleDataquery parameter- Fix
/v1/variantsforprojectIdsquery parameter
February 19, 2024
Ditto CLI - 4.3.0
nestedformat is now supported
Ditto CLI - 4.2.3
- Upgrades to several dependencies
January 22, 2024
Ditto CLI - 4.2.2
- Stop component folders with emojis from creating a leading separator
December 12, 2023
Ditto API
The/components/file endpoint
now supports a folderId query parameter. You can supply the Developer ID of one of
your component folders, and all the components will be imported to that folder.
December 7, 2023
Ditto React
v1.3.2 released to fix a bug that incorrectly tracked the “Searching” location.November 28, 2023
Ditto CLI - 4.2.1
- Only run init() on commands that need it in https://github.com/dittowords/cli/pull/89
ditto directory from being created on commands that don’t need it (e.g. generate-suggestions)
See release notes: https://github.com/dittowords/cli/releases/tag/v4.2.1
November 16, 2023
Ditto CLI - 4.2.0
Add--sample-data flag to the components-folders command in https://github.com/dittowords/cli/pull/88
See release notes: https://github.com/dittowords/cli/releases/tag/v4.2.0
November 2, 2023
Ditto React
Ditto text items with rich text can now be rendered natively by passing therichText property on either Ditto or DittoText.
This expands rich text support from v1.5.0 which introduced support for rich text on components.
Example:
October 30, 2023
Ditto CLI — 4.1.0
This release includes features designed to tighten integration for a variety of environments, including iOS, TypeScript, and more. See the release notes here.New example apps
We’ve released new versions of our example applications, which have been updated to include the latest in recommended practices for integrating Ditto into development. See the full list here.September 29, 2023
Ditto Webhooks have been released!August 29, 2023
Ditto React
- Ditto components with rich text can now be rendered natively by passing the richText property on either Ditto or DittoComponent.
- Example:
<Ditto componentId="shopping-cart" richText />
August 18, 2023
Ditto API
- Endpoints for fetching project text now support an
exclude_componentsquery parameter. - When
exclude_components=true, only text items not associated with Ditto components will be returned from a given endpoint.
Ditto CLI
- We’ve released a new major version (v4) of the CLI. See the release notes here.
August 15, 2023
Ditto API
The behavior of variables when exporting to mobile formats (.strings, .stringsdict, and .xml) has changed.
Variables will now maintain a consistent ordering across base text, variant text, and plural forms; they’re assigned an index according to the order of usage (starting with base text, and then variants), and that index is maintained through variant exports.
For example, consider the following text:
August 7, 2023
Ditto API
- Support has been added for an
exclude_componentsquery parameter to the endpoint. - When set to
true, only text items not associated with components will be returned from the endpoint.
Ditto CLI
- Small bug fix to ensure files aren’t written to disk for empty API responses.
- For more information, please refer to the release here.
July 26, 2023
Ditto API
- When exporting data for variants, variant metadata (name and description) is now included.
- In the JSON formats, two new meta keys are added at the top level:
variant_nameandvariant-description - In the Android
.xml, iOS.strings, and iOS.stringsdictformats, a comment is added for each field at the top of the file
- In the JSON formats, two new meta keys are added at the top level:
July 17, 2023
Ditto API
- The
flatformat now supports rich text.
June 27, 2023
Ditto CLI
- Added support for specifying a list of formats in the format configuration property.
- For more information, please refer to the release here.
June 26, 2023
Ditto React
v1.4.1fixes a bug introduced inv1.4.0which caused variables to ignore passed values.
June 14, 2023
Ditto CLI
- Added the
import-componentscommand which enables component imports via a file through the CLI. For information about the command please refer to the documentation in the README.
June 12, 2023
Ditto API
- We’ve added the new
POST /components/fileendpoint to enable uploading components through the API.
June 8, 2023
VSCode Extension
- Add the ability to only match on components from a component folder. Must be used with
v3.8.0of the Ditto CLI.
Ditto CLI
- Add
component-folderscommand which lists component folders in your workspace. See the release here.
June 5, 2023
Ditto CLI
- Add the
-cf(--component-folder) flag forgenerate-suggestions. See the release here.
June 2, 2023
Ditto CLI
- Performance improvements. See the release here.
May 30, 2023
Ditto CLI
- We’ve added support for specifying the new
ios-stringsdictformat in the CLI configuration. See the release here.
Ditto API
We clarified a small point of confusion with the documentation around the request payload expected for the endpoint. The JSON payload should include a top-level data property:May 12, 2023
Ditto API
We’ve added support for the iOS.stringsdict format to our API. Read more here.
May 3, 2023
Ditto CLI
- Adds ICU support
- Fixes a bug where pulling would fail on new initializations
- Full Changelog
May 1, 2023
VS Code Extension
We’ve create a VS Code extension! Check it out here.April 28, 2023
Ditto API
We’ve added support for an ICU JSON export format to our API. Read more here.April 26, 2023
Ditto CLI
v3.4.0 of the CLI has been published, which adds a -v, --version flag to output what version of the CLI is being run.
March 23, 2023
Ditto React
We’ve publishedv1.4.0, which includes explicit support for map and list variables, in addition to miscellaneous cleanup.
Read about the release here.
March 22, 2023
Ditto API, Ditto CLI, Ditto React
We’ve added a__type property to variable output in our structured export format; this enables simple discrimination between different types of variables:
March 21, 2023
Ditto API
We’ve added support for anested JSON export format to our API. Read more here.
March 9, 2023
Ditto CLI
We’ve publishedv3.0.0 of the CLI, which focuses around a number breaking changes intended to better align default CLI behavior with Ditto best practices.
Read the release notes here.
February 15, 2023
Ditto API
We’ve released two bug fixes specific to the Android XML export format:- index values for format specifiers will now be relative to a text item’s base value AND its plurals, instead of resetting for each plural form (issue)
- extra whitespace is no longer added between text and variables in the final output (issue)
February 14, 2023
Ditto API
We’ve released a new version of our API that includes some breaking changes. The old API endpoints are deprecated, and existing users should migrate to the new endpoints at their earliest convenience.February 6, 2023
Ditto Web App
- Removed the deprecated the full format from the export modals on the project page and in the component library
- Set the flat format to be the default export format in the web app
February 3, 2023
Ditto API
Minor documentation update to add and emphasize a deprecation notice for the full format.February 1, 2023
Ditto React — 1.3.0
Added support for using variables in conjunction with the flat format. See the release here.January 25, 2023
We added support to the web app for importing components from two new file formats:- Android localization files (.xml)
- iOS localization files (.strings)
January 19, 2023
Ditto React — 1.2.1
- Updated README to clarify that the flat format does not currently support variables.
- Fixed a bug preventing falsy values (namely 0 and "") from being properly interpolated.
December 15, 2022
Ditto CLI
Added rich text support. See more info hereDecember 13, 2022
Ditto API
Added theincludeRichText flag to the following endpoints (format must be full or structured):
/projects/projects/:id/projects/:id/components/components/component-folders/:api*id/components
November 30, 2022
Ditto CLI
Added thestatus filter as a configuration variable. To filter the fetched text by its status, you can now use the status parameter in your config.yml.
November 29, 2022
Ditto CLI
Addedandroid and ios-strings as available formats. To use these formats, specify them under the format paramter in your config.yml.
November 10, 2022
Ditto API
Fixed a typo in an example in the documentation containing an incorrect usage of the curl command.Ditto CLI
Added information to the README about two supported environment variables:DITTO_CONFIG_FILE:used to specify an alternate file location for the CLI to read authentication information from. The default path is$HOME/.config/ditto.DITTO_TEXT_DIR: used to specify an alternate folder location for the CLI to write its output files to. The default path is./ditto.
Oct 11, 2022
Ditto API
- Added new endpoint: Fetch component folders
- Added new endpoint: Fetch components by component folder
- Added sub-headings to divide the endpoints by the entity they’re associated with, and implemented minor miscellaneous cleanup across the endpoint documentation
Sep 23, 2022
Ditto API
Text items with plural values will have those plural values included in flat exports as individual key/value pairs; pluralized keys are structured like[TEXT ID]_[PLURAL FORM]. See the flat format documentation for more details.
Fixed a bug where the status field failed to properly filter returned data when specified in conjunction with the android or ios-strings formats.
Sep 19, 2022
Ditto React — 1.2.0
- We exported two hooks that can be used for accessing synced data:
useDittoSingleTextanduseDittoComponent. These hooks are experimental and will likely undergo API changes in the future. - See the release here.
Ditto API
- Added the
statusfield to data returned from the/componentsand/projects/:id/componentsendpoints.
Jun 30, 2022
Ditto API
- Added support for including variables in payloads sent to the
PUT /componentsendpoint. - Fixed an issue with Android & iOS export formats not escaping special characters:
\n,\t,@,?,', and"characters are now properly escaped. - Added missing
xliffnamespace to exported Android.xmlfiles. = Fixed a bug with Android.xmlexports that occurred with text items with API IDs that include the-character. Now, all-characters are replaced with\_characters in the name property of<string>and<plural>tags, and aditto_api_idproperty has been added to string and plural tags to serve as a reference to the original API ID.
Ditto CLI — 2.5.1
- Fixed a bug when using the
project add/project removecommands and selecting the component library caused incorrect modifications to be made to the CLI’s configuration file. - See the release here.
Ditto Example Projects
- Added new iOS Example Project showcasing how to use exported .strings files.
- Added new Android Example Project showcasing how to use exported .xml string files.
Jun 13, 2022
Ditto GitHub Action — 0.2.0
Added an optionalditto-dir input parameter for projects that do not have the ditto directory in the root of the repository
June 7, 2022
Ditto API
Added support for upserting plurals via thePUT /components.
See our API documentation for more details.
June 1, 2022
Ditto API
- Added early support for exporting text data to Android and iOS Strings formats. All endpoints that support a
formatquery parameter can now accept values ofandroidorios-strings. - Added
GET /variablesendpoint that returns the variables in the workspace of the requesting user. - Added the ability to filter by text item status by passing a status query parameter in API requests. Supported by the following endpoints:
GET /projectsGET /projects/:idGET /projects/:id/componentsGET /componentsSee our API documentation for more details.
May 23, 2022
Ditto CLI — 2.5.0
- Added meta option flag in support of the Ditto GitHub Action release. See the release here.
Ditto GitHub Action — 0.1.0
- v0.1.0 released! Check it out here.
May 16, 2022
Ditto CLI — 2.4.0
- Update some user-facing CLI messages to accurately reflect our new subdomain: app.dittowords.com (instead of the old beta.dittowords.com). See the release here.
May 10, 2022
Ditto CLI — 2.3.0
- Allows users to override the output directory via a new environment variable
DITTO_TEXT_DIR - When no projects are found in the
config.ymlfile an additional help message displays about verifying that the projects have developer mode enabled - See the release here.
February 28, 2022
Ditto API
Added better error handling for the niche edge case where an API request is made using the token of a user that has been removed from their workspace.January 20, 2022
Ditto React — 1.1.1
- Our React SDK now supports variable interpolation by passing in values through the variables prop.
- Our React SDK now supports displaying plural forms through the count prop. For more information about using variable interpolations and pluralization through our React SDK, check out our SDK documentation.
Ditto CLI — 2.2.0
- The CLI now supports reading API keys from an environment variable (
DITTO_API_KEY). - See the release here.
January 11, 2022
Ditto CLI
We deployed a bugfix release to fix issues introduced in the latest minor version of the package:- the pull command no longer crashes when projects other than the component library are specified in
config.yml - resolves a casing issue in the project add command that was causing it to crash
January 6, 2022
Ditto CLI
We’ve added a new supported property toditto/config.yml to allow explicitly specifying that the component library should be fetched and included in the CLI’s output:
components: true
This is now the preferred alternative to the old way of specifying the component library:
December 8, 2021
Ditto API
GET /projects/:id/componentscan now be used to fetch the components used in a project- Return format matches the
GET /componentsendpoint - Supports
formatandvariantparameters (the same as the/projects,/project/:id, and/componentsendpoints)
November 29, 2021
Ditto API
GET /componentscan now be used to fetch the components in a workspace- Supports format and variant parameters (the same as the
/projectsand/project/:idendpoints)
- Supports format and variant parameters (the same as the
GET /projects/ditto_component_libraryhas been deprecated; the endpoint is still available, but references to it have been removed from the documentation.PUT /componentscan now be used to update the text of components in a workspace- Currently only supports updating variant text via the variant query parameter (an error will be thrown if not specified)
- Currently only available to teams on Team or Enterprise plans
- Data is specified on data key in request body and must be in one of our three supported import formats
November 11, 2021
Ditto CLI — 2.0.0
- Output files are now written to disk in several different ways according to how the CLI is configured; most notably, if the variants option is set and a format of structured or flat is specified, output files will be written on a per-project per-variant basis
- Data for
structuredandflatformats is saved without arbitrary top-level nesting - Files are only written for variants that contain values for the configured projects (no more empty files) For a more in-depth description (with examples) of these changes and others in the release, see the full release notes here.
Ditto React — 1.0.0
ditto-reactnow only works with CLI version2.x.x— leaning into new CLI improvements allowed us to drastically reduce many areas of complex logical overhead- We made some stabilization improvements to the way that missing/invalid
frameId,blockId,textId, orcomponentIdvalues are handled - We implemented significant refactoring in several areas of the project For a more in-depth description of these changes, see the full release notes here
Ditto Demo
- We added a new branch that showcases how Ditto can be integrated into a project with react-i18next
- We updated dependencies to the latest versions of the Ditto CLI (v2.0.0) and Ditto React (v1.0.0)
October 22, 2021
Ditto API — 2.4.1
- We fixed a bug with the API (and in-app exports) that included hidden text in
flatandstructuredJSON exports. Now, hidden text will correctly not be included in these export formats!
Ditto Demo
- We included the files to import into the component library separately from where they’d be synced via the CLI
- We included more instructions on linking the demo app with its corresponding design file
October 7, 2021
General
- Refactored API documentation to be easier to navigate and communicate critical concepts more clearly
Ditto CLI — 1.1.1
- When the
pullcommand is executed, all.jsonand.jsfiles are now removed from thedittofolder prior to new data being written = Support added for new options inditto/config.yml:variants:trueorfalse- If set to true, data will be fetched for both base and variant text and stored in separate JSON files
format:flatorstructured- If specified, data will be fetched and stored in the specified format = RefactoredREADME
GET /variantswill now return names and API IDs for variants in the workspace associated with the requesting user.
Ditto React — 0.0.5
- Support added for
flatand structured formats - Support added for passing a
variantvalue toDittoProvider - Bug fixes around support for integrating with workspace component libraries (as opposed to individual projects)
- Refactored
README
Ditto Demo
- Refactored
ditto-sdkusage to integrate with a component library instead of an individual project - Added a language picker to showcase
ditto-reactandditto-clisupport for variants - Refactored
README, including adding instructions for connecting the repo to a component library
September 27, 2021
General
Fixed incorrect example of/projects usage in API Reference. The projectIds query parameter should be specified as follows:
- Correct:
?projectIds[]=<PROJECT_ID>&projectIds[]=<PROJECT_ID> - Incorrect:
?projectIds[]=<PROJECT_ID>,<PROJECT_ID>
API — 2.4.0
GET /variants will now return names and API IDs for variants in the workspace associated with the requesting user.
September 8, 2021
API — 2.3.0
GET /projectsandGET /projects/:idnow accept an optional query parameter ofvariant; when provided, the data exported will be specific to the variant with an API ID that matches the parameter’s value. Fordefaultandstructuredformats, the variants key will not be included when the variant parameter is provided.
/projects/<PROJECT_ID>?variant=xxx-xxx-xxx
GET /projects/:idwill not include top-level projects and project_xyz keys Example request:GET /projects/123
August 11, 2021
API — 2.2.0
GET /projects and GET /projects/:id now accepts an optional query parameter of format, which can be either flat or structured. If no format is provided, the full JSON of the project will be returned with blocks and frames.
Example: /projects/<PROJECT_ID>?format=flat
July 28, 2021
With the recent release of Variants for Components, we’ve included them in both exports from our web-app and the JSON response from the API.API — 2.1.0
GET /projects/:idwill now return component variants. This applies both for when fetching projects or when fetching the component library (i.e. id = ditto_component_library)GET /projects/:idwill now match the project JSON export from the web-app to include component information (is_compandcomponent_api_id) in the text object
June 21, 2021
We’ve updated our React library and our demo project to work with the multi-project JSON structure that the CLI now saves intext.json.
Ditto React — 0.0.4
TypeScript bindings are now exported 🎉 A newprojectId prop can be passed to DittoProvider or Ditto
- If passed to
DittoProvider, all descendantDittocomponents will default to pulling text from the associated project - If passed to
Ditto, the component will pull text from the associated project - If passed to both
DittoProviderandDitto, the value passed toDittowill take precedence - Breaking change: If a
Dittocomponent is rendered that is not provided aprojectIdvia direct prop orDittoContextancestor, an error will be thrown
Ditto Demo
- Upgraded
ditto-reacttov0.0.4 - Updated source to work with new
ditto-reactversion by passingprojectIdprops to all instances ofDittoContext
June 7, 2021
We’ve updated both our CLI and API to handle multiple projects. Heads up! This results in some breaking changes to the CLI in order for it to list projects, and will change the format of thetext.json fetched by the CLI. Please upgrade your Ditto CLI via either npm or yarn.
API — 2.0.0
GET /project-namesis the new name of the previousGET /projectsendpoint. Just as before, this will return the names and IDs of projects in your Ditto workspace with Developer Mode turned onGET /projects/:idwill now return the structured JSON in a format compatible with multiple projectsGET /projectsis a new endpoint that will return the content of multiple projects (specified via the query parameter projectIds) as a single JSON object
CLI — 1.0.0
- We’ve updated the CLI to handle syncing multiple projects in a single directory! This means several things:
/ditto/config.ymlnow supports multiple projects.ditto-clipull will pull all projects in the current directory’s /ditto/config.yml - We’ve added two new commands to add and remove projects from
/ditto/config.ymlditto-cli project addditto-cli project remove- The regular
ditto-cli projectcommand will now function asditto-cli project add
April 1, 2021
API — 1.1.0
GET /projectsnow includes the Component Library if Developer Mode is enabled for the Component LibraryGET /projects/:idwill return the Component Library as a structured JSON if the ID provided isditto_component_library
February 25, 2021
API — 1.0.0
GET /projectsendpoint for fetching Ditto projects from workspaceGET /projects/:idendpoint for fetching content in Ditto project as structured JSON