2.3.1 Release Notes (Parsing Changes)

Launch Center Pro 2.3.1 Release Notes


Launch Center Pro 2.3 introduced the support of nested input tags and nested encoding helpers. The release was well received, but the concept of encoding is still a mystery to most people. Version 2.3.1 brings some major changes to the way URLs are parsed. (Ideally this would have introduced in 2.3, but we’re not perfect.)

In the vast majority of cases, your existing URLs should continue to work. We are always happy to help rewrite and/or fix your actions if not. Get in touch on Twitter or our help site. Thanks for your patience in this process. No pain, no gain.

Input Tag Parsing Changes

Input tags processing changes from 2.3 and before:

  1. Tags are encoded automatically, according to their context within the URL.
  2. Encoding and encoding helpers like “{{}}” no longer affect input tags. (Of course, you still need to encode your static text.)
  3. The concept of explicitly encoded or un-encoded tags is no more
    • [prompt] and [[prompt]] are now evaluated exactly the same. We recommend using single brackets for clarity.

The first design goal is that you just write the URL logically and insert input tags wherever you want the text to go. You shouldn’t need to think about encoding at all. That’s a big statement, but give it a try and see what you think.

While most actions are simple, our amazing users like to push the limits of what’s possible with callback chains, crazy nested tags, etc. Advanced actions call for an advanced set of tools…

Special Operators

Operators affect the behavior of input tags. To add operators, you simply insert them right after the opening bracket of any tag. Order does not matter and multiple may be combined. (In most cases you should not need these at all – try without first!)

Valid Operators:   
+ - ^ ! ~  

Encoding Adjustment Operators

As mentioned before, input tags automatically set their encoding based on context. These operators allow you to adjust the encoding level. By encoding level, we mean:

0 level:    Hello, please encode me.  
1 level:    Hello%2C%20please%20encode%20me.  
2 levels:   Hello%252C%2520please%2520encode%2520me.  

The auto-calculated encoding level is increased for each “+” in a tag’s operators. This is useful if an input tag’s output isn’t being encoded, or you want it to be encoded an additional time.


The auto-calculated encoding level is decreased for each “-” in a tag’s operators. This is useful if an input tag’s output is being encoded more than you’d like.


This causes us to ignore context-aware encoding entirely. Encoding is reset to 0. You can add one or more “+” with this to set an explicit encoding level:

# This will always be double encoded, no matter where it is in the URL  

While there are obscure examples where this is needed, we don’t recommend explicitly setting encoding levels. Instead, adjust encoding relative to the auto-calculated level with + and -.

Execution Timing Operators

In most cases, prompts will expand when you’d expect. For those other times, we now provide fine-grained control over when prompts expand.


This prevents expansion on the first execution of the URL. One ^ will be removed for each execution. (You can have multiple if needed.)

Let’s assume you wanted to pass a literal “[clipboard]” into another app. By default, this tag would expand with the clipboard value. By adding a ^, you are telling Launch Center Pro to ignore this tag for one execution.

# this will create a new draft with "[clipboard]" as the content  

By default, tags in known callback parameters (x-success, lc-callback, callback_url, etc) will be delayed in execution until the callback is executed. This operator forces tag expansion on the first pass. Example:


Without the “!” operators, only the first [clipboard] would expand within Launch Center Pro. With “!” on the next two, all of them are expanded when app1 is called.

Legacy URL Deprecations

All good things come at a price. That said, we’re lucky in that this new parsing engine maintains backwards compatibility with the overwhelming majority of existing actions out there. If you have any legacy actions that don’t work, please don’t hesitate to find us on Twitter or the help site.

Encoding helpers inside tags

If you have encoding helpers inside a tag in 2.3.1 and later, it’s likely that the value will be double-encoded when run. (This is most common inside an old “un-encoded” list.)

# {{My Value}} will output a double-encoded value  
[[list:Title|Option 1={{My Value}}|Option 2=[prompt]]]  

After 2.3.1, you should rarely need to manually encode (or use encoding helpers) inside a list or other tag. The encoding behavior will be handled by the tag itself. In most cases, simply removing the encoding (or {{}}) will fix the problem.


While we are aware of a couple additional unique cases that may break old actions, none are notable enough to mention at this point. If any common ones surface, we’ll update this list accordingly. Operators make solving strange problems much easier.

GIF Bookmarks

You can now bookmark your favorite GIFs for quick access. Add a bookmark from the detail page, and view your bookmarks by tapping the bookmark icon in the search bar. (Bookmarks will also be backed up if you use the Dropbox backup feature.)

You can also jump to your bookmarks directly with a photo attachment or [gif] tag:

?attach=photo:gif-bookmarks     # as a photo attachment parameter  
[gif-bookmarks]                 # as a tag

Prompt Default Text

You can now start your prompts with default text like so:

[prompt=My Default Text]  
[prompt:Title=My Default Text]  

Additionally, you can have the cursor placed anywhere you’d like within the default text.

# backslash followed by a pipe  
[prompt:Grocery List=Don't forget to get \| at Target!]

Prompt List Delimiters

Prior to 2.3.1, [prompt-list] converted all line breaks to commas when dismissed. In 2.3.1, commas will be inserted as soon as you tap return.

Additionally, you can now set any alternate delimiter value:

[prompt-list(, )]  
[prompt-list( – )]  

These can be combined to made some very interesting prompts:

[prompt-list(, ):Reminder=Don't forget to get \| at the store!]  
[prompt-list([prompt:Custom Delimiter])]  

Bug Fixes / Minor Changes

  • Fixed push notification registration issue when using an email address for login
  • Fixed issue with the Forgot Password feature
  • Fixed crashes when not supplying a trigger name for an IFTTT action
  • Fixed crashes when not supplying a term for a launch://define action
  • Many parsing and input tag bugs in 2.3 are addressed with the new parsing system
  • TextExpander support improved
  • Featured Actions moved to the top of Action Composer
  • Can now cancel text-to-speech when using the launch://speak command
  • Encoding switch has been moved from list builder (no longer needed)
  • Updates to the default actions for new installs
  • Fixes for some encoded international characters in querystrings
Powered by Zendesk