The hoo-hah surrounding the announcement of the Microsoft Loop app at Microsoft’s Fall 2021 Ignite event missed a very important point. Microsoft released Loop (or Live) components in preview for Teams chat (November 30 update: Loop support in Teams chat is now generally available). When I originally wrote about Teams and Live components in July, Microsoft hoped to roll out the feature in mid-August. Perhaps the advent of the Microsoft Loop app delayed matters a tad, but I suspect that Microsoft also had other work to do to make loop/live/fluid components work smoothly in Teams. In any case, Loop components can now be used in chats. That is, if you remember to enable it for your tenant by running PowerShell, connecting to SharePoint Online, and updating the tenant configuration by executing the command:
Set-SPOTenant -IsFluidEnabled $True
Based on what Microsoft said at Ignite, OWA is probably the next app to gain Loop components. Sometime in 2022, we’ll see the Microsoft Loop app and be better able to organize components in workspaces and pages.
Loop Components
Microsoft says that a loop component is an “atomic unit of productivity,” meaning that it’s designed to do one thing without reference to other components. Each component is a container for a type of information. Hence, we end up with the set of components available in Teams chat (Figure 1).
Figure 1: Loop components available in Teams chat
When you create a loop component in Teams chat, its physical representation is a fluid file stored in your OneDrive for Business account. A chat message containing a loop component can’t contain anything else.
When you send the chat message containing a loop component, its fluid file is shared with the chat participants to allow them to edit the content and see updates as they occur. The sharing applied to loop components sent in Teams chat is the default sharing link defined in the SharePoint Online sharing policy for the organization. Obviously, you can edit the sharing link to use whatever permissions you want, subject to the settings in the sharing policy.
The dependency on OneDrive for Business means that guest users participating in a chat cannot create messages containing loop components. However, they can update loop components created and sent by tenant users.
Figure 2 shows three loop components, each in its own Teams chat message:
Paragraph: a text box with some basic formatting capabilities (headings, bold, underline, strikethrough, bulleted list, numbered list. Insert web link). You can also paste graphics and add emojis, so life is good.
To do list.
Table.
Anyone used to Microsoft Office editors will be at home with inputting text into Loop components.
Figure 3: Three loop components in Teams chat messages
You can read and edit loop components in the Teams mobile client (iOS and Android). A small delay happens the first time you access a component, but afterwards the interaction is smooth (Figure 3).
Figure 3: Editing a loop component using Teams for iOS
Nested Loops
Another interesting aspects of loo[p components is that they can be nested. Type the slash key (/) when composing a loop and a pop-out menu appears (Figure 4) to allow you to choose a loop component to insert. You can insert as many loops a you like, with the exception being that it doesn’t seem like you can insert a paragraph inside another loop.
Figure 4: Nested Loops
Fluid Files in OneDrive
The fluid files (the containers used by Loop components) for Teams chats are in the Microsoft Teams Chat Files folder of the author’s OneDrive for Business account (Figure 5). When Loop components become more generally available in Teams and other Microsoft 365 apps, I anticipate that personal fluid files will remain in OneDrive (albeit in different folders, such as one used for components in messages sent by OWA) while shared components (like those in Teams channel messages) will be in SharePoint Online.
Figure 5: Fluid files for loop components stored in OneDrive for Business
The synchronization used to make updates available to everyone with access to a loop component is like the autosave mechanism used by Office apps, but much faster. Possibly this is because synchronization occurs more often (as each character is typed) and process smaller amounts of data in each transaction.
Nested loops exist inside the host fluid file. Separate fluid files are not created for each of the components nested inside a loop.
Preview Users Only
Users must be in preview (have a P shown at the top right-hand of their user photo) and use a desktop or mobile client. If not, they’ll see that a live component is in a chat but won’t see its content (Figure 6).
Figure 6: A live (loop) component is in a chat, but its content is invisible
The user can click the link to access a read-only version of the content in a browser. The good news is that changes made by other users continue to synchronize to the browser to allow the user to see updates and who’s making the changes (Figure 7).
Figure 7: Viewing a read-only (but updating) copy of a loop component
The browser interface is also invoked if you click on a fluid file in OneDrive. However, in this case, you can edit the component content.
Compliance Issues
When a user includes a loop component in Teams chat, the substrate generates a compliance record in the user’s Exchange Online mailbox. Unfortunately, the compliance record contains no content from the loop component. Instead, it’s just a pointer to the .fluid file stored in the user’s OneDrive for Business account. Microsoft Search does index these files, so they are included in results generated by content searches. I’ve updated my note about the difficulties involved in Teams backup to include this information.
Usable Preview
Loop components in Teams chat is a preview. As Teams is the first mainline application to incorporate loop components, you can expect to run into some glitches. However, the quality of the implementation is much improved over what I experienced after Microsoft originally announced Fluid components for Teams.
Insight like this doesn’t come easily. You’ve got to know the technology and understand how to look behind the scenes. Benefit from the knowledge and experience of the Office 365 for IT Pros team by subscribing to the best eBook covering Office 365 and the wider Microsoft 365 ecosystem.
{"id":null,"mode":"button","open_style":"in_modal","currency_code":"EUR","currency_symbol":"\u20ac","currency_type":"decimal","blank_flag_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":100,"top_media_type":"featured_image","featured_image_url":"https:\/\/office365itpros.com\/wp-content\/uploads\/2022\/11\/cover-141x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Virtual Tip Jar","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Office 365 for IT Pros","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Office 365 for IT Pros","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for supporting the work of Office 365 for IT Pros!","payment_confirmation_title":"Office 365 for IT Pros","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
Please complete this sentence: “Loop components are the answer for users seeking … “
“…a voyage into a brave new world of ever-updating content…”
I would use the tasks list live component if it was available in OneNote. If these tasks would be stored in planner, this would be great…
There is a chance that Loop components will come to OneNote. It all depends on Microsoft…