diff --git a/scipost_django/careers/forms.py b/scipost_django/careers/forms.py
index b849b56989dd6978b0313554097dbd5a2378a54b..e203c5dfaeb57170d9c205acbff9a9ac5993deff 100644
--- a/scipost_django/careers/forms.py
+++ b/scipost_django/careers/forms.py
@@ -20,6 +20,10 @@ class JobOpeningForm(forms.ModelForm):
             "application_deadline",
             "status",
         ]
+        widgets = {
+            "announced": forms.DateInput(attrs={"type": "date"}),
+            "application_deadline": forms.DateInput(attrs={"type": "date"}),
+        }
 
 
 class JobApplicationForm(forms.ModelForm):
@@ -38,6 +42,10 @@ class JobApplicationForm(forms.ModelForm):
             "motivation",
             "cv",
         ]
+        widgets = {
+            "announced": forms.DateInput(attrs={"type": "date"}),
+            "application_deadline": forms.DateInput(attrs={"type": "date"}),
+        }
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
diff --git a/scipost_django/colleges/forms.py b/scipost_django/colleges/forms.py
index 5faae48209f8850645bfbebb7d3896cc7b4887fd..a749a82ec35713cd5eb17ee7a5f19f6b12050313 100644
--- a/scipost_django/colleges/forms.py
+++ b/scipost_django/colleges/forms.py
@@ -144,6 +144,10 @@ class FellowshipForm(forms.ModelForm):
         help_texts = {
             "status": "[select if this is a regular, senior or guest Fellowship]"
         }
+        widgets = {
+            "start_date": forms.DateInput(attrs={"type": "date"}),
+            "until_date": forms.DateInput(attrs={"type": "date"}),
+        }
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
@@ -575,6 +579,9 @@ class FellowshipInvitationResponseForm(forms.ModelForm):
             "postpone_start_to",
             "comments",
         ]
+        widgets = {
+            "postpone_start_to": forms.DateInput(attrs={"type": "date"}),
+        }
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
diff --git a/scipost_django/ethics/forms.py b/scipost_django/ethics/forms.py
index 5d6a7fd43f9ba644e51eda92cca47f923eae3694..d7eede36ad3466d948cdfdbb713c0e3b6e85919a 100644
--- a/scipost_django/ethics/forms.py
+++ b/scipost_django/ethics/forms.py
@@ -28,6 +28,8 @@ class SubmissionCompetingInterestForm(forms.ModelForm):
         widgets = {
             "profile": forms.HiddenInput(),
             "declared_by": forms.HiddenInput(),
+            "date_from": forms.DateInput(attrs={"type": "date"}),
+            "date_until": forms.DateInput(attrs={"type": "date"}),
         }
 
     def __init__(self, *args, **kwargs):
diff --git a/scipost_django/finances/forms.py b/scipost_django/finances/forms.py
index d4f418a94ef191d9500c7a1009d876e757698e53..c4ce038193eec632a2a6b87c490c2cf32fdd998a 100644
--- a/scipost_django/finances/forms.py
+++ b/scipost_django/finances/forms.py
@@ -47,6 +47,11 @@ class SubsidyForm(forms.ModelForm):
             "renewable",
             "renewal_of",
         ]
+        widgets = {
+            "paid_on": forms.DateInput(attrs={"type": "date"}),
+            "date_from": forms.DateInput(attrs={"type": "date"}),
+            "date_until": forms.DateInput(attrs={"type": "date"}),
+        }
 
 
 class SubsidySearchForm(forms.Form):
@@ -121,6 +126,9 @@ class SubsidyPaymentForm(forms.ModelForm):
             "invoice",
             "proof_of_payment",
         )
+        widgets = {
+            "date_scheduled": forms.DateInput(attrs={"type": "date"}),
+        }
 
     def __init__(self, *args, **kwargs):
         subsidy = kwargs.pop("subsidy")
@@ -215,9 +223,9 @@ class LogsFilterForm(forms.Form):
         empty_label="All",
     )
     start = forms.DateField(
-        required=True, widget=forms.TextInput(attrs={"type": "date"})
+        required=True, widget=forms.DateInput(attrs={"type": "date"})
     )
-    end = forms.DateField(required=True, widget=forms.TextInput(attrs={"type": "date"}))
+    end = forms.DateField(required=True, widget=forms.DateInput(attrs={"type": "date"}))
     hourly_rate = forms.FloatField(min_value=0, initial=WorkLog.HOURLY_RATE)
 
     def __init__(self, *args, **kwargs):
diff --git a/scipost_django/forums/forms.py b/scipost_django/forums/forms.py
index 0424de85258fc0a9c9ec09397f1f8c2f116ec97b..784148d2b50057906ef2caa17c080b75f6c0a658 100644
--- a/scipost_django/forums/forms.py
+++ b/scipost_django/forums/forms.py
@@ -58,11 +58,15 @@ class MeetingForm(ForumForm):
             "preamble",
             "minutes",
         ]
+        widgets = {
+            "preamble": TextareaWithPreview(),
+            "minutes": TextareaWithPreview(),
+            "date_from": forms.DateInput(attrs={"type": "date"}),
+            "date_until": forms.DateInput(attrs={"type": "date"}),
+        }
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        self.fields["preamble"].widget = TextareaWithPreview()
-        self.fields["minutes"].widget = TextareaWithPreview()
         if self.instance:
             self.fields["parent"].initial = self.instance.parent
 
diff --git a/scipost_django/journals/forms.py b/scipost_django/journals/forms.py
index 1e91e33da4860cc39118a462111ff9c636464184..1163c95ad4763cb05b37c8328c61f337812f8a93 100644
--- a/scipost_django/journals/forms.py
+++ b/scipost_django/journals/forms.py
@@ -450,6 +450,12 @@ class DraftPublicationForm(forms.ModelForm):
             "publication_date",
         ]
 
+        widgets = {
+            "submission_date": forms.DateInput(attrs={"type": "date"}),
+            "acceptance_date": forms.DateInput(attrs={"type": "date"}),
+            "publication_date": forms.DateInput(attrs={"type": "date"}),
+        }
+
     def __init__(
         self, data=None, identifier_w_vn_nr=None, issue_id=None, *args, **kwargs
     ):
@@ -831,6 +837,10 @@ class VolumeForm(forms.ModelForm):
             "until_date",
             "doi_label",
         )
+        widgets = {
+            "start_date": forms.DateInput(attrs={"type": "date"}),
+            "until_date": forms.DateInput(attrs={"type": "date"}),
+        }
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
@@ -865,6 +875,10 @@ class IssueForm(forms.ModelForm):
             "status",
             "doi_label",
         )
+        widgets = {
+            "start_date": forms.DateInput(attrs={"type": "date"}),
+            "until_date": forms.DateInput(attrs={"type": "date"}),
+        }
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
diff --git a/scipost_django/organizations/forms.py b/scipost_django/organizations/forms.py
index a09fdc7056ffb61fdd01ac4e44307ed1a3df216a..1927081459e5b73317a10d311f7836d315a12f2f 100644
--- a/scipost_django/organizations/forms.py
+++ b/scipost_django/organizations/forms.py
@@ -267,6 +267,10 @@ class ContactRoleForm(forms.ModelForm):
     class Meta:
         model = ContactRole
         fields = "__all__"
+        widgets = {
+            "date_from": forms.DateInput(attrs={"type": "date"}),
+            "date_until": forms.DateInput(attrs={"type": "date"}),
+        }
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
diff --git a/scipost_django/proceedings/forms.py b/scipost_django/proceedings/forms.py
index 0ab15c35344ab4656590d595338c97ea30d85021..9346487554aae6f9dea6e5b147d043b825e27f90 100644
--- a/scipost_django/proceedings/forms.py
+++ b/scipost_django/proceedings/forms.py
@@ -23,3 +23,10 @@ class ProceedingsForm(forms.ModelForm):
             "submissions_close",
             "template_latex_tgz",
         )
+        widgets = {
+            "submissions_open": forms.DateInput(attrs={"type": "date"}),
+            "submissions_deadline": forms.DateInput(attrs={"type": "date"}),
+            "submissions_close": forms.DateInput(attrs={"type": "date"}),
+            "event_start_date": forms.DateInput(attrs={"type": "date"}),
+            "event_end_date": forms.DateInput(attrs={"type": "date"}),
+        }
diff --git a/scipost_django/profiles/forms.py b/scipost_django/profiles/forms.py
index c0fb44e36fce0e0156baee473d57f7707042dfb0..2fc9a9a755c0dd91796ac883d504ce0e4562fe4d 100644
--- a/scipost_django/profiles/forms.py
+++ b/scipost_django/profiles/forms.py
@@ -280,7 +280,8 @@ class AffiliationForm(forms.ModelForm):
             "date_from",
             "date_until",
         ]
-
-    def __init__(self, *args, **kwargs):
-        super().__init__(*args, **kwargs)
-        self.fields["profile"].widget = forms.HiddenInput()
+        widgets = {
+            "profile": forms.HiddenInput(),
+            "date_from": forms.DateInput(attrs={"type": "date"}),
+            "date_until": forms.DateInput(attrs={"type": "date"}),
+        }
diff --git a/scipost_django/scipost/forms.py b/scipost_django/scipost/forms.py
index 6daea1fc8a0711643983eb88c850e148bc874e1b..c224243ae48df54812c702568ac8adb537742197 100644
--- a/scipost_django/scipost/forms.py
+++ b/scipost_django/scipost/forms.py
@@ -605,11 +605,13 @@ class UnavailabilityPeriodForm(forms.ModelForm):
     class Meta:
         model = UnavailabilityPeriod
         fields = ["start", "end"]
+        widgets = {
+            "start": forms.DateInput(attrs={"type": "date"}),
+            "end": forms.DateInput(attrs={"type": "date"}),
+        }
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        self.fields["start"].widget.attrs.update({"placeholder": "YYYY-MM-DD"})
-        self.fields["end"].widget.attrs.update({"placeholder": "YYYY-MM-DD"})
         self.helper = FormHelper()
         self.helper.layout = Layout(
             Div(
diff --git a/scipost_django/submissions/forms/__init__.py b/scipost_django/submissions/forms/__init__.py
index 934925e9fa945fefd14d0b824926f404fd6923d4..3c6276b36e72c6122f1a5cedabffcd435df9f9a6 100644
--- a/scipost_django/submissions/forms/__init__.py
+++ b/scipost_django/submissions/forms/__init__.py
@@ -2200,10 +2200,7 @@ class ConsiderRefereeInvitationForm(forms.Form):
 class SetRefereeingDeadlineForm(forms.Form):
     deadline = forms.DateField(
         label="",
-        widget=forms.SelectDateWidget(
-            years=[timezone.now().year + i for i in range(2)],
-            empty_label=("Year", "Month", "Day"),
-        ),
+        widget=forms.DateInput(attrs={"type": "date"}),
     )
 
     def clean_deadline(self):
diff --git a/scipost_django/theses/forms.py b/scipost_django/theses/forms.py
index d1fc1d8828f6f8a1b4d9f7ac1b62da44a37665ea..bba87be50c4c4cfa81dee7d7530f4b1cd5aa5568 100644
--- a/scipost_django/theses/forms.py
+++ b/scipost_django/theses/forms.py
@@ -35,7 +35,7 @@ class BaseRequestThesisLinkForm(forms.ModelForm):
             "abstract",
         ]
         widgets = {
-            "defense_date": forms.SelectDateWidget(years=past_years(50)),
+            "defense_date": forms.DateInput(attrs={"type": "date"}),
             "pub_link": forms.TextInput(attrs={"placeholder": "Full URL"}),
         }