diff --git a/gio/gsettings.c b/gio/gsettings.c
index 2b1c161..a6f28dc 100644
--- a/gio/gsettings.c
+++ b/gio/gsettings.c
@@ -861,6 +861,50 @@ g_settings_new_with_backend_and_path (const gchar      *schema,
                        NULL);
 }
 
+/**
+ * g_settings_exists:
+ * @schema: the name of the schema
+ * @returns: whether the #GSettings schema exist or not
+ *
+ * Since: 2.30
+ */
+gboolean
+g_settings_exists (const gchar        *schema)
+{
+	const gchar* const* schemas = g_settings_list_schemas(); 
+    gchar* const* iter = const_cast<gchar* const*>(schemas);
+
+    while (*iter) {
+        if (g_str_equal(schema, *iter))
+            return true;
+        iter++;
+    }
+    return false;
+}
+
+/**
+ * g_settings_exists_relocatable:
+ * @schema: the name of the schema
+ * @returns: whether the #GSettings schema exists or not
+ *
+ * Search only on the relocatable list 
+ * 
+ * Since: 2.30
+ */
+gboolean
+g_settings_exists_relocatable (const gchar        *schema)
+{
+	const gchar* const* schemas = g_settings_list_relocatable_schemas(); 
+    gchar* const* iter = const_cast<gchar* const*>(schemas);
+
+    while (*iter) {
+        if (g_str_equal(schema, *iter))
+            return true;
+        iter++;
+    }
+    return false;
+}
+
 /* Internal read/write utilities, enum/flags conversion, validation {{{1 */
 typedef struct
 {
diff --git a/gio/gsettings.h b/gio/gsettings.h
index 8db2f75..511ea7b 100644
--- a/gio/gsettings.h
+++ b/gio/gsettings.h
@@ -80,6 +80,7 @@ GSettings *             g_settings_new_with_backend                     (const g
 GSettings *             g_settings_new_with_backend_and_path            (const gchar        *schema,
                                                                          GSettingsBackend   *backend,
                                                                          const gchar        *path);
+gboolean                g_settings_exists                               (const gchar        *schema);
 gchar **                g_settings_list_children                        (GSettings          *settings);
 gchar **                g_settings_list_keys                            (GSettings          *settings);
 GVariant *              g_settings_get_range                            (GSettings          *settings,
