diff --git a/frame/support/procedural/src/lib.rs b/frame/support/procedural/src/lib.rs
index ccff5488c93be..67d0103a6a8d4 100644
--- a/frame/support/procedural/src/lib.rs
+++ b/frame/support/procedural/src/lib.rs
@@ -445,6 +445,20 @@ pub fn construct_runtime(input: TokenStream) -> TokenStream {
 /// pallet. Otherwise it implements `StorageInfoTrait` for the pallet using the
 /// `PartialStorageInfoTrait` implementation of storages.
 ///
+/// ## Dev Mode (`#[pallet::pallet(dev_mode)]`)
+///
+/// Specifying the argument `dev_mode` will allow you to enable dev mode for a pallet. The aim
+/// of dev mode is to loosen some of the restrictions and requirements placed on production
+/// pallets for easy tinkering and development. Dev mode pallets should not be used in
+/// production. Enabling dev mode has the following effects:
+///
+/// * Weights no longer need to be specified on every `#[pallet::call]` declaration. By default, dev
+///   mode pallets will assume a weight of zero (`0`) if a weight is not specified. This is
+///   equivalent to specifying `#[weight(0)]` on all calls that do not specify a weight.
+/// * All storages are marked as unbounded, meaning you do not need to implement `MaxEncodedLen` on
+///   storage types. This is equivalent to specifying `#[pallet::unbounded]` on all storage type
+///   definitions.
+///
 /// See `frame_support::pallet` docs for more info.
 #[proc_macro_attribute]
 pub fn pallet(attr: TokenStream, item: TokenStream) -> TokenStream {
diff --git a/frame/support/src/lib.rs b/frame/support/src/lib.rs
index 9b0ee84c34d8a..1e1a41710d01a 100644
--- a/frame/support/src/lib.rs
+++ b/frame/support/src/lib.rs
@@ -1487,6 +1487,21 @@ pub mod pallet_prelude {
 /// non-instantiable pallets. For an example of an instantiable pallet, see [this
 /// example](#example-of-an-instantiable-pallet).
 ///
+/// # Dev Mode (`#[pallet::pallet(dev_mode)]`)
+///
+/// Specifying the argument `dev_mode` will allow you to enable dev mode for a pallet. The aim
+/// of dev mode is to loosen some of the restrictions and requirements placed on production
+/// pallets for easy tinkering and development. Dev mode pallets should not be used in
+/// production. Enabling dev mode has the following effects:
+///
+/// * Weights no longer need to be specified on every `#[pallet::call]` declaration. By
+///   default, dev mode pallets will assume a weight of zero (`0`) if a weight is not
+///   specified. This is equivalent to specifying `#[weight(0)]` on all calls that do not
+///   specify a weight.
+/// * All storages are marked as unbounded, meaning you do not need to implement
+///   `MaxEncodedLen` on storage types. This is equivalent to specifying `#[pallet::unbounded]`
+///   on all storage type definitions.
+///
 /// # Pallet struct placeholder: `#[pallet::pallet]` (mandatory)
 ///
 /// The pallet struct placeholder `#[pallet::pallet]` is mandatory and allows you to specify