diff --git a/api/config/settings/common.py b/api/config/settings/common.py
index 914ec92144ea1169b55a730878571c2d1353998a..f49ae3fdc2d52467b55cbe4a0a60def16ddcc046 100644
--- a/api/config/settings/common.py
+++ b/api/config/settings/common.py
@@ -3,7 +3,6 @@ from __future__ import absolute_import, unicode_literals
 
 import datetime
 import logging.config
-import os
 import sys
 
 from urllib.parse import urlsplit
@@ -164,11 +163,6 @@ FUNKWHALE_SPA_REWRITE_MANIFEST_URL = env.bool(
 
 APP_NAME = "Funkwhale"
 
-# XXX: for backward compat with django 2.2, remove this when django 2.2 support is dropped
-os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = env.bool(
-    "DJANGO_ALLOW_ASYNC_UNSAFE", default="true"
-)
-
 FEDERATION_HOSTNAME = env("FEDERATION_HOSTNAME", default=FUNKWHALE_HOSTNAME).lower()
 FEDERATION_SERVICE_ACTOR_USERNAME = env(
     "FEDERATION_SERVICE_ACTOR_USERNAME", default="service"
diff --git a/api/requirements/base.txt b/api/requirements/base.txt
index 74f33bde13b211b93950e423b28d578be830d508..4c27179e4b439d1c276a4a9f1ab330ade6d3a188 100644
--- a/api/requirements/base.txt
+++ b/api/requirements/base.txt
@@ -1,6 +1,5 @@
 # Bleeding edge Django
-django>=3.0.8,<3.1; python_version > '3.5'
-django>=2.2.12,<3; python_version < '3.6'
+django>=3.0.8,<3.1
 setuptools>=36
 # Configuration
 django-environ>=0.4,<0.5
@@ -37,9 +36,7 @@ persisting-theory>=0.2,<0.3
 django-versatileimagefield>=2.0,<2.1
 django-filter>=2.3,<2.4
 django-rest-auth>=0.9,<0.10
-# XXX: remove when we drop support for python 3.5
-ipython>=7.10,<8; python_version > '3.5'
-ipython>=7,<7.10; python_version < '3.6'
+ipython>=7.10,<8
 mutagen>=1.45,<1.46
 
 pymemoize==1.0.3
@@ -48,11 +45,8 @@ django-dynamic-preferences>=1.10,<1.11
 raven>=6.10,<7
 python-magic==0.4.18
 channels>=2.4,<2.5
-# XXX: remove when we drop support for python 3.5
-channels_redis==2.2.1; python_version < '3.6'
-channels_redis>=3,<3.1; python_version > '3.5'
-uvicorn==0.8.6; python_version < '3.6'
-uvicorn>=0.11.5,<0.12; python_version > '3.5'
+channels_redis>=3,<3.1
+uvicorn>=0.11.5,<0.12
 gunicorn>=20.0.4,<20.1
 
 cryptography>=2.8,<3
diff --git a/changes/changelog.d/1099.enhancement b/changes/changelog.d/1099.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..1c74e1fa3dc75f677cb81f489bdde877f0bf903b
--- /dev/null
+++ b/changes/changelog.d/1099.enhancement
@@ -0,0 +1 @@
+Dropped python 3.5 support. Python 3.6 is the minimum required version (#1099)
\ No newline at end of file
diff --git a/changes/notes.rst b/changes/notes.rst
index a95ffd69af493446bafb3b23c3fedb318d3efc3a..d11ca6c995a5a97590df82231b9b7dae406a18f9 100644
--- a/changes/notes.rst
+++ b/changes/notes.rst
@@ -7,6 +7,20 @@ Next release notes
     after each release.
 
 
+Dropped python 3.5 support [manual action required, non-docker only]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+With Funkwhale 1.0, we're dropping support for Python 3.5. Before upgrading,
+ensure ``python3 --version`` returns ``3.6`` or higher.
+
+If it returns ``3.6`` or higher, you have nothing to do.
+
+If it returns ``3.5``, you will need to upgrade your Python version/Host, then recreate your virtual environment::
+
+    rm -rf /srv/funkwhale/virtualenv
+    python3 -m venv /srv/funkwhale/virtualenv
+
+
 Increased quality of JPEG thumbnails [manual action required]
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^