diff --git a/lib/versioning/semver/range.js b/lib/versioning/semver/range.js
index ff86c0fcab56f47b02a99bedf2dffcb28bc4adf8..dade1bda79c0a4704bab1e47e2c168022dac6dbe 100644
--- a/lib/versioning/semver/range.js
+++ b/lib/versioning/semver/range.js
@@ -17,6 +17,9 @@ function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) {
     return toVersion;
   }
   const parsedRange = parseRange(currentValue);
+  if (currentValue.startsWith('~>')) {
+    parsedRange[0].operator = '~>';
+  }
   const element = parsedRange[parsedRange.length - 1];
   if (rangeStrategy === 'widen') {
     const newValue = getNewValue(
@@ -96,6 +99,9 @@ function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) {
     );
     return null;
   }
+  if (element.operator === '~>') {
+    return `~> ${toVersionMajor}.${toVersionMinor}.0`;
+  }
   if (element.operator === '^') {
     if (suffix.length || !fromVersion) {
       return `^${toVersionMajor}.${toVersionMinor}.${toVersionPatch}${suffix}`;
diff --git a/test/versioning/semver.spec.js b/test/versioning/semver.spec.js
index dc256e65aa06d996383b56283ba4e87159b649da..a9fb1f0fb5d1ba23c353eb392b89251b60d41f67 100644
--- a/test/versioning/semver.spec.js
+++ b/test/versioning/semver.spec.js
@@ -60,6 +60,11 @@ describe('semver.getNewValue()', () => {
       '^1.0.7'
     );
   });
+  it('supports tilde greater than', () => {
+    expect(semver.getNewValue('~> 1.0.0', 'replace', '1.0.0', '1.1.7')).toEqual(
+      '~> 1.1.0'
+    );
+  });
   it('bumps short caret to new', () => {
     expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.1.7')).toEqual(
       '^1.1'