Important
This is an experimental feature. Experimental features and their APIs may change or be removed at any time. To learn more, click here.
A read-only, dict-like object for accessing information about current user.
st.experimental_user is dependant on the host platform running the Streamlit app. If the host platform has not configured the function, it will behave as it does in a locally running app.
Properties can by accessed via key or attribute notation. For example, st.experimental_user["email"] or st.experimental_user.email.
Class description[source] | |
---|---|
st.experimental_user() | |
Methods | |
to_dict() | Get user info as a dictionary. |
Attributes | |
email (str) | If running locally, this property returns the string literal "test@example.com". If running on Streamlit Community Cloud, this property returns one of two values:
|
Examples
The ability to personalize apps for the user viewing the app is a great way to make your app more engaging.
It unlocks a plethora of use-cases for developers, some of which could include: showing additional controls for admins, visualizing a user's Streamlit history, a personalized stock ticker, a chatbot app, and much more. We're excited to see what you build with this feature!
Here's a code snippet that shows extra buttons for admins:
# Show extra buttons for admin users.
ADMIN_USERS = {
'person1@email.com',
'person2@email.com',
'person3@email.com'
}
if st.experimental_user.email in ADMIN_USERS:
display_the_extra_admin_buttons()
display_the_interface_everyone_sees()
Show different content to users based on their email address:
# Show different content based on the user's email address.
if st.experimental_user.email == 'jane@email.com':
display_jane_content()
elif st.experimental_user.email == 'adam@foocorp.io':
display_adam_content()
else:
st.write("Please contact us to get access!")
Greet users with their name that's stored in a database:
# Greet the user by their name.
if st.experimental_user.email:
# Get the user's name from the database.
name = get_name_from_db(st.experimental_user.email)
st.write('Hello, %s!' % name)
Get user info as a dictionary.
This method primarily exists for internal use and is not needed for most cases. st.experimental_user returns an object that inherits from dict by default.
Function signature[source] | |
---|---|
st.experimental_user.to_dict() | |
Returns | |
(Dict[str,str]) | A dictionary of the current user's information. |
Still have questions?
Our forums are full of helpful information and Streamlit experts.