What's New
New features, updates, and improvements to Ditto.
Success! 🥳 Look forward to Ditto updates in your inbox.
Oh no — something went wrong while submitting the form. Please try again!
April 4, 2022

🖼 More intuitive text ordering in import

In addition to ordering the text upon import from left to right / up to down by X-Y positions, we’ll also take into account the positions of groups or nested frames within the frame.

In the example frame below, the text in each of the white rectangles are grouped together, and the ordering will take any groupings into account.

March 28, 2022

🚀 Importing parts of frames

We’ve just launched a major improvement to how importing Figma files into Ditto works! When importing via our plugin, you’ll now be able to choose the specific text you want to bring in, as opposed to being limited to just Figma frames.

Text you don’t explicitly select will still get imported but will just be hidden in your Ditto project by default. We hope this makes it a lot easier to focus on just the content that’s relevant when working in Ditto!

March 25, 2022

🖋 Editing frame names

You can now edit the name of frames in your Ditto projects! This can be helpful in providing more writer-friendly names of frames imported from the design file. ✍️

Editing a frame’s name in Ditto won’t affect its name in Figma. The frame’s name in Figma will be displayed below the name of the frame in Ditto.

March 20, 2022

🔍 Searching our help guides

You can now search our Help Guides! We hope this makes finding resources easier when getting started. To check it out, head over to our help guides and search in the top right.

March 18, 2022

⚡️ Fixes and improvements

  • 🚥 We’ve added the ability to filter by statuses in the component library!
  • 🐞 We fixed a bug where the “+ Block” button in a component library group was occasionally not showing up.
March 16, 2022

🚦 Statuses for Components

Like regular text items, you can now add statuses to components! Like any other edits to components, editing a component’s status will sync across all of the component’s instances.

Thank you to all of the teams that provided more context into how your component systems were evolving and how we could help. 🤝

In the web-app
In the plugin
March 15, 2022

🎙 5 Steps for Building a Content Design System

Want to learn more about how you can codify your team's principles into a content system? 🧠

In our latest blog post, Jordan Bowman of UX Tools joins us to share his own experiences working with text as a designer and 5 steps to building a content system as a team.

March 9, 2022

🌎 The All-in-One Guide to Localizing with Ditto

Whether you want to manage all of your translations in Ditto or integrate with a Translation Management System (TMS) like Lokalise or Phrase, Ditto helps for a seamless localization process. 🤝

We’ve published a localization deep dive covering:

👉 How you can use components and variants to reduce localization workload

👉 An end-to-end localization workflow solely in Ditto

👉 3 localization workflows for integrating Ditto and a TMS

You can check it out here!

February 25, 2022

🔀 Apply Variants

You asked, we delivered: you can now apply Ditto variants to your designs! 🙌

In addition to previewing a copy variant on a Figma frame, you can now apply it permanently to the frame. The variant text will remain in the mockups, even when you navigate away. 😎

Learn more in our help guide on applying variants.

February 24, 2022

🥳 We’re sponsoring #Perspectives2022!

Perspectives (starts March 24th 2022!) is a content design careers festival for content designers at all stages of their careers. If you’re a content designer interested in participating, you can use the code DITTO15 for 15% off.

February 22, 2022

⚡️ Fixes and improvements

  • ⬇️ You can now export the variables in your workspace on your workspace’s variables page.
  • 🔌 As a heads up, you may have experienced some trouble syncing with Figma at the start of this week. This was due to Figma’s API experiencing a service disruption / downtime, which you can refer to on their status page. Thanks everyone for reporting it to us and for your patience while it got resolved! ❤️
  • 💾 We’ve added the unsaved changes alert for when you’re switching between variant tabs!
  • 🐞 We fixed a bug where JSON imports in the component library were showing up as undefined in the library activity history.
  • ⏰ We’ve updated the Projects page to display and order projects by time of last edit (rather than sync time!).
  • 🐞 We’ve fixed a bug with our Figma frame previews where they intermittently weren’t displaying.
  • 🐞 We’ve fixed a bug with renaming an empty group with blocks in the component library.
February 2, 2022

🔐 Plugin Login Overhaul

We’ve rolled out several updates to make logging in to our Figma plugin a whole lot faster and easier! One example: if you’re already logged into the web app, we’ll now detect that so you don’t have to enter your credentials again. 😎

January 26, 2022

🌱 Figma Branching Support

We now support Figma branches in Ditto projects! You can now link Figma branches as Ditto projects, and Ditto will handle the text if the branch gets merged. To read more about how this works, check out our new branching help guide.

January 19, 2022

👯‍♀️ Real-time Updates for Comments

Back in December, we rolled out real-time updates for edits when multiple people are working from the same project. We’ve now extended this ability to comments and notifications!

Now, when you’re working from either the web-app or plugin, you’ll be able to see new comments and replies show up in real time.

January 10, 2022

⚡️ Fixes and improvements

  • 🔄 Missing fonts will no longer block resyncing in the plugin! Thank you to everyone for their patience as we rolled out these workarounds with Figma’s missing font constraints. 🙏
  • 🖼 We now support importing Figma Variants into Ditto projects! When you sync top-level Figma Variants into Ditto, each variant will show up as its own Ditto frame.
  • 💻 We’ve released a ton of improvements to our developer integrations! For more information on the updates, check out our developer changelog.
  • 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.
  • Our CLI now supports reading API keys from an environment variable
  • Our CLI now explicitly supports the component library through the components property in config.yml
  • 🎉 We’ve increased our ability to resync very large Figma files!
  • 🎉 We've improved the speed of editing of Ditto Components via the plugin! ⚡️
  • 🎉 We've implemented role-based onboarding guides for new users.
  • 🎉 We've added in-app guides for users new to Components, Variants, and Variables.
  • 🐞 We've fixed a bug where nested Figma Component Variants weren't getting recognized correctly in the plugin.
  • 🐞 We've fixed a bug that previously made it possible to hide text in blocks via the plugin.
  • 🐞 We've fixed a bug where the error message for invalid file URLs wasn't showing up in the plugin.
  • 🐞 We’ve fixed a bug with incorrect example values of variables being displayed.
  • 🐞 We’ve fixed a bug with the display of very long names for components, variants, and variables.
  • 🐞 We’ve fixed a bug with the editing of API IDs of components.
  • 🐞 We’ve fixed a bug in the plugin with it incorrectly showing an “added text” item in the recent sync section.
December 9, 2021

✌️ Introducing Plurals!

Today, we're excited to launch pluralization support in Ditto! You can now add plural versions of any piece of copy and implement them in code with the help of our developer integrations.

Check out our latest blog post for more information on how it works!

December 2, 2021

👯‍♂️ Real-time web-app updates

We've started adding improvements to Ditto to automatically load in new edits when multiple people are working from the same project in the web-app. More updates to come! 😉

November 29, 2021

😱 Write Access via the Ditto API

You can now use our API to write back to Ditto — with our new endpoint to update text for component variants.

This means that in addition to using the API to fetch text, teams can create a full workflow to translate Ditto text in a tool like Lokalise or Phrase and bring that translated text back into Ditto.

(Note: This is currently limited to paying teams in Ditto.)

November 20, 2021

⚡️ Fixes and improvements

  • 🌐 We've added an endpoint to our API that allows teams to fetch the components of a specific project. The keys included in this JSON format will be the components' API IDs! More info here.
  • 📰 We've fixed some bugs and improved loading of change history items in different areas of the app.
  • 🖼️ Text highlights on image previews are now turned on by default!
  • 🐞 We've fixed a bug with swapping components.
  • 🐞 We've fixed a bug that occurred when users cleared the text input.
  • 🐞 We've fixed a bug that prevented users from opening the invite modal when on the components, variants, or variables pages.
  • 🐞 We've fixed a bug that wiped out unsent comment inputs when the activity history refetched.
  • ↩️ When overriding a conflict with a Figma edit in our Figma plugin, the activity history created will now reflect that the source was an edit directly in Figma.
November 18, 2021

🔤 🔢 🔗 Introducing Variables!

Does your team have copy that's also populated with real data? This might include anything from users' names and prices to counts and selections. In Ditto, you can now create and insert variables in your text, which automatically get formatted for developers.

We go into how it works on our launch here. If you're able to join our launch and share your thoughts on Ditto and Variables, we'd greatly appreciate it! ❤️

We support 3 types of variables:

  • 🔤 Strings — commonly interpolated string variables include names, selections, and displayed inputs. (Example: "Hello {{firstName}}!" as "Hello Natasha!")
  • 🔢 Numbers — commonly interpolated number variables include counts, prices, and elapsed minutes. (Example: "Last edited {{minsElapsed}} min ago" as "Last edited 12 min ago")
  • 🔗 Links — by reusing link variables in Ditto, you only have to update links in one location, rather than hunting down all of the occurrences of a link in development. (Example: "Click here")

If you try it out, we'd love your feedback. 😁 If you're able to share, we'd also love to know how the process of interpolating variables currently works on your team. ❤️