The `@forward` rule loads a Sass stylesheet and makes its [mixins](/documentation/at-rules/mixin), [functions](/documentation/at-rules/function), and [variables](/documentation/variables) available when your stylesheet is loaded with the [`@use` rule](/documentation/at-rules/use). It makes it possible to organize Sass libraries across many files, while allowing their users to load a single entrypoint file.
The `@forward` rule acts just like `@use` when it comes to a module's CSS. Styles from a forwarded module will be included in the compiled CSS output, and the module with the `@forward` can [extend][] it, even if it isn't also `@use`d.
Because module members are usually used with [a namespace][], short and simple names are usually the most readable option. But those names might not make sense outside the module they're defined in, so `@forward` has the option of adding an extra prefix to all the members it forwards.
This is written `@forward "<url>" as <prefix>-*`, and it adds the given prefix to the beginning of every mixin, function, and variable name forwarded by the module. For example, if the module defines a member named `reset` and it's forwarded `as list-*`, downstream stylesheets will refer to it as `list-reset`.
Sometimes, you don't want to forward *every* member from a module. You may want to keep some members private so that only your package can use them, or you may want to require your users to load some members a different way. You can control exactly which members get forwarded by writing `@forward "<url>" hide <members...>` or `@forward "<url>" show <members...>`.
The `hide` form means that the listed members shouldn't be forwarded, but everything else should. The `show` form means that *only* the named members should be forwarded. In both forms, you list the names of mixins, functions, or variables (including the `$`).
The `@forward` rule can also load a module with [configuration][]. This mostly works the same as it does for `@use`, with one addition: a `@forward` rule's configuration can use the `!default` flag in its configuration. This allows a module to change the defaults of an upstream stylesheet while still allowing downstream stylesheets to override them.